Tips : Node.jsをHerokuへDeployする(Ubuntu 12.04)
先日「torchlights」をDeployするにあたって、初めてHerokuを使ってみました。
p5.js + Node.js + Socket.io : アクセスしている人みんなでParticle動かすアプリ 「torchlights」 - [séns]
その際にたどったHerokuへのDeploy手順をメモしておきたいと思います。 基本的には、公式サイトの下記手順を踏めば簡単にDeployできます。Herokuアカウントは作成してある前提です。
toolbeltのインストール
まず、herokuとやりとりをするための「toolbelt」というコマンドラインツールをインストールします。 下記に各OS毎にインストール方法がありますが、ここではUbuntuを選択します。
UbuntuはInstallerとかはなく、ただwgetでインストールスクリプトを取ってきて実行するだけです。
$ wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh
これで、heroku
コマンドが使えるようになりました。さっそくログインしておきます。
$ heroku login Enter your Heroku credentials. Email: Password (typing will be hidden): Authentication successful.
自分のherokuのアカウントでログインすれば、完了です。
アプリケーションを作成する
heroku側にアプリケーションを作成します。今回はNode.jsを作成します。
まず、herokuにアクセスしてダッシュボードを開きます。右上の「+」を選択して下記のようなフォームからアプリを作成します。
RegionはUSで問題ないです。
これでアプリケーションが作成されます。Deployの手順が表示されるので、それに従えばDeployが可能です。 herokuはDeployされたコードから自動でアプリケーションの種類を判別して環境を整えるようなので、ここでNode.jsであるという指定は必要ないです。
ちなみに、アプリケーションはheroku toolbeltから作成することもできます。
$ heroku create xxxx Creating xxxx... done, stack is cedar-14 https://xxxx.herokuapp.com/ | git@heroku.com:xxxx.git
create
コマンドにアプリ名を渡さない場合は自動的に適当な名前が割り振られます。
なお、heroku
コマンドのヘルプは
$ heroku help $ heroku help [command]
で参照できます。
Node.jsアプリの準備
Node.jsやExpressを使ったアプリの詳細は割愛して、ここではherokuへDeployする際に必要な設定などを行います。
最低限必要なのはpackage.json
の編集だけです。dependencies
のチェックと、engines
の指定が必要です。
{ "name": "sample", "version": "0.0.0", "private": true, "scripts": { "start": "node app" }, "engines": { "node": "0.10.32", "npm": "1.4.28" }, "dependencies": { "body-parser": "~1.8.1", "cookie-parser": "~1.3.3", "debug": "~2.0.0", "ejs": "~0.8.5", "express": "~4.9.0", "morgan": "~1.3.0", "newrelic": "^1.13.3", "request": "^2.47.0", "serve-favicon": "~2.1.3", "socket.io": "^1.2.0" } }
利用しているnode
とnpm
のVersionを記載します。また依存しているモジュールの記載漏れがないか確認してください。
開発中にnpm install xxx --save
とsave
オプションつきでインストールしておくと、自動的にpackage.json
に追記されるので便利です。
はじめてのNode.js -サーバーサイドJavaScriptでWebアプリを開発する-
- 作者: 松島浩道
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2013/03/15
- メディア: 大型本
- クリック: 15回
- この商品を含むブログ (5件) を見る
foremanで動作確認する
Deploy前にローカル環境で動作確認をします。そのためにforeman
という仕組みが提供されています。
foreman
を実行するために、アプリケーションルートにProcfile
を作成します。
web: node app.js
後は、foremanを実行し動作確認をします。
$ foreman start
Procfile
については、以下に説明があるので参考になります。
procfile · herokaijp/devcenter Wiki · GitHub
Procfile
はherokuがアプリ実行に必要なファイルらしいですが、自作しないで打ち上げるとサーバ側では自動で作成されるようです。
herokuのリモートリポジトリにpushする(デプロイ)
最後にDeployをします。heroku側へはGitを使って打ち上げます。 heroku側にGitのリモートリポジトリがあるので、それをローカルに登録してプッシュします。
既にGitリポジトリがあれば、そこにリモートリポジトリを登録するだけです。
$ heroku git:remote -a [application name]
すると、heroku
という名前で登録されるので、そこを指定してpush
します。
$ git push heroku master
実行すると、Pushされるだけではなく自動的にアプリ起動に必要な環境を作成し始め、アプリがサーバ側で起動します。
$ heroku ps $ heroku open $ heroku logs
これでプロセスの確認、アプリをブラウザで開く、アプリのログをみることができます。
まとめ
初めてPaaSへを使ってアプリのホストをしてみましたが、Herokuは人気のサービスなだけあってかDeployまでが非常に簡単で使いやすい印象でした。
またDynoが1つまでであれば、無料で使えるところも魅力だと思います。 ただしDynoが1つのときは1時間アクセスがないと、勝手にアプリが停止します。herokuとしては2 Dynos以上を推奨しています。
無料で利用し続けるために、アプリに対して定期的なHTTP GETを発行する方法がよく取られていますが、それはまた別途書きたいと思います。
プロフェッショナルのための 実践Heroku入門 プラットフォーム・クラウドを活用したアプリケーション開発と運用 (書籍)
- 作者: 相澤歩,arton,鳥井雪,織田敬子
- 出版社/メーカー: KADOKAWA/アスキー・メディアワークス
- 発売日: 2014/09/19
- メディア: 大型本
- この商品を含むブログ (2件) を見る
Release It! 本番用ソフトウェア製品の設計とデプロイのために
- 作者: Michael T. Nygard,でびあんぐる
- 出版社/メーカー: オーム社
- 発売日: 2009/02/21
- メディア: 単行本(ソフトカバー)
- 購入: 14人 クリック: 155回
- この商品を含むブログ (50件) を見る