expressとMongoDBを使ったWebアプリをHeroku上にデプロイできるかチャレンジしたよ。
Qiitaにもちょいちょい手順が載っているけど、最新のherokuだとちょっと手順が違うみたい。
https://devcenter.heroku.com/articles/getting-started-with-nodejs#introduction
ここの手順にしたがって進めてみる。
1) Heroku Toolbeltをダウンロードしてインストールする
2)ターミナルから「heroku login」でログインできることを確認
HerokuToolbeltにアップデートがあれば更新されます。
3)デプロイしたい環境のトップディレクトリで(まだやってなければ)
git init
.gitignore編集(node_modulesなど指定しておく)
git add .
git commit -m "hoge"
としておく
4) 「heroku create」でアプリ生成。アプリ名を指定したい場合は引数で指定する
5)「git push heroku master」でpushする
package.jsonがあれば自動で依存モジュールは
インストールしてくれるみたいです
が、ここでハマる
package.jsonで「FeedParser」と指定していたのだけど、not foundと言われてエラーになる。ローカルだと見つかってますがなと試行錯誤した末「feedparser」としたら成功しました。
6)「heroku ps:scale web=1」インスタンス数を指定する
とりあえずデプロイはこれでOK。
pushしたときにアドレスが出ているのでアクセスできることを確認。
お次にMongoDBのセットアップ。
HerokuのAddOnから設定します。
Sandbox版なら無料で使えるmongolabを使います。
Sandboxを選択した状態で右下にコマンドが出ているのでコピーしてコンソールにで実行します。
カード情報を登録していないとエラーになるので無料でも登録しておきます。
コマンドが正常に終わればherokuのダッシュボードから対象のアプリを選択すると「mongolab」がAddonとして追加されているのでクリックするとmonglabの設定ページに飛びます。
mongoのシェルでのアクセス手順なんかも載っています。
また、コマンドラインから「heroku config」とやると「MONGOLAB_URI」としてアクセス先が載っています。
この中にdbsuserとdbpasswordが載っているのでチェックしましょう。
db名は変えられません。「use hoge」なんてやって操作すると「not authorized」と怒られます。
MONGOLAB_URIの値でmongoose.connectしてやればmongoDBにアクセスできます。
思いのほか、ハマらずに行けました。