我有一个简单的流星应用程序,我正在Amazon EC2服务器上运行。一切都很好。我通过项目目录中的meteor
与我的用户手动启动它。
然而,我想要的是这个应用程序
我尝试通过nohup meteor &
运行它,但是当我尝试注销EC2实例时,我收到“你有正在运行的工作”消息。继续退出会停止该应用。
如何让应用程序在启动时启动并保持运行(除非因某些原因崩溃)?
答案 0 :(得分:3)
安装forever并使用启动脚本。
$ npm install -g forever
我有几个脚本用于管理我的生产环境 - 启动脚本类似于:
#!/bin/bash
forever stopall
export MAIL_URL=...
export MONGO_URL=...
export MONGO_OPLOG_URL=...
export PORT=3000
export ROOT_URL=...
forever start /home/ubuntu/apps/myapp/bundle/main.js
exit 0
方便地,它还会附加到~/.forever
中的日志文件,该文件将显示运行应用时遇到的任何错误。您可以使用以下命令获取日志文件的位置以及有关您的应用的其他统计信息:
$ forever list
要让你的应用程序在启动时启动,你需要做一些适合你的linux风格的事情。您可以将启动脚本放在/etc/rc.local
中。对于ubuntu,请参阅this question。
另请注意,真正应该捆绑您的应用,如果在生产中使用它。有关差异的详细信息,请参阅this comparison。
答案 1 :(得分:1)
我在Ubuntu服务器上使用upstart,您应该可以在Amazon linux上轻松安装。
这大致是我的/etc/init/myapp.conf
:
start on (local-filesystems and net-device-up IFACE=eth0)
stop on shutdown
respawn
respawn limit 99 5
script
export HOME="/home/deploy"
export NODE_ENV="production"
export MONGO_URL="mongodb://localhost:27017/myappdb"
export ROOT_URL=http://localhost
export MAIL_URL=smtp://localhost:25
export METEOR_SETTINGS='{"somesetting":true}'
cd /var/www/myapp/bundle/
exec sudo -u deploy PORT=3000 /usr/bin/node main.js >> /var/log/node.log 2>&1
end script
然后我可以像这样手动启动和停止myapp
:
sudo start myapp
sudo stop myapp
答案 2 :(得分:0)
我相信这个包解决了您的问题:https://github.com/arunoda/meteor-up
似乎使用forever
:https://github.com/nodejitsu/forever