Node.jsで作成したWebアプリ(Git管理)のデプロイ方法です。
個人的にハマったApplication Errorについても記載しています。
"node" : "v4.1.1",
"npm" : "2.14.4",
"express": "^4.13.4"
#ローカル準備編
##Procfileを作成
アプリの起動コマンドを記述します。
アプリの第一階層に設置します。
web: node server.js
##package.json/"dependencies"に使用しているパッケージを全て記述。
server側で使用しているパッケージを記述します。
ひとつでも抜けていると"Application Error"になるので注意してください。
"dependencies": {
"body-parser": "^1.14.2",
"express": "^4.13.4",
"request": "2.61.0"
}
もしApplication Errorが出る場合は
使用しているパッケージが記述されているか確認してみてください。
僕の場合はグローバルインストールしていたパッケージが
抜けていたためにハマりました。
##ポート番号の記述を変更
app.listen(8000);
↓↓↓
app.listen(process.env.PORT || 8000);
これはかなりハマりました。。。
Herokuでは明示的にポート番号を指定する必要があります。
##.gitignoreを追加
既にGitHubにpushしていたら設置済みかもしれませんが
node_modulesを除外する設定を記述します。
node_modules/
##package.jsonに"engines"を追加、
アプリを堅牢にするため
versionの末尾を"X"にしておくと良いそうです。
"engines": {
"node": "v4.1.X",
"npm": "2.14.X"
}
cf."engines"の説明
#Herokuにデプロイ編
##HerokuへSignUpしてアプリを追加します。
こちらが詳しいです。
今からはじめるReact.js〜Herokuへのデプロイ〜
HerokuのDashboardから
追加したアプリのDeployページへ移動すると
デプロイ方法が書いてありますのでそれに従いましょう。
##heroku toolbeldのインストール
Herokuコマンドが使えるようになります。
https://toolbelt.heroku.com/
##Herokuへログインします。
$ heroku login
##リモートリポジトリにHerokuアプリを追加します
$ cd [my-project]/
$ git init //既にgitをinitializeしている場合は不要
$ heroku git:remote -a [my-app-name]
##gitにcommitし、Herokuにpushしてデプロイ完了です!
$ git add .
$ git commit -am "make it better"
$ git push heroku master
無事デプロイに成功すると
remote: Verifying deploy.... done.
To https://git.heroku.com/[my-app-name].git
xxxxxxx..xxxxxx master -> master
と表示されるはずです。
おつかれさまでした!
####▼ちなみにもういったん消しちゃうときはコチラ
git remote remove heroku
##参考リンク [Node.js + Express を Heroku で動かすまでの手順まとめ](http://tacamy.hatenablog.com/entry/2013/02/16/235127) [今からはじめるReact.js〜Herokuへのデプロイ〜](http://qiita.com/kuniken/items/70c2b5cd77d7c9301bcf) [Express4 + mongoDBアプリケーションをherokuで動かす](http://qiita.com/runtBlue/items/0731f6f9d4bd27cd2dbd) [Node.jsをHerokuへデプロイ](http://qiita.com/yoh-nak/items/80e51197410c7f956ccd) [Node.jsのアプリをHerokuにデプロイするときポート番号に気をつけなくちゃいけない](http://qiita.com/KENJU/items/1d61c9fb45496feed1bf) [Heroku + node.js error (Web process failed to bind to $PORT within 60 seconds of launch)](http://stackoverflow.com/questions/15693192/heroku-node-js-error-web-process-failed-to-bind-to-port-within-60-seconds-of)