私のWebアプリには、Webサイト、フィード、ジョブの3つの主要なnode.jsコンポーネントがあります。
これらを開始するために、私は永遠に使用しています:
//forever.js
var forever = require('forever');
function start(name){
forever.start( ['coffee', name + '.coffee'], { /* log options */ } )
};
start('website');
start('feeds');
start('jobs');
私が最初に気付いたのは、スクリプトを実行するとデーモンとして実行されないということです。(これはおそらく正常です)
node forever.js
それで、次に私がしたことは、forever.jsスクリプトをforeverで実行することでした。これが正しいかどうかはわかりませんが、forever.startDaemonもあるので、どちらを使用すればよいかわかりません。
forever start forever.js
これは機能しますが、問題は、アプリの新しいバージョンが公開されたときにすべてのプロセスを再開したいということです。gitのpost-receiveフックを使用してforever.jsを初めて実行していますが、post-recieveごとにこれを実行すると、毎回3つのプロセスが生成されます。
したがって、3つのプロセスがすでに実行されている場合は、それらを再起動する方法が必要だと思います。私はforever.listでこれを行うことを考えましたが、ドキュメントには次のようにしか書かれていません。
forever.list (format, callback)
Returns a list of metadata objects about each process that is being run using
forever. This method is synchronous and will return the list of metadata as such.
Only processes which have invoked forever.startServer() will be available from
forever.list()
まず第一に、フォーマットが何を意味するのかわかりません。第二に、それはコールバックを期待しますが、それからそれはその同期を言います。これは少し紛らわしいですし、リストの使い方がわかりません。
結局、私がやりたいのは、gitの受信後フックで3つのnode.jsプロセスを開始/再起動することだけです。