2011-02-03 89 views
3

我曾为了守护进程剑圣(使Node.js应用程序)创建了一个暴发户脚本 新贵脚本如下的Node.js(须藤)和monit的

description "juggernaut server" 
author  "panojsee" 

start on startup 
stop on shutdown 

script 
    # We found $HOME is needed. Without it, we ran into problems 
    #export HOME="/home/ubuntu/src/juggernaut" 
    chdir /home/ubuntu/src/juggernaut 
    exec sudo /usr/bin/node server.js 2>&1 >> /var/log/node.log 
end script 

正如你可以看到我想要使用sudo运行节点(以便我可以使用Flash套接字)。 我monit的脚本如下:

集日志文件/var/log/monit.log

check host juggernaut with address 127.0.0.1 
    start program = "/sbin/start juggernaut" 
    stop program = "/sbin/stop juggernaut" 
    if failed port 8080 protocol HTTP 
     request/
     with timeout 10 seconds 
     then restart 

monit的不允许我有启动程序= “须藤/sbin目录/开始主宰” 一旦我杀死了juggernaut(节点),那么monit会尝试重新启动它,但会死于以下消息。

[UTC Feb 3 22:48:25] error : 'nodejs' failed, cannot open a connection to INET[127.0.0.1:8080] via TCP 
[UTC Feb 3 22:48:25] info  : 'nodejs' trying to restart 
[UTC Feb 3 22:48:25] info  : 'nodejs' stop: sudo 
[UTC Feb 3 22:48:25] error : Error: Could not execute sudo 
[UTC Feb 3 22:48:25] info  : 'nodejs' start: sudo 

任何线索如何告诉monit执行sudo命令?

回答

2

只需使用sudo开始monit的,当然增加的monit到sudoers文件

1

检查用户monit运行的是什么。该用户是否配置为运行sudo?请检查sudo是否报告了任何错误(可能位于/var/log/messages)。我发现this answer对于计算监控行为非常有帮助。

3

我想你应该运行专用用户的NodeJS然后从启动脚本中删除“EXEC sudo的”,并告诉monit的直接,你想哪个用户使用。

启动程序= “/ sbin目录/开始主宰” 作为UID用户ID