2014-01-30 85 views
3

我有一个简单的流星应用程序,我在Amazon EC2服务器上运行。一切都很好。我通过项目目录中的meteor手动启动它。让流星运行在亚马逊EC2

不过,我想是这个应用

  1. 运行在启动
  2. 被免疫挂断

我试着通过nohup meteor &运行它,但是当我尝试登录在EC2实例中,我得到了“您正在运行作业”消息。继续注销会停止应用程序。

如何让应用程序在启动时启动并保持(除非由于某种原因而崩溃)?

回答

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

+0

谢谢,这有助于很多。我正在使用亚马逊Linux,而不是Ubuntu。我捆绑它,但它不会启动,因为它缺少'光纤'。我cd到'bundle/server'并运行'npm install --nodedir =/usr/local/bin fibers',但是我得到'gyp:/usr/local/bin/common.gypi not found'。有任何想法吗? –

+0

1)参见[this](http://stackoverflow.com/questions/13327088/meteor-bundle-fails-because-fibers-node-is-missing)问题。 2)你在运行什么版本的节点? –

+0

'v0.11.12-pre。' –

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