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ラボ