web-dev-qa-db-ja.com

Forever + Nodemonが一緒に実行されています

このパッケージの両方を一緒に実行する方法はありますか?

だから基本的に私は両方の世界から最高のものを持ちたいです。サーバーの自動実行(およびエラーが発生した場合の再起動)、および.jsファイルの変更が発生した場合の自動更新。

46
Patrik Fuhrmann

Toxaは正しい軌道に乗っていました。 cfogelbergが発生しました という問題は有効ですが、その問題を回避するために以下を行うことができます。

forever -c "nodemon --exitcrash" app.js

これにより、nodemonが実際に終了し(「アプリがクラッシュしました」というメッセージを表示するのではなく)、foreverが再びそれを取得します。

forever --help この -cは、実行するコマンドを指定します。指定しない場合は、デフォルトのノードです。 -cを指定しないと、この回答のコメントに記載されているエラーが発生します。

45
Jubair

このようなものを実行する必要があります

forever start -c nodemon app.coffee
63
Anton Borodatov

それに関するエントリが nodemon FAQ にあります:

Nodemonを forever (おそらく運用環境で)で使用している場合、2つを組み合わせることができます。この方法では、スクリプトがクラッシュした場合、スクリプトが永久に再起動され、ファイルの変更がある場合、nodemonはスクリプトを再起動します。詳細については、 issue をご覧ください。

これを実現するには、foreverの呼び出しに次を追加する必要があります。

  • 永遠に-c nodemonオプションを使用して、nodemonの代わりにnodeを実行するように永久に指示します。
  • Nodemon --exitcrashフラグを含めて、スクリプトがクラッシュした場合(または予期せずに終了した場合)にnodemonが終了するようにします。
  • Nodemonの停止を要求するときに、SIGTERMの代わりにSIGKILLを使用するように永久に指示します。これにより、nodemonが監視対象ノードプロセスを完全に停止できるようになります。
  • オプションで、--uidパラメーターを追加し、プロセスに一意の名前を追加します。この例では、uidはfooに設定されています。

bash forever start --uid foo --killSignal=SIGTERM -c nodemon --exitcrash server.js

これをテストするには、server.jsプロセスを強制終了し、永久に再起動します。 touch server.jsの場合、nodemonは再起動します。

Foreverとnodemonによって監視されているプロセスを停止するには、上記で割り当てたuidfoo)を使用して、次を呼び出します。

bash forever stop foo

これにより、nodemonとそれが監視していたノードプロセスの両方が停止します。

は実稼働環境でnodemonを使用することを推奨しません

14
mik01aj

両方のパッケージを一緒に実行する方法を見つけていません。 @toxaのテクニックを実行しようとしましたが、node.jsアプリが例外をスローすると、nodemonは自動的に再起動せず、代わりにエラーログをforeverログに出力しました。

nodemon] app crashed - waiting for file changes before starting...

ただし、foreverには-wオプションがあり、次のコマンドはnodemonとforeverを一緒に実行している場合と実質的に同じです。

forever start -w my-app.js

forever -wnodemonの欠点:foreverには--delayオプションがないため、変更されたファイルごとにサーバーが再起動されます。

10
cfogelberg

ToxaとJubairが提案するコンボを好む。

forever start -c nodemon app.coffee --exitcrash
5
bcbrian

引数を渡す必要がある場合:

forever start -c "nodemon --harmony" app.js --exitcrash
2
Karl Morrison

forever-service を使用しています。 。 。

これは私のために働いたものです。アプリケーションのdist/assetsフォルダー内のjsonまたはramlファイルが変更されるたびに、10秒待機してからノードアプリ(server.jsスクリプト)を再起動します。

$ forever-service install raml --script server.js -f " -c nodemon" -o " --delay 10 --watch dist/assets -e json,raml --exitcrash" -e "PATH=/usr/local/bin:$PATH"

その後、私は実行できます:

$ service raml start|stop|restart|status

Chkconfigユーティリティを使用して、サーバーの再起動時にサービスを開始することもできます。

$ chkconfig --add raml
$ chkconfig raml on
1