7

何時間も試した後(そして神とブルーピルも試した後)、この問題を解決する方法がまったくわからないので、ここで質問することにしました。

Railsアプリを持っています。Thinをアプリサーバーとして使用したい。Monitを使用してThinインスタンスを監視したいと思います。RVMを使用して、Rubyバージョンをローカルユーザーとして管理しています。

次のmonitファイルを設定しました。これは、おそらく私がやりたいことを実行しますが、実行しません。

check process thin-81
  with pidfile /Users/Michael/Desktop/myapp/tmp/pids/thin.81.pid

  start program = "/Users/Michael/.rvm/gems/ruby-1.9.2-p180/bin/thin start -c /Users/Michael/Desktop/myapp -e production -p 81 -d -P tmp/pids/thin.81.pid"
  stop program = "/Users/Michael/.rvm/gems/ruby-1.9.2-p180/bin/thin stop -c /Users/Michael/Desktop/myapp -P tmp/pids/thin.81.pid"

  if totalmem is greater than 150.0 MB for 2 cycles then restart

単にstart programコマンドライン(Monitの外)にコピー/貼り付けすると、機能します。stop program後でThinインスタンスを停止する場合も同様です。ただし、Monitを介して実行すると、機能しないようです。

-v詳細モードで実行すると、次のようになります。

monit: pidfile '/Users/Michael/Desktop/myapp/tmp/pids/thin.81.pid' does not exist

これは、Thinが初期化されないことを私に信じさせます。Monitはroot何かとして実行されますか?もしそうなら、私は「システム」RubyではなくRVMを使用しているので、明らかに正しいgemがインストールされていません。私は現在OSXを使用しています(ただし、最終的にはLinuxにデプロイする予定です)-これの原因が何であるかを誰かが知っていますか?また、Monitがroot経由で実行されている場合、どうすればRVMを使用させることができますか?または、Monitに開始/停止プログラムを実行するように指示することもできますMichael:staff(OSX上にあると思いますか?)

どんな助けでも大歓迎です!

4

3 に答える 3

11

monitは環境をクリアし、コマンドのシェルも実行しません(インタラクティブなシェルは言うまでもありません)。私は次のようなことをしなければならないことがわかりました:

/usr/bin/bash -c 'export rvm_path=/home/foo/.rvm; . $rvm_path/scripts/rvm; cd my_ruby_app_path; $rvm_path/bin/rvm rvmrc load; ./my_ruby_app'

monitstartコマンドとして。

于 2011-05-24T23:27:12.227 に答える
7

私がRVMグーグルグループで見つけた別のオプションは次のとおりです。

start program = "/bin/su - myuser -c '/path/to/myscript.rb start' " 

su-ユーザーはユーザーのシェルをログインシェルとして実行するため、ユーザーのシェルがbashの場合、〜/ .bash_profileが実行されるため、環境変数はそのユーザーがログインした直後と同じである必要があります。

suのパスが必要です。そうしないと、monitrcはsu実行可能ファイルを見つけることができません。

于 2011-11-22T19:48:50.460 に答える
4

より良い方法は、RVMラッパーを使用してシン用のカスタム実行可能ファイルを作成することです。適切なルビーと宝石を使用するための正しい環境変数を作成してから、thinを起動します。ここで神と一緒にそれを使用してそれについてもっと読んでください:https ://rvm.io/integration/god/ 。monitでも同じように機能するはずです

ラッパーを作成するには: rvm wrapper ruby@gemset bootup thin

次に、作成した実行可能ファイルを変更start programして使用します。stop program

于 2011-08-20T07:16:54.553 に答える