NodeJS和Forever(监控并重启应用)

时间:2013-03-26 14:39:48

标签: node.js monitor forever

我正在尝试设置foreverNodeJS以监控并重新启动我的应用,并在退出时继续运行。目前我有这个:

var forever = require("forever-monitor");

var child = new(forever.Monitor)('main.js', {
    'silent': false,
    'pidFile': '../pids/app.pid',
    'sourceDir': '.',
    'watch': true,
    'watchDirectory': '.',
    'watchIgnoreDotFiles': null,
    'watchIgnorePatterns': null,
    'logFile': '../logs/forever.log',
    'outFile': '../logs/forever.out',
    'errFile': '../logs/forever.err'
});

child.start();

哪个启动我的应用程序就好了但是当我在文件中进行更改时它不会重新启动它。我有什么选择吗?

编辑: 在深入研究问题后,我发现实际检测到文件更改,只是该进程未重新启动。 我正在看~~ 317行 - Monitor.prototype.kill(在monitor.js中),但看起来它应该可以工作。

编辑: 我设法解决了这个问题。这是图书馆代码中的一个错误。点击此处:https://github.com/nodejitsu/forever-monitor/issues/27

2 个答案:

答案 0 :(得分:2)

nodemon和永远都是一直难以运行的痛苦。我会首先尝试使用shell脚本。如果您使用的是Linux,只需将monitornode文件放在/etc/cron.d

*/1 * * * * root  /var/www/nodejs/monitornode.sh

并在您的计算机上的某个位置添加脚本

如果你开始尝试这个,创建一个文件/var/www/nodejs/monitornode.sh和chmod + x:

#!/bin/sh

TT_NODE="node /var/www/nodejs/node.js"

# NODEJS Watcher
if [ -z `pgrep -f -x "$TT_NODE"` ] 
then
    echo "Starting $TT_NODE."
    cmdNODE="$TT_NODE >> /var/www/logs/node.log &"
    eval $cmdNODE
fi

答案 1 :(得分:0)

查看nodemon包以执行整个“重新加载文件更改”的事情。