我正在使用grunt将节点Web应用程序部署为upstart服务,并使用monit进行监控。但是:
.override
个文件)这意味着我正在寻找一个可以用来生成uptstart .conf和monit conf.d / files的grunt插件或其他工具。你能帮我找一个(或建议一个更好的方法来运行我的节点网络应用程序)?
老实说,upstart和monit文件的下划线模板可能已经足够了,如果没有现成的解决方案,那么我将把它包装成一个grunt插件,但这感觉就像一个问题其他人也一定要碰到,所以我想有一个解决方案,我找不到它。
更详细地说明这三个问题。我的新贵conf文件看起来像这样:
setuid node
setgid node
# ...
script
mkdir -p /home/node/.my-app
echo $$ > /home/node/.my-app/upstart.pid
/usr/local/bin/node /var/node/my-app/server.js >> /var/node/my-app/logs/console.log 2>&1
end script
# ...
我的monit配置如下:
check process node with pidfile /home/node/.my-app/upstart.pid
start program = "/sbin/start my-app" with timeout 60 seconds
stop program = "/sbin/stop my-app"
if failed host localhost port 17394 protocol http
and request "/monit.html"
then restart
if 3 restarts within 5 cycles then timeout
如您所见,PID文件路径和配置目录在两者之间重复(问题1),我很乐意在monit文件中对主机,端口和请求URL进行参数化(问题3)。
对于问题2(在upstart的env
节中没有变量扩展,错误报告here),有几种解决方法适用于*脚本块中使用的变量,这些变量被解释为bash脚本,但它们似乎不适用于conf文件本身。我认为这使得无法在配置文件中指定应该运行的用户ID?
我刚才提到的那些技巧:
答案 0 :(得分:3)
...或建议更好地运行我的节点网络应用程序
改为使用PM2 by Unitech。
我使用PM2运行所有节点应用程序。它工作正常,易于配置。它具有自动生成启动脚本的内置功能。它为您提供记录,监控和易于维护。
这是展示亮点的good article。
安装强>
npm install -g pm2
启动应用
pm2 start app.js
显示正在运行的应用
pm2 list
制作启动脚本
pm2 startup [ubuntu|centos|systemd]
中的更多详细信息