herokuって何かとは説明しません。
今回これを達成するためにいくつか問題点を解決します。
package.json
dependenciesに記述したmoduleはrequireできるようになる。なのでdevDependenciesにあるものなどはdependenciesに書き換えておく。
ただ、それだけでは動かない。
同じフォルダにProcfileを作る。これはherokuで動かすコマンドを記述し、デプロイした後にコマンドを送れば実行してくれる。
(Procfile)
web: npm start --production
これによってpackage.jsonのstartに記述したコマンドが実行されることになる。developmentとproductionを切り替える場合は--productionをつける。express4でpackage.jsonのstartには
"scripts": {
"start": "node ./bin/www"
},
と記述されているが、これで良い。wwwの中を見ると、httpのlistenと、app.jsを読み込むようになっている。app.jsに普段のnodeを記述しておけばok。
念のためpackage.jsonにはdependenciesのバージョンを書き換えておく。使用しているvesionを使える感じに末尾の数字をXにする。
とくにnodeとnpmのバージョンは堅牢にするために以下のように追加
"engines": {
"node": "0.10.X",
"npm": "1.4.X"
}
.gitignore
gitで無視
echo 'node_modules' > .gitignore
herokuへdeploy
mongoDBを使う設定をするために一度heroku createまでやる。
heroku login
git init
git add .
git commit -m "init message"
heroku create
# heroku info, list, etc..
git push heroku master
heroku ps:scale web=1
6行目まではテンプレなので覚える。gitの意味は説明しない。
heroku createした時点で色々情報が出てくる。忘れてしまったら、heroku info とかコマンドで見れます。使い方はheroku helpで。
用意しておいたProcfileのコマンドを呼ぶ?のが7行目です。heroku内で何がおきているかは
heroku logs
heroku logs -t
で見れます。heroku help充実してるんでもっと見ていきたい。
さてアクセスできないmongoDBのレンタル先を探しにいこう。
mongolab
herokuにはmongoDBを使うためのaddonsが提供されている。使えるaddonsはheroku addons:listで見れる。
heroku addons:add [使うaddon]:free
とすると無料版を使える。heroku idにクレジットカード情報を登録していないと、ほとんどのaddonは使えないので、登録します。さて今回使うaddonはmongolabを使えるようにheroku addons:add mongolab:freeをする。
するとheroku内の環境変数にuriが追加されている。
heroku config
heroku config | grep MONGOLAB_URI
環境変数の一覧はheroku config。開発環境と本番環境のNODE_ENV変数の確認にも使える、説明はしない。
2行目で出てくるURIが見慣れたmongoDBアクセスURIだ、これをnode内のmongoDBアクセス設定に追加すればよい。
追加した後に改めて、git add . > git commit -m "second" > git push heroku master でコミットすれば完了だ!
たとえば以下のようにapp.jsを動かせばmongoDBアクセスを確認できる。
mongoose = require "mongoose"
mongoose.on "open", () -> console.log "success"
mongoose.on "error", () -> console.log "failed access"
mongoose.connect "取得したURI"
mongoose.disconnet()
なおデータベースの状況は
herokuにアクセス > 使用application > addons > MongoLab >
で確認できる。
さあ、これで今日からheroku open!!