devops

Pushing Your Meteor Project to Heroku

Meteor preparation

Go to your meteor project folder:

$ meteor bundle myproject.tar.gz
$ tar -xf myproject.tar.gz
$ cd bundle/

Reinstall fibers

$ cd programs/server
$ npm uninstall fibers
$ sudo npm install fibers
$ cd ../../

Heroku preparation

Node.js

Create package.json file. You can use example one or modify it for your needs:

{
  "name": "metoer-heorku-example",
  "version": "0.0.1",
  "engines": {
    "node": "0.10.x",
    "npm": "1.3.x"
  }
}

Procfile

Create Procfile file to provide launching instruction for heroku:

web: node main.js

Git preparation

$ git init
$ git add .
$ git commit -am "Init commit"

Heroku deployment

Create app

Make sure your local git repository exists on this stage. Heroku must add remote repository to your project.

$ heroku create
$ heroku addons:add mongohq:sandbox
  • Application will be created on this stage. Please notice that heroku will return URL for the application.
  • MongoDB will be also created. To get URL for your new db please run $ heroku config:get MONGOHQ_URL
  • To make sure that heroku added remote repository you can do git remote -v. Heroku should be defined.

Meteor environment on heroku

$ heroku config:add ROOT_URL=<your_application_url>
$ heroku config:add MONGO_URL=<your_application_mongo_url>
$ heroku config:add PORT=<your_application_port>
$ heroku config:add DISABLE_WEBSOCKETS=1
  • <your_application_url> - this value comes from step 'Create app'
  • <your_application_mongo_url> - this value comes from step 'Create app' / create mongo sandbox.
  • <your_application_port> - typicaly should be set to 80
  • DISABLE_WEBSOCKETS=1 - so far heroku cedar doesn't support native websockets

Push app

$ git push heroku master

Open in browser

$ heroku open

Maintenance

Start/Stop/Restart

$ heroku ps:stop web
$ heroku ps:start web
$ heroku ps:restart web

Scaling

$ heroku ps:scale web=1

Logs

$ heroku logs

Bash

$ heroku run bash

Have fun!

Comments