無料利用枠のAmazonEC2インスタンスで、Expressで実行される単純なnode.js HelloWorldアプリをセットアップしました。
npm start
を実行すると、アプリは正常に実行され、ブラウザーからヒットできます。次の出力が表示されます。
> [email protected] start /home/ec2-user/app
> node ./bin/www
Foreverツールをグローバルにインストールしました。 forever start app.js
を実行すると、次のように表示されます。
warn: --minUptime not set. Defaulting to: 1000ms
warn: --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
info: Forever processing file: app/app.js
ただし、forever list
を確認すると、プロセスが停止していることがわかります。
info: Forever processes running
data: uid command script forever pid id logfile uptime
data: [0] 2v0J /usr/local/bin/node app.js 2455 2457 /home/ec2-user/.forever/2v0J.log STOPPED
これはログ内の唯一のメッセージです:error: Forever detected script was killed by signal: null
他のログ情報が見つかりません。なぜすぐに停止し続けるのですか?
編集:Nohup forever start app.js
として実行しようとしましたが、同じ問題が発生しました。 forever start
とforever list
を同じsshセッションで次々に実行しています。アプリのプロセスはすぐに停止するようです。
同様の質問に対するこの回答のおかげで、問題を解決することができました: https://stackoverflow.com/a/24914916/1791634
App.jsを渡す代わりにforever start ./bin/www
を使用した場合、プロセスは実行され続けました
これが今後問題を引き起こすかどうかはまだ分からない。
Sshから切断した後、プロセスが停止すると思いますか?
最初にNohup
を使用して永久に実行してみてください。
Nohup forever start app.js
Sshから切断すると、サーバーはシェルのすべての子プロセスを強制終了します。 Nohup
は、プロセスをその親シェルから切断します。
私にとっては、「Sudoforever」を使用する必要がありました。