【发布时间】:2014-11-02 05:16:55
【问题描述】:
我有一个 nodejs 应用程序,我想在服务器重启后自动重启。我创建了一个脚本来永久启动应用程序,如下所示。
#!/bin/sh
export PATH=/usr/bin:$PATH
forever start --command node --minUptime 1000 --spinSleepTime 10000 --sourceDir /etc/csc server.js >> /etc/csc/log.txt 2>&1
我还创建了一个 crontab 条目以在重启后运行此脚本:
@reboot /etc/csc/csc-starter.sh
虽然,我认为 crontab 部分并不真正相关,我将在下面解释。问题是,虽然 nodejs 应用程序在重新启动后确实启动了,但它没有正确响应客户端请求。例如,调用应导致显示应用程序主视图(在浏览器中)的 URL 会导致以下输出:
{
code: "ResourceNotFound",
message: "/"
}
有趣的是,当我手动调用启动脚本时,会观察到相同的输出。但是,如果我使用以下方式运行 nodejs 应用程序:
node /etc/csc/server.js
效果很好。我是 Linux 的相对新手,您可以放心地假设我可能不知道在 Linux 中工作的一些公认真理,例如将应用程序放在 /etc 下的适当性。
任何想法为什么永远启动应用程序会改变它的内部行为?有问题的应用程序非常简单。它基于 restify 并且有几个 REST 路由,以及托管静态内容,但它真的没什么花哨的。
谢谢。
【问题讨论】: