起動時に実行する必要があるnode.jsプログラム用のかなり単純な起動スクリプトを作成しました。
start on startup
stop on shutdown
script
exec Sudo -u max WEBSITES_DIR=/home/max/websites/ /usr/local/bin/node /home/max/websites/server.js 2>&1 >> /var/log/node.log
end script
私が使用する場合:
Sudo start my-program
動作しますが、マシンを再起動すると、次のエラーメッセージが表示されます。
init: my-program main process (325) terminated with status 2
これをデバッグする方法について誰かアイデアはありますか?
startup
イベントは、Upstartブートアッププロセスで発行される最初のイベントです。まだ起こっていないことはいろいろあります-ルートファイルシステムはまだ読み取り専用でマウントされている、ネットワークは初期化されていないなどです。
すべての依存関係(明示的または暗黙的)がまだ初期化されていないため、ジョブがすぐに終了していると思われます。開始条件を次のように変更します
start on filesystem and started networking
少なくとも、ログファイルに書き込むことができるようになります。
ちなみに、出力リダイレクト引数を逆にしたようです。実際には>> /var/log/node.log 2>&1
を意味していました。 2>&1
を使用するということは、「現在fd 1であるものをすべて取得し、fd 2を同じものにする」ことを意味しますが、stdoutがまだ変更されていません。
HiMax、
Ubuntuサーバーのスタートアップnode.js
more /etc/init/noded.conf
/etc/init/noded.conf
にあるUbuntuアップスタートファイル:
description "noded.conf"
author "ntbinh"
start on runlevel [2345]
stop on runlevel [06]
respawn
script
su - ubuntu -c "NODE_ENV=test exec Sudo /etc/init.d/noded start"
end script
あなたはすでに/etc/init.d/noded
を持っています。 /etc/init/noded.conf
==>起動起動を編集できます。
# Ubuntu upstart file at `/etc/init/noded.conf`
description "noded.conf"
author "ntbinh"
respawn
start on runlevel [2345]
stop on runlevel [06]
script
su - ubuntu -c "NODE_ENV=test exec Sudo /usr/bin/Nohup /usr/bin/node /home/ubuntu/server.js" >> /home/ubuntu/log.log
end script