Node.js (sudo) and monit

依然范特西╮ 提交于 2019-12-10 21:54:49

问题


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 ?


回答1:


I think you should run nodeJS with dedicated user then remove "exec sudo" from the starting script, and tell monit directly which user you would like to use.

start program = "/sbin/start juggernaut" as uid user-id




回答2:


Just start Monit with sudo and of course add monit to sudoers




回答3:


Check what user monit is running as. Is that user configured to run sudo? Check also if sudo has reported any errors (probably in /var/log/messages).

I found this answer to be very helpful in figuring out monit behavior.



来源:https://stackoverflow.com/questions/4892764/node-js-sudo-and-monit

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!