让meteor在亚马逊EC2上运行

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

不过,我想要的是这个应用程序

  1. 在启动时运行
  2. 不要挂断

我尝试通过nohup meteor &运行它,但是当我尝试从EC2实例注销时,出现“您正在运行作业”消息。 继续注销停止应用程序。

我怎样才能让应用程序启动并保持(除非由于某种原因崩溃)?

    永久安装并使用启动脚本。

     $ 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的看到这个问题 。

    另外请注意,如果在生产环境中使用应用程序,您应该将其捆绑在一起。 有关这些差异的更多细节,请参阅此比较 。

    我在Ubuntu服务器上使用了新贵 ,你应该能够在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 

    我相信这个软件包可以解决你的问题: https : //github.com/arunoda/meteor-up

    这似乎forever使用: https : //github.com/nodejitsu/forever