数字海洋部署的Upstart node.js应用程序
我使用dokku (Docker驱动的mini-Heroku)将我的node.js应用程序部署到Digital Ocean。 该应用程序由Procfile( web: node app.js
)中的命令启动。
如何用Upstart启动它,以便在崩溃后自动重启?
添加:
当我用git push dokku master
部署的时候,我需要它是git push dokku master
。
编辑文件/etc/init/node.conf
并放入下面的代码。将/opt/node_project/
更改为项目的path。 编辑这个文件时需要root,所以用sudo
打开你的编辑器。
description "Node server" author "eagor" # Stanzas # # Stanzas control when and how a process is started and stopped # See a list of stanzas here: http://upstart.ubuntu.com/wiki/Stanzas#respawn # When to start the service start on runlevel [2345] # When to stop the service stop on runlevel [016] # Automatically restart process if crashed respawn script echo $$ > /var/run/node.pid; exec node /opt/node_project/app.js end script post-stop script rm -f /var/run/node.pid end script
现在您已经为您的stream程创build了一个Upstartconfiguration,您可以从命令行启动它:
$ sudo service node start
新贵会监督你的过程,并会在任何时候重新启动它。
它还将日志redirect到/var/log/upstart/node.log
。
永远
上面的工作直接与节点,并会绕过Dokku。 看起来像Upstart不是处理这个问题的最好方法。
你应该考虑使用forever
模块。 forever
添加到你的package.json依赖。 然后在你的Procfile中使用这个: web: ./node_modules/forever/bin/forever app.js