85
86

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Express4 + mongoDBアプリケーションをherokuで動かす

Last updated at Posted at 2014-05-12

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には

package.json
		  "scripts": {
		    "start": "node ./bin/www"
		  },

と記述されているが、これで良い。wwwの中を見ると、httpのlistenと、app.jsを読み込むようになっている。app.jsに普段のnodeを記述しておけばok。

念のためpackage.jsonにはdependenciesのバージョンを書き換えておく。使用しているvesionを使える感じに末尾の数字をXにする。
とくにnodeとnpmのバージョンは堅牢にするために以下のように追加

package.json
		  "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アクセスを確認できる。

app.coffee
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!!

85
86
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
85
86

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?