Fool Pool

ハマった記

Node.js プロジェクトを heroku で動かす

heroku 公式 Tutorial 写経の第二弾。

1) Node.js のインストール(Client)

ここからインストール: http://nodejs.org/

2) アプリを作成

今回は hello というプロジェクトを作成 hello/

  • web.js -- サーバプログラム

※ コードは上記チュートリアルを参照のこと.

3) 構成ファイルを生成する

  • package.json -- Node.js のプロジェクト構成ファイル.heroku はこれがあるとNode.jsのプロジェクトと判断する.npm コマンドで対話的に生成する.

    $ cd hello
    $ npm init
    

4) 依存パッケージをインストール

今回は Express パッケージおよび Logfmt パッケージを使用するので、両方ともインストールする.

$ npm install express logfmt --save

なお、上記コマンドでインストールされたモジュールはプロジェクト直下の下記フォルダに格納される.

  • node_modules -- node の依存パッケージが格納されるフォルダ(自動生成)

    注意: すべての依存パッケージの情報が package.json に書かれている必要がある(自動で追加してくれるようだが).heroku(もしくは Node.js?)の運用ルールでは、すべての依存パッケージはローカルにインストールすることを前提としている.これにより、システムの環境が違っても、アプリが確実に動くことが保証される(ここ大事!)これがないと、環境移行の際に、たいてい、すごく苦労する.

5) アプリのタイプを指定する

heroku の作法で、デプロイ時に起動するプロセスを指定するために、Prockfile を編集する.

web: node web.js

ちなみに、上記は「node の webアプリケーションで、起動するのは web.js ですよ」の意味. 公式チュートリアルによると、

" web を指定すると、HTTP routing スタックにアタッチされ、デプロイ後に web パケットを受け取れるようになる"

だそうです.

6) デプロイ

$ heroku create
$ git init; git add.; git commit -m "init"
$ git push heroku master

アプリの起動は、Procfileに記述した内容をもとに、herokuが自動で行ってくれます.

7) ブラウザでアプリ閲覧

$ heroku open

8) 運用コマンドテスト

これはScalaのときにやったので省略する

9) データベースの利用

チュートリアルでは下記3つが紹介されている:

なお、MongoDBおよびRedisをアタッチするには、クレジットカード登録が必要のようです.