このパッケージの両方を一緒に実行する方法はありますか?
だから基本的に私は両方の世界から最高のものを持ちたいです。サーバーの自動実行(およびエラーが発生した場合の再起動)、および.jsファイルの変更が発生した場合の自動更新。
Toxaは正しい軌道に乗っていました。 cfogelbergが発生しました という問題は有効ですが、その問題を回避するために以下を行うことができます。
forever -c "nodemon --exitcrash" app.js
これにより、nodemon
が実際に終了し(「アプリがクラッシュしました」というメッセージを表示するのではなく)、forever
が再びそれを取得します。
forever --help
この -c
は、実行するコマンドを指定します。指定しない場合は、デフォルトのノードです。 -cを指定しないと、この回答のコメントに記載されているエラーが発生します。
このようなものを実行する必要があります
forever start -c nodemon app.coffee
それに関するエントリが 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によって監視されているプロセスを停止するには、上記で割り当てた
uid
(foo
)を使用して、次を呼び出します。
bash forever stop foo
これにより、nodemonとそれが監視していたノードプロセスの両方が停止します。
私は実稼働環境でnodemonを使用することを推奨しません。
両方のパッケージを一緒に実行する方法を見つけていません。 @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 -w
対nodemon
の欠点:forever
には--delayオプションがないため、変更されたファイルごとにサーバーが再起動されます。
ToxaとJubairが提案するコンボを好む。
forever start -c nodemon app.coffee --exitcrash
引数を渡す必要がある場合:
forever start -c "nodemon --harmony" app.js --exitcrash
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