我有一个简单的流星应用程序,我在Amazon EC2服务器上运行。一切都很好。我通过项目目录中的meteor
手动启动它。让流星运行在亚马逊EC2
不过,我想是这个应用
- 运行在启动
- 被免疫挂断
我试着通过nohup meteor &
运行它,但是当我尝试登录在EC2实例中,我得到了“您正在运行作业”消息。继续注销会停止应用程序。
如何让应用程序在启动时启动并保持(除非由于某种原因而崩溃)?
我有一个简单的流星应用程序,我在Amazon EC2服务器上运行。一切都很好。我通过项目目录中的meteor
手动启动它。让流星运行在亚马逊EC2
不过,我想是这个应用
我试着通过nohup meteor &
运行它,但是当我尝试登录在EC2实例中,我得到了“您正在运行作业”消息。继续注销会停止应用程序。
如何让应用程序在启动时启动并保持(除非由于某种原因而崩溃)?
安装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。
我相信这包解决您的问题:https://github.com/arunoda/meteor-up
这似乎使用forever
:https://github.com/nodejitsu/forever
好像'mup'被设计成只针对Ubuntu的工作,但我运行亚马逊Linux –
我在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
谢谢,这有助于很多。我正在使用亚马逊Linux,而不是Ubuntu。我捆绑它,但它不会启动,因为它缺少'光纤'。我cd到'bundle/server'并运行'npm install --nodedir =/usr/local/bin fibers',但是我得到'gyp:/usr/local/bin/common.gypi not found'。有任何想法吗? –
1)参见[this](http://stackoverflow.com/questions/13327088/meteor-bundle-fails-because-fibers-node-is-missing)问题。 2)你在运行什么版本的节点? –
'v0.11.12-pre。' –