Search code examples
linuxamazon-web-servicesamazon-ec2meteorstartup

Keep meteor running on amazon EC2


I have a simple meteor app that I'm running on an Amazon EC2 server. Everything is working great. I start it manually with my user via meteor in the project directory.

However, what I would like is for this app to

  1. Run on boot
  2. Be immune to hangups

I try running it via nohup meteor &, but when I try to log out of the EC2 instance, I get the "You have running jobs" message. Continuing to log out stops the app.

How can I get the app to start on startup and stay up (unless it crashes for some reason)?


Solution

  • Install forever and use a start script.

    $ npm install -g forever
    

    I have several scripts for managing my production environment - the start script looks something like:

    #!/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
    

    Conveniently, it will also append to a log file in ~/.forever which will show any errors encountered while running your app. You can get the location of the log file and other stats about your app with:

    $ forever list
    

    To get your app to start on startup, you'd need to do something appropriate for your flavor of linux. You can maybe just put the start script in /etc/rc.local. For ubuntu see this question.

    Also note you really should be bundling your app if using it in production. See this comparison for more details on the differences.