I have created an upstart script in order to daemonize juggernaut (a node.js app) The upstart script is the following
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
As you can see I want to run node with sudo (so that I can use Flash sockets). My monit script is the following:
set logfile /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 does not allow me to have start program = "sudo /sbin/start juggernaut" Once I kill juggernaut (node) then monit tries to restart it but dies with the following message.
[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
Any clue how can I tell monit to execute a sudo command ?
Just start Monit with sudo and of course add monit to sudoers