我使用dokku将我的node.js应用程序部署到Digital Ocean。 (Docker 驱动的迷你 Heroku)。该应用程序通过 Procfile (web:node app.js
) 中的命令启动。
我如何从 Upstart 开始它,以便崩溃后自动重新启动?
添加:
当我使用 git push dokku master 部署时,我需要它启动。
最佳答案
编辑文件 /etc/init/node.conf
并放入以下代码。将 /opt/node_project/
更改为您的项目路径。编辑此文件时您需要是 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
现在您已经为您的进程创建了 Upstart 配置,您可以从命令行启动它:
$ sudo service node start
Upstart 将监控您的进程,并在进程出现故障时重新启动它。
它还将日志重定向到 /var/log/upstart/node.log
。
永远
上面的代码直接与 Node 一起工作并且会绕过Dokku。看来 Upstart 并不是解决这个问题的最佳方法。
您应该考虑使用forever
模块。将 forever
添加到您的 package.json 依赖项中。然后在您的 Procfile 中使用:web: ./node_modules/forever/bin/forever app.js
关于node.js - dokku 部署上的 Upstart Node.js 应用程序( digital ocean ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26798048/