Herokuでnode.jsアプリ立ち上げてみるログ
Posted: Updated:
手軽にnode環境つくれるようにしたい
ので、いい加減情報も出尽くしてそうなHerokuさんをいっちょ試してみた。想像以上に簡単だったけど、例によってログ。ここんとこログばっかですんません(´・ω・`)ちかごろアプリケーション書いてないもんで...
ということで、身の回りの環境刷新ログシリーズ。
heroku関連のコマンドを使えるように
Heroku ToolbeltをDonwloadして、Heroku Clientをインストール(他にもForemanとか色々入るみたいだけど)します。
そして、heroku login
で公開鍵をアカウントに登録します。
% heroku login
Enter your Heroku credentials.
Email: mail@example.com
Password (typing will hidden):
Found the following SSH public keys:
1) heroku.pub
2) id_rsa.pub
Which would you like to use with your Heroku account? 1
Uploading SSH public key /Users/ahomu/.ssh/heroku.pub… done
Authetication sucessful.
heroku.pubは予め作成済みということで割愛。
npmによるpackage.jsonの初期化
nodeなわけなので、npmでpackage.jsonを管理します。Herokuにdeployしたときは、package.jsonの記述内容に従って色々初期化し直してくれてる模様。
実作業としては、ディレクトリつくって、npm init
するだけです。
% mkdir HerokuTest
% cd HerokuTest
% npm init
(…対話質問に答える…)
About to write to /Users/ahomu/package.json:
{
"name": "test",
"version": "0.0.0",
"main": "index.js",
"author": "ahomu",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
}
}
expressをインストール。--saveで、package.jsonのdependenciesに勝手に追加してくれます。
% npm install express --save
mainとscriptsを消し、enginesを書き足して、大体こんな感じ。
{
"name": "test",
"version": "0.0.0",
"author": "ahomu",
"dependencies": {
"express": "3.0.0beta7"
},
"engines": {
"node": "0.8.2",
"npm": "1.1.36"
}
}
アプリケーションをでっちあげ
この項は、はじめてのHeroku(node.js) - 四角革命前夜を完コピさせていただいてます(´ω`)
web.jsとして下記のコードを作成。
var express = require('express'),
app = express.createServer();
app.get('/', function (req, res) {
res.send('Hello, World!');
});
app.listen(process.env.PORT || 3000);
プロセスファイルと、gitignoreをセッティング。
% echo 'web: node web.js' > Procfile
% echo 'node_modules/' > .gitignore
gitとherokuの関係を初期化
とりあえずローカルのリポジトリにherokuリモートを追加するような感じでいきます。
% git init
% git add .
% git commit -m "initialize"
そしてheroku create
でherokuのリモートを追加します。
% heroku create xxxxx-xxxx
Creating xxxxx-xxxx… done, stack is cedar
http://xxxxx-xxxx.herokuapp.com/ | git@heroku.com:xxxxx-xxxx.git
Git remote heroku added
あら簡単。
デプロイ
あとはgit push heroku master
で、アプリケーションを送り込むだけ!
% git push heroku master
% heroku open # ブラウザで公開中のアプリURLを開く
リモートgitのhookスクリプトとして、heroku側のアプリ初期化が起動するのかな?ともあれ、pushするだけでデプロイになるとかステキですね。話には聞いておりましたが。
簡単な実験アプリを作るだけならこれで十分そうです。
追記:ローカルでアプリを実行するとき
ときは、冒頭のHeorku Toolbeltで一緒に入ったと思われるforemanを使います。foreman start
でアプリが立ち上がります。めっさ簡単。.
% foreman start
ローカルもProcfile読んでくれて実行できます。特にポートを指定しないときは、foremanデフォルトの5000番をlistenしますので、localhost:5000にアクセスすればok。
ただ、ファイルの更新監視で自動restartとかは無い?っぽいので、開発ローカルはやっぱ別の手法で立ち上げたほうがよさそう。Keeping node.js Running | Felocity.comで書いてある、runjsとかファイル更新でrestartしてくれた。が、なぜかcpuをめちゃめちゃ使いやがったので様子見。
% echo 'web: runjs web.js' > Procfile.development
% foreman start -f ./Procfile.development
これでいいか。runjsはcpuバカ食いしないやつに差し替えるとして、一応productionはnode、developmentはファイル更新検知できる系で立ち上げられることにする。
参考
- Getting Started with Node.js | Heroku Dev Center
- Herokuって便利だし利用までたった3ステップですお!! - (゚∀゚)o彡 sasata299's blog
- はじめてのHeroku(node.js) - 四角革命前夜
- Heroku + Node.js + ExpressでHelloWorldを書いてみた。 | EIPラボ