現在、god を使用して、合計 3 つの Rails/Rack アプリケーションのさまざまなプロセス/デーモンを監視しようとしています。監視はうまく機能しますが、問題は、再起動後にすべてのプロセスを自動開始するように神を構成できないことです。
私のセットアップ: Centos と Plesk で Linux VPS を実行しています。3 つの Rails/Rack アプリケーションをデプロイおよび実行するために使用される非ルート Linux ユーザー「デプロイヤー」がいます。2 つのアプリケーションはパッセンジャー Apache モジュールで実行され、3 番目のアプリケーションはシン サーバーを使用します (アプリケーションは Apache で動作しないため、これが必要です)。パッセンジャーを使用している 2 つの Rails アプリケーションには、バックグラウンドで実行される追加の rake タスクがあります。これらとシン サーバーは神によって監視されています。
god gem は、3 つのアプリケーションすべての Gem ファイルで指定されています。
すべての deploy.rb ファイルには、次のようなメソッドがあります
namespace :misc do
desc "restart woekers using gog; restart webserver"
task :restart, roles: [:web, :resque] do
run "touch #{current_path}/tmp/restart.txt"
god.all.start
god.all.reload
god.all.terminate
god.all.start
end
end
サーバーの再起動後、3 つのアプリケーションすべてに対して cap misc:restart を手動で実行すると、すべてのプロセスが起動され、正しく監視されます。
これまでのところ、起動時に神を自動的に起動し、必要なすべてのプロセスを起動しようとするたびに失敗しました。いろいろ試してみましたが、何もうまくいきませんでした。これまでの私のアプローチは、次のスクリプトのうち 3 つを実行する @reboot を使用して cron タスクを作成することでした。
#!/bin/bash -l
cd /path/to/app/ && bundle exec god -c /path/to/app/config/god/resque.god && bundle exec god load /path/to/app/config/god/resque.god && bundle exec god start resque
これは最初のアプリケーションに最適です: 神とすべてのプロセスが開始されます. スクリプトが 2 番目のアプリケーションに対して実行されると (もちろん、正しいパスを使用して)、神はタスクを開始できません。神へのログインを有効にしましたが、エラー メッセージ (ラック アプリケーションの場合) は「thin: command not found」でした。最初に Rack アプリケーションを起動すると、thin が正しく起動され、他のタスクのコマンドが見つかりません。
構成の何が問題なのかわかりません。上記のように、神の呼び出しの前に bundle exec コマンドを追加しました (したがって、コマンドはそれぞれのアプリケーションの環境で実行する必要があります) - それでも、機能しません。
神を自動的に起動させるのを手伝ってくれる人がいれば、本当に感謝しています。
さらに詳しい情報が必要な場合は、お気軽にお問い合わせください。
前もって感謝します!