服务器重新启动时无法让我的Upstart脚本运行Node.js和Forever

最近我一直在设置我的服务器,今天我不得不重新启动它…然后我意识到我运行的所有Node应用程序都没有运行了。 我正在使用Node Forever模块来保持应用程序运行,但是后来我意识到,当我的服务器重新启动或closures并重新启动时,我仍然需要启动它们。

我一直在研究最好的方法来做到这一点,但我只是没有工作。 我在我的Ubuntu服务器10.04LTS远程服务器的/etc/init/文件夹中创build了一个Upstart脚本,并尝试重新启动,它似乎没有做任何事情。 当我forever list运行forever list没有什么是列出的。

这是我今天试用的Upstart脚本:

 #/etc/init/myapp.conf start on (local-filesystems and net-device-up IFACE=eth0) stop on shutdown script exec sudo /usr/local/bin/node /var/www/myapp/myapp.forever.js end script 

我在节点脚本中使用Forever,因为我发现它更容易configuration它,我想要的。 如果我在脚本之外执行,确认脚本运行的很好,但是Upstart脚本本身有问题。 它似乎与/etc/init/文件夹中的所有其他Upstart脚本具有相同的权限。

另外需要注意的是,我已经在StackOverflow中find了几乎所有我能find的答案,而且现在我已经把脚本放在一起了。

更新:

用汤姆的回答,我现在已经试过了:

 #/etc/init/myapp.conf start on (local-filesystems and net-device-up IFACE=eth0) stop on shutdown exec sudo /usr/local/bin/node /var/www/myapp/myapp.forever.js 

但它仍然无法正常工作。

所以我不知道为什么当我重新启动我的服务器时没有运行。 请帮忙!

这不是一个非常快乐的设置。 upstart的工作方式是使用启动命令的进程ID启动进程。 永远JS的作品同样,它可能是由Upstart启发。

当你试图用upstart运行forever.js时,在你的新贵脚本中创build的永久过程在启动后立即退出。 新贵需要让这个过程继续下去。

当我试图用暴发户永远奔跑时,我终于结束了五个不同的永恒的过程,因为暴发户认为它没有永远的开始,并且重试了五次。

你是否尝试了没有启动脚本行?

 description "my server" author "name" start on (local-filesystems and net-device-up IFACE=eth0) stop on shutdown #respawn if you were not using forever exec sudo /usr/local/bin/node myapp.forever.js 

来源: http : //caolanmcmahon.com/posts/deploying_node_js_with_upstart

我select在用户的crontab文件中使用@reboot语句,这将在服务器重启时永久执行。

 @reboot forever start app.js 

额外阅读 – http://www.cyberciti.biz/faq/linux-execute-cron-job-after-system-reboot/