Y's note

Web技術・プロダクトマネジメント・そして経営について

本ブログの更新を停止しており、今後は下記Noteに記載していきます。
https://note.com/yutakikuchi/

HerokuでNodeJSを動かしてみる


前提

準備

nodejs/npmのバージョン確認
$ node -v
v0.4.8

$ npm -v
1.0.6

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.json
Procfile
  • 新しいHerokuの環境となったCedarから取り入れれたファイル。以下のように記述
web: node socketchat.js
package.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);
});
.gitignore
  • GitHubへの登録を無視する設定ファイル。
node_modules

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
$ node socketchat.js 
Listening on 3000
GitHubにコミット
$ git init
$ git add .
$ git commit -m "init"
$ git remote add origin git@github.com:yutakikuchi/Node.git
$ git push -u origin master

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 added
Herokuにアプリケーションを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
コマンドラインからブラウザ起動
$ heroku open

http://socketchat.herokuapp.com/にてHellow World!が表示されることを確認。

次回

Nodeを書いてもう少しちゃんと動くものを提供する予定。