让流星在亚马逊EC2上运行

时间:2014-01-30 04:26:59

标签: linux amazon-web-services amazon-ec2 meteor startup

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

然而,我想要的是这个应用程序

  1. 在启动时运行
  2. 免于挂断
  3. 我尝试通过nohup meteor &运行它,但是当我尝试注销EC2实例时,我收到“你有正在运行的工作”消息。继续退出会停止该应用。

    如何让应用程序在启动时启动并保持运行(除非因某些原因崩溃)?

3 个答案:

答案 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

似乎使用foreverhttps://github.com/nodejitsu/forever