Express(node.js)+Socket.io+MongoDBでつくったwebアプリをHerokuにデプロイするまで

Express(node.js)+Socket.io+MongoDBでつくったアプリをHerokuにデプロイしました。node.js+npm+Expressはインストールされている前提です。

Expressでwebアプリのひな形を作成

以下のコマンドでひな形を作成します。

$ express application-name
$ cd application-name && npm install

この段階で

$ node app

とするとサーバーが立ち上がります。ブラウザでhttp://localhost:3000にアクセスすると"Welcome to Express"と描かれたページが表示されます。

Socket.ioとmongooseをインストール

application-nameディレクトリで以下のコマンドを実行し、Socket.ioとmongooseをインストールします。

$ npm install socket.io
$ npm install mongoose

mongooseはMongoDB のオブジェクトモデリングツールです。Node.js上でMongoDBを簡単に取り扱うことができます。

package.jsonファイルを編集

モジュールのパッケージ管理をするpackage.jsonファイルを編集します。
デフォルトでは書かれていないmongooseとSocket.ioに関して追記します。
socket.ioとmongooseのバージョンは/node_modules/の中のそれぞれのフォルダのpackage.jsonの"version"に書かれています。

{
    "name": "application-name"
  , "version": "0.0.1"
  , "private": true
  , "dependencies": {
      "express": "2.5.11"
    , "jade": "*"
    , "mongoose": "1.3.5"
    , "socket.io": "0.8.7"
  }
}

デプロイする準備

.gitignoreファイルを作る

node_modulesにあるモジュールは、Herokuにデプロイする時にpackage.jsonから自動にインストールされます。なので、node_modulesフォルダはgitから無視するように以下コマンドで.gitignoreファイルを作成します。

$ echo "node_modules" > .gitignore

Procfileを作成

Herokuでのプロセス起動に関するProcfileファイルを以下のように作成します。

$ echo web: node app.js > Procfile

Herokuをアップデート

以下コマンドでHerokuを最新の状態にします。

$ gem update heroku
$ gem list heroku

herokuがインストールされていない場合は、Heroku Toolbeltからインストールします。

Herokuにデプロイ

以下コマンドで、gitの管理下にファイルを置き、herokuにpushします。

$ git init 
$ git add .
$ git commit -m "first commit"
$ heroku create application-name --stack cedar
$ heroku addons:add mongohq:free
$ git push heroku master

heroku create ~ でherokuアプリケーションを作成しています。
heroku addons: ~ でMongoDBのホスティングサービスのMongoHQアドオンを追加しています。

以下コマンドで、herokuのプロセスの設定をします。

$ heroku ps:scale web=1
$ heroku config:set NODE_ENV=production

以上でHerokuにExpress(node.js)+Socket.io+MongoDBでつくったwebアプリをデプロイできました。

MongoHQのuri設定

MongoHQへのuriはapp.jsに以下のように設定します。

var uri = process.env.MONGOHQ_URL || 'mongodb://localhost/db_name';