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监视的进程,只需使用上面指定的
uid
(foo
)调用以下内容:
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 -w
与nodemon
: forever
不会有–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