我的web應用程序有3個主要node.js組件:網站,訂閱源和作業。Forever.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.startDaemon所以不知道我應該使用哪一個。
forever start forever.js
這可行,但問題是,我想重新啓動我的應用程序的新版本發佈時的所有進程。我使用git的post-receive hook第一次運行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的post-receive鉤子上啓動/重啓3個node.js進程。
可你只要運行的package.json'永遠重啓forever.js'?我會想象會殺死孩子的腳本,但如果沒有,那麼假設你沒有運行其他具有相同永久實例的項目,那麼就執行'forever stopall'。 – 2012-04-09 15:53:21