HerokuでNodeJSを動かしてみる
前提
- Herokuとは?
- rubyやnodejsのPaas。ファイルのDeployでアプリケーションを作成することができる。
- Googleが提供しているGAEやWindowsのAzureみたいなもの。
- 少し前にSalesforce.comに買収されている。
- Herokuのアカウント登録は次のURLから https://api.heroku.com/signup
- GitHubでソースを開発/管理して、動作させるのはHerokuサーバ。これが素晴らしい。
- アプリケーションサーバを1プロセス(dyno)を利用できる。dynoとはHeroku独自の単位。
- PostgreSQLを5MBまで利用可能。
- この記事の紹介はHerokuのアカウントを保持していること、自分のPCにgem(Rubyのパッケージインストールコマンド),node,npmが入っている事を前提とする。(node,npmあたりは以前記事を書いた Node.jsでWebSocketを試してみる - Yuta.Kikuchiの日記 を参照して欲しい)
- GitHubに対する設定と知識も必要。以前Macでの設定を書いた。MacユーザのためのGitHub登録手順 - Yuta.Kikuchiの日記
- 私が試した環境はMacOSX。バージョン10.6.8
Herokuパッケージ設定手順
Herokuのinstall
$ sudo gem update --system $ sudo install herokuアプリ一覧を表示
まだ何も登録していないのでYou have no apps.と表示される。
$ heroku list Enter your Heroku credentials Email: hoge@gmail.com Password: Found existing public key: /Users/YutaKikuchi/.ssh/id_rsa.pub Uploading ssh public key /Users/YutaKikuchi/.ssh/id_rsa.pub You have no apps.
必要なファイル
ファイル構成
.git .gitignore Procfile socketchat.js node_modules package.jsonProcfile
- 新しいHerokuの環境となったCedarから取り入れれたファイル。以下のように記述
web: node socketchat.jspackage.json(Nodeを使う場合に必要)
- アプリの説明やNPMの依存を記述する。
{ "name": "socketchat", "version": "0.0.1", "dependencies": { "express": "2.2.0" } }実行するNodejsファイル
- socketchat.jsというファイルにて作成。
- とりあえず動く事を確認したいのでHerokuにあるサンプルプログラムをそのまま記述する。
var express = require('express'); var app = express.createServer(express.logger()); app.get('/', function(request, response) { response.send('Hello World!'); }); var port = process.env.PORT || 3000; app.listen(port, function() { console.log("Listening on " + port); });
GitHubへの登録
localhostで動作確認
- expressを使うのでnpmでinstallしておく
$ sudo npm install express mime@1.2.4 ./node_modules/express/node_modules/mime qs@0.4.0 ./node_modules/express/node_modules/qs formidable@1.0.8 ./node_modules/express/node_modules/connect/node_modules/formidable connect@1.8.2 ./node_modules/express/node_modules/connect express@2.2.0 ./node_modules/express
- 起動。http://localhost:3000/にHello World!が出力される。
$ node socketchat.js Listening on 3000GitHubにコミット
- GitHubに登録。
$ git init $ git add . $ git commit -m "init" $ git remote add origin git@github.com:yutakikuchi/Node.git $ git push -u origin master
- GitHubにUPしたソースは次のもの https://github.com/yutakikuchi/Node
HerokuへDeploy
Herokuにアプリケーションを作成
- socketchatという名前で登録する。
- --stack cedarとすると
.heroku.com というドメインではなく、.herokuapp.com という名前で作成される。$ heroku create socketchat --stack cedar Creating socketchat... done, stack is cedar http://socketchat.herokuapp.com/ | git@heroku.com:socketchat.git Git remote heroku addedHerokuにアプリケーションをDeploy
$ git push heroku master Counting objects: 10, done. Delta compression using up to 2 threads. Compressing objects: 100% (7/7), done. Writing objects: 100% (10/10), 1022 bytes, done. Total 10 (delta 1), reused 0 (delta 0) -----> Heroku receiving push -----> Node.js app detected -----> Fetching Node.js binaries -----> Vendoring node 0.4.7 -----> Installing dependencies with npm 1.0.94 express@2.2.0 ./node_modules/express ├── qs@0.4.0 ├── mime@1.2.4 └── connect@1.8.2 Dependencies installed -----> Discovering process types Procfile declares types -> web -----> Compiled slug size is 6.9MB -----> Launching... done, v4 http://socketchat.herokuapp.com deployed to Heroku To git@heroku.com:socketchat.git * [new branch] master -> master
次回
Nodeを書いてもう少しちゃんと動くものを提供する予定。