Forever + Nodemon一起运行

有没有办法让这两个包一起运行?

所以基本上我想两全其美。 自动运行服务器(并在出现错误时重新启动),并且在发生.js文件更改时自动更新。

你应该像这样运行

forever start -c nodemon app.coffee 

Toxa在正确的轨道上, cfogelberg提出的问题是有效的,但为了避免这个问题,你可以做到以下几点:

 forever -c nodemon --exitcrash app.js 

这确保nodemon实际上退出(而不是给你“应用程序崩溃”的消息),然后forever拿起它。

forever --help这个-c指定一个命令运行,否则它默认节点。 没有-c导致在这个答案的评论中提到的错误。

nodemon FAQ中有一个关于它的条目:

如果你永远使用nodemon(也许在生产环境中),你可以把两者结合在一起。 这样,如果脚本崩溃,永远重新启动脚本,并且如果有文件更改,nodemon将重新启动脚本。 有关更多详细信息,请参阅问题30 。

为了达到这个目标,你需要在呼叫中join以下内容:

  • 使用永远的-c nodemon选项永远告诉运行nodemon而不是node
  • 如果脚本崩溃(或意外退出),请包含nodemon --exitcrash标志以确保nodemon退出。
  • 当请求nodemon停止时,请永远使用SIGTERM而不是SIGKILL 。 这确保nodemon可以干净地停止观看的节点进程。
  • 可以select添加--uid参数,为stream程添加一个唯一的名称。 在这个例子中,uid被设置为foo

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

为了testing这个,你可以杀掉server.js进程并永远重启。 如果touch server.js nodemon将重新启动它。

要停止永久和nodemon监视的进程,只需使用上面指定的uidfoo )调用以下内容:

bash forever stop foo

这将停止nodemon和它正在监视的节点进程。

请注意,我build议在生产环境中使用nodemon – 但这是因为如果没有我的明确指示,我不希望它重新启动。

我还没有find让两个软件包一起运行的方法。 我试图做@ toxa的技术,但是当我的node.js应用程序抛出一个exceptionnodemon不会自动重新启动它,而是输出一个错误消息到永远日志:

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

然而,永远有一个-w选项,下面的命令和我运行nodemon并永远在一起的效果是一样的:

 forever start -w my-app.js 

forever -wnodemonforever不会有–delay选项的缺点,所以我的服务器重新启动一次每个文件被更改。

我更喜欢Toxa和Jubairbuild议的组合。

 forever start -c nodemon app.coffee --exitcrash 

如果你需要传递参数:

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

我使用永远服务 。 。 。

这是为我工作。 它执行以下操作:每次修改应用程序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 
Interesting Posts