【发布时间】:2013-12-30 02:26:47
【问题描述】:
我对这一切都很陌生,所以我很抱歉。我的搜索还没有给我答案,我还在测试。
我有一个由 Forever 在 Ubuntu 12.04 LTS 上启动的 Node JS 应用程序。我试图弄清楚的几个要求:
- 开机自动启动
- 能够手动重启应用
我配置了一个 Upstart 脚本,它运行良好,但我无法正确停止该进程。我认为问题是因为 Upstart 正在寻找一个 PID,而 Forever 创建了一个 PID 但没有告诉 Upstart?所以当我试图停止时,它不知道如何杀死正确的进程。
这是我正在尝试做的一个示例:
#start on startup
#stop on shutdown
expect daemon
env NODE_BIN_DIR=""
env NODE_PATH=""
env APPLICATION_DIRECTORY=""
env APPLICATION_START=""
env NODE_ENV=""
#pre-start script
#sleep 15
#end script
script
PATH=$NODE_BIN_DIR:$PATH
cd /vol01/web/iin
exec sudo -u ubuntu forever -a -l $LOG -e $eLog start $APPLICATION_START
end script
pre-stop script
PATH=$NODE_BIN_DIR:$PATH
exec forever stop $APPLICATION_START
end script
我开始认为解决此问题的最佳方法是在启动时运行一个 cron 作业,该作业将运行一个脚本来运行永久节点。该脚本将包括停止应用程序和启动,我可以手动调用该脚本。想法?
【问题讨论】:
-
我确实看过那篇文章,但我想我想知道如何永远做到这一点。我喜欢如果 PID 死了就永远重新启动的想法,但我猜暴发户也可以配置为这样做。我还需要弄清楚如何分离应用程序的输出和错误日志。谢谢!
-
是的!祝你好运。 Forever 会起作用,但我发现最好做别人以前做过的事情。