HerokuでNode.jsのアプリをディプロイする(Mac版)
Getting Started on Heroku with Node.js | Heroku Dev Center
上のリンクに従い、HerokuでNode.jsのサンプルアプリをディプロイする。
①下準備
下準備として、以下の2点が必要だ。
- Herokuのアカウント
- Node.jsとnpm
②Heroku Toolbeltのインストール
Heroku Toolbeltをダウンロードし、インストール。ターミナルを開き、
でログインする。
$ node -v
v6.0.0
$ npm -v
v3.8.6
$ git --version
git version 2.6.4
などと正しく必要なモジュールがインストールされていることも確認しておく。
③アプリケーションを準備する
適当なディレクトリに移動し、サンプルアプリをgit cloneし、cdする。
$ git clone https://github.com/heroku/node-js-getting-started.git
$ cd node-js-getting-started
④アプリをディプロイする
$ heroku create
$ git push heroku master
これで、ディプロイができた。
$ heroku ps
から動いていることも確認できる。また、以下コマンドで作成されたURLにアクセスすることもできる。
$ heroku open
⑤ログを見る
$ heroku logs --tail
これでログを確認できる。中止するにはCtrl+Cを押せば良い。
⑥Procfileを定義する
Procfileとはプロジェクトのルートディレクトリに置かれるファイルのことで、どのコマンドで何をするかを記述できる。今、ルートディレクトリでls
を行うとProcfileが確認できる。Viなどでそれを開いてみると、
web: node index.js
と記述されている。
これらは
$ <process type>: <command>
のルールで記述され、process typeにはweb, worker, urgentworker, clockなどがある。webプロセスタイプに限ってはHTTPトラフィックを受信する唯一のプロセスであるため名前の変更はできない。
⑦アプリケーションをスケールさせる
$ heroku ps Free quota left: 17h 23m === web (Free): node index.js (1) web.1: idle 2016/05/01 14:15:13 +0900 (~ 1h ago)
上のようにheroku psコマンドで稼働中のdynoが確認できる。無料のdynoは30分後にinactiveになり、また1日に18時間以上稼動できない。webリクエストによってactiveにはなるが、それには多少のレイテンシを伴う。これを避けるにはdynoをアップグレードすることとなる。
⑧アプリケーションの依存関係を宣言する。
③でサンプルアプリケーションをコピーしていれば、すでにpackage.jsonファイルがある。このディレクトリで、以下コマンドを打つ。
$ npm install
⑨アプリケーションをローカルで動かす
アプリケーションをローカルで動かすのは以下コマンドを使う。
$ heroku local web
こうすることで、ブラウザからhttp://localhost:5000にアクセスしてみるとアプリケーションが動いていることが確認できる。停止するにはCtrl+Cで良い。
⑩ローカルの変更をプッシュする
アプリケーションの変更をherokuにプッシュする方法を学ぶ。例として、依存関係を追加し、それをテストするコードを書いてみよう。
$ npm install --save --save-exact cool-ascii-faces
とコマンドを打ち、cool-ascii-facesを追加しよう。また、index.jsを開き、
var cool = require('cool-ascii-faces');
(中略)
app.get('/cool',fucntion(request,response) {
response.send(cool());
});
上のコードを追加する。
$ npm install
$ heroku local
として、http://localhost:5000/coolにアクセスすると、アスキーアートの顔が表示される。エンコーディングはUTF-8が良い。
このコード変更をまず、ローカルのgitのレポジトリに足す。
$ git add .
次に、コミットする。
$ git commit -m "Demo"
ディプロイする
$ git push heroku master
実際にheroku上で動いていることを確認するには
$ heroku open cool
とすれば確認できる。
11.コンソールを始める
heroku runコマンドを使うことで、コマンドスクリプトを使用することが可能だ。
$ heroku run node
とすることで、nodeが立ち上がり、node.jsのコマンドを受け付ける。
また、
$ heroku run bash
とすると、bashコマンドを受け付ける。
12.Config varsを定義する
herokuは設定を外面化することができる。暗号鍵などは外部のconfig varsに格納する。index.jsに以下のコードを足す。
app.get('/times', function(request, response) {
var result = '' var times = process.env.TIMES || 5
for (i=0; i < times; i++)
result += i + ' ';
response.send(result);
});
herokuでconfig varを設定するのは
$ heroku config:set TIMES=2
などとする。