42

私はユニコーンを監視するための神のスクリプトに取り組んでいます。GitHub のサンプル スクリプトから始めて、サーバー構成に合わせて変更しています。God が実行されると、 や などのコマンドはgod stop unicorn正常にgod restart unicorn機能します。

ただし、god start unicorn結果はWARN: unicorn start command exited with non-zero code = 1. 奇妙な点は、起動スクリプトを構成ファイルから直接コピーすると、新品のムスタングのように起動することです。

これは私の開始コマンドです:

/usr/local/bin/unicorn_rails -c /home/my-linux-user/my-rails-app/config/unicorn.rb -E production -D

構成ファイルですべてのパスを絶対パスとして宣言しました。このスクリプトの動作を妨げている可能性のあるアイデアはありますか?

4

3 に答える 3

14

アプリ サーバーとして unicorn を使用したことはありませんが、監視には God を使用したことがあります。

God を起動して構成ファイルを指定したときの記憶が正しければ、監視するように指示したものは何でも自動的に起動します。Unicorn はおそらく既に実行されているため、エラーがスローされます。

god status神を起動したら、実行してこれを確認してください。そうでない場合は、コマンドラインでコマンドの終了ステータスを確認できます。

/usr/local/bin/unicorn_rails -c /home/my-linux-user/my-rails-app/config/unicorn.rb -E production -D; echo $?;

そのエコーは、最後のコマンドの終了ステータスを出力します。ゼロの場合、最後のコマンドはエラーを報告しませんでした。unicorn を 2 回続けて起動してみてください。既に実行されているため、2 回目は 1 が返されると思います。

編集:

これは一般的な応答のように見えるため、コメントからの実際のソリューションを含めます。

プロセスを特定のユーザーとして実行する必要がある場合は、明示的なユーザーとグループを設定できます。

God.watch do |w|
  w.uid = 'root'
  w.gid = 'root'

  # remainder of config
end
于 2010-10-07T02:29:46.330 に答える
0

ログオプションを追加すると、デバッグに大いに役立ちました。

God.watch do |w|
  w.log = "#{RAILS_ROOT}/log/god.log"

  # remainder of config
end

start_script結局、私のバグは神がdevelopment環境で実行されたことが判明しました。RAILS_ENVを開始スクリプトに追加することでこれを修正しました。

start_script = "RAILS_ENV=#{ENV['RACK_ENV']} bundle exec sidekiq -P #{pid_file} -C #{config_file} -L #{log_file} -d"
于 2016-05-30T09:25:55.467 に答える