web-dev-qa-db-ja.com

node.jsプログラムのupstartスクリプトを起動時に開始することができません

起動時に実行する必要がある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

これをデバッグする方法について誰かアイデアはありますか?

6
Max

startupイベントは、Upstartブートアッププロセスで発行される最初のイベントです。まだ起こっていないことはいろいろあります-ルートファイルシステムはまだ読み取り専用でマウントされている、ネットワークは初期化されていないなどです。

すべての依存関係(明示的または暗黙的)がまだ初期化されていないため、ジョブがすぐに終了していると思われます。開始条件を次のように変更します

start on filesystem and started networking

少なくとも、ログファイルに書き込むことができるようになります。

ちなみに、出力リダイレクト引数を逆にしたようです。実際には>> /var/log/node.log 2>&1を意味していました。 2>&1を使用するということは、「現在fd 1であるものをすべて取得し、fd 2を同じものにする」ことを意味しますが、stdoutがまだ変更されていません。

12
Evan Broder

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
0