我创建了一个 Upstart 脚本来守护主宰(一个 node.js 应用程序)
Upstart 脚本如下
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 运行 Node (以便我可以使用 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 不允许我启动程序 = " sudo /sbin/start juggernaut"
一旦我杀死了 juggernaut( Node ),那么 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 命令?
最佳答案
我认为您应该使用专用用户运行 nodeJS,然后从启动脚本中删除“exec sudo”,并直接告诉 monit 您想使用哪个用户。
关于Node.js (sudo) 和 monit,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4892764/