Heroku × Node.js で Hello world!

この記事では、 Heroku で Node.js の Hello world プロジェクトを作るまでを紹介する。

この記事は、2014 年 2 月時点の https://devcenter.heroku.com/articles/getting-started-with-nodejs の内容に沿っています(Deploy your application to Heroku まで)。

前提条件

前提として、以下の作業を終えていることとする。
・Heroku のアカウント作成
・Heroku Toolbelt をインストール済み
・Node.js をインストール済み(nodebrew で node.js をインストールする方法

heroku login

まず heroku login をする。これはおそらく ssh キーの登録作業を行っている。そのため、毎回行わなくていいはず。

heroku login

$ heroku login
Enter your Heroku credentials.
Email: // Heroku で登録したメールアドレス入力
Password: // 〃パスワード入力
Could not find an existing public key.
Would you like to generate one? [Yn]
Generating new SSH public key.
Uploading ssh public key /Users/adam/.ssh/id_rsa.pub

起動時に呼ばれるメインのファイル作成

続いて web.js を書く。これが起動時に呼ばれるメインのファイル。

起動スクリプトの作成 (web.js)

// web.js
var express = require("express");
var logfmt = require("logfmt");
var app = express();

app.use(logfmt.requestLogger());

app.get('/', function(req, res) {
  res.send('Hello World!');
});

var port = Number(process.env.PORT || 5000);
app.listen(port, function() {
  console.log("Listening on " + port);
});

package.json の生成

次に、npm init コマンドで package.json なるものを生成する。(nodebrew で node をインストールした方は npm も既に存在するはず)

package.json とは、今作っているアプリケーションの依存パッケージ情報などを入れておくものである。npm install すると、package.json の情報からパッケージがインストールされる。

package.json の生成

$ npm init

name: (node-example)
version: (0.0.0)
description: This example app is so cool.
entry point: (index.js) web.js
test command:
git repository: https://github.com/jane-doe/node-example.git
keywords: example heroku
author: jane-doe
license: (BSD-2-Clause) MIT
...

package.json ファイルが無事生成されれば OK。

node パッケージのインストール

次に express、 logfmt パッケージをインストールする。–save オプションで package.json に express などの情報を入れてくれるらしい。便利なオプションだ。

express は Node.js で最も有名なフレームワークである。express を使うことでルーティングや MVC モデリングが簡単に実装できる(と私は思っている)。

express, logfmt のインストール

$ npm install express logfmt --save

node_modules というディレクトリが生成され、node_modules 以下に express, logfmt などがあれば OK。

package.json をちょっと修正

package.json に以下を書き加える必要がある(らしい)。name などと同じ段に挿入する。カンマのつけ忘れにご注意を。

engines 指定 ( package.json )

  "engines": {
    "node": "0.10.x"
  }

Procfile の作成

次に、Procfile なるものを作成する。これはおそらく Heroku 独自の設定ファイルで「このコマンドで起動してください」みたいな設定ファイル。

Procfile

web: node web.js

ローカルで動作確認

次にローカルで動かしてみる。foreman start することでローカルで動かすことができる。foreman が command not found の場合、新しく Heroku Toolbelt をインストールし直す。

foreman start でローカルテスト

$ foreman start

環境によるが、localhost:5000 や [hostname]:5000 などにアクセスすると Hello world と表示される。

heroku アップロードの前に git commit

実際に heroku にアップロードするには git commit しておく必要あり。

git commit まで

$ git init
$ git add .
$ git commit -m "init"

heroku create で heroku のリポジトリを追加

次に、heroku create コマンドで上げ先のリモートリポジトリを設定する。

heroku create

$ heroku create
Creating sharp-rain-871... done, stack is cedar
http://sharp-rain-871.herokuapp.com/ | git@heroku.com:sharp-rain-871.git
Git remote heroku added

# git remote -v で heroku リポジトリが確認できる。

とすると、sharp-rain-871 のような英単語 2 つと数字数桁の適当なプロジェクト名が設定される。これが URL に使われる。これが嫌な場合には、heroku create の後につけたいプロジェクト名を入力する。ただ、 URL として使われるため、既存のプロジェクト名は却下される。

git push で heroku にアップロード

ついに最後。heroku リポジトリに push すると、heroku にアップロードされる。

heroku にアップロード

$ git push heroku master

ここで、master 以外で作業していた方はエラーになるかも。これは master から master にあげようとするためで、以下のようにすれば回避できる。

heroku にアップロード

$ git push heroku [branch-name]:master
# 二回目以降などは -f で force push しないといけないかも
$ git push heroku [branch-name]:master -f

Heroku で確認

Heroku で確認してみる。heroku dashboard の Apps に作成したプロジェクトが登録されている。
heroku ダッシュボード

ページ遷移しプロジェクト名の横のジャンプアイコンクリック。
Hello world にジャンプ

Hello world が表示されていれば、OK。heroku × node.js の Hello world 完了。

以上。

関連記事

heroku 課金制の調査メモ
heroku の無料アドオン追加時のエラー対処法

コメントを残す

メールアドレスが公開されることはありません。

This blog is kept spam free by WP-SpamFree.

コメントフィード

トラックバックURL: http://monopocket.jp/blog/heroku/2996/trackback/