我正在将一个node.js应用程序部署到EC2上的Ubuntu服务器上,我正在使用Forever让它继续运行......永远。
问题是,如果我在控制台中输入以下内容:
forever start ~/path/myapp.js
它运作得很好。但我希望应用程序在启动时自动启动,因此我将该行添加到/etc/rc.local,它停止工作。 rc.local中的其他所有内容仍然有效。
我不熟悉Linux所以我最好的猜测是在运行rc.local时没有初始化一些重要的组件。还有其他地方我可以追加这条线吗?
谢谢,
答案 0 :(得分:1)
我很确定它与实际运行/etc/rc.local
中命令的用户有关。由于~
指定用户的主目录,因此可能不存在,与预期不同,或者在脚本运行时未加载。我建议尝试以下方法:
forever start /path/to/home/path/myapp.js
答案 1 :(得分:0)
这是一个非常晚的回复,但我刚刚碰到了这个。对我来说,使用forever list
表示没有任何内容正在运行,但执行sudo forever list
会显示服务器实际上正在运行。
这是因为rc.local以root身份运行,因此您的forever命令以root身份运行,只有root才能在列表中看到它。
我不知道最佳做法,但我通过从rc.local这样调用我的永久启动脚本来解决这个问题,其中“pi”是我想要启动永久过程的用户:
su pi -c './start'
如果有帮助,这是我的删节./start脚本,你的可能会有所不同,或者你可以将其内容直接放在rc.local中:
#!/bin/sh
forever start --append -l forever.log -o server.log -e error.log server.js