「god」で node.js サーバーを実行するための最小限の構成ファイルを次に示します。
APP_ROOT = "/home/sphynx/app" # application root
God.pid_file_directory = "#{APP_ROOT}/pids" # directory to store PID files
God.watch do |w|
w.name = "chapayev"
w.interval = 5.seconds # default
w.start = "env node #{APP_ROOT}/server.js" # path to node.js server file
w.stop = "env killall node" # stopping node explicitly
w.start_grace = 10.seconds
w.restart_grace = 10.seconds
w.log = "#{APP_ROOT}/log/chapayev.log" # to enable logging
w.start_if do |start| # start if condition is met
start.condition(:process_running) do |c| # check if process is running
c.interval = 5.seconds
c.running = false
end
end
end
node.js がまだ開始されていない場合は自動的に開始され、内部の「god」デーモン化手段が使用されます。
監視対象プロセスを開始する条件を定義する「start_if」部分が設定に含まれていることを確認してください。ここには、プロセスが実行されていない場合に開始する条件があります。まさに必要なものです!
「sudo」権限について: God config の「start」コマンドに sudo を含める必要はないと思います。むしろ、sudo "god" 自体で呼び出すこともできます。そうすれば、監視対象のプロセスも sudo で実行されます。たとえば、次のコマンドで「神」構成をテストしています。
sudo god -c conf/chapayev.god -D
(すべての設定ミスをすぐに確認するためにコンソールに出力を表示するための -D)
詳細については、この投稿をご覧ください:
http://blog.acmarques.com/deploying_node_with_nginx_and_god