Forever.js 启动和重新启动多个脚本

2024-04-18

我的 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 运行forever.js 脚本。我不确定这是否正确,还有一个forever.startDaemon,所以不确定我应该使用哪一个。

forever start forever.js

这可行,但问题是我想在发布新版本的应用程序时重新启动所有进程。我第一次使用 git 的 post-receive hook 来运行forever.js,但是如果我在每次 post-receive 上都这样做,那么每次只会生成 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 进程。


我认为最好的方法是:

forever start website.js
forever start feeds.js
forever start jobs.js

然后在你的 git post-receive 挂钩中:

forever restart website.js
forever restart feeds.js
forever restart jobs.js

将这些节点进程包装在单个进程中并不是一个好主意。我现在个人使用Supervisord 与 monit http://blog.fgribreau.com/2012/03/process-management-at-bringr.html而不是永远(恕我直言,supervisord 比永远更稳定、更强大)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Forever.js 启动和重新启动多个脚本 的相关文章

随机推荐