HerokuでNodeアプリ公開してみた
自分で作ったnodeアプリを公開したいと思いやってみた。ちなみにアプリケーションにはsocket.ioを使ってリアルタイム通信ができるようにした。
githubリポジトリがあり、アプリケーションがデプロイできる状態であることを前提とする。
アプリケーションのコードとherokuのURLは以下。
githubのURL
herokuにデプロイしたアプリケーションのURL
まず最初にCLIツールをインストール
これでHerokuにログインするらしい。もしHerokuアカウントがない場合はアカウントを作る。
公式サイトでインストーラがあるでのインストール
ログイン
heroku login
コマンドでログインする。
メールアドレスとパスワードを聞かれるので入力。
デプロイ先を作る
heroku create
コマンドでソースコードをアップする場所を作る。
自分の場合は以下のような出力が出た。
Creating app... done, oung-mesa-49188
https://young-mesa-49188.herokuapp.com/ | https://git.heroku.com/young-mesa-49188.git
この左側のURLがアプリケーションのURLになる。
アプリケーションのデプロイ
デプロイのコマンドは以下。
git push heroku master
自分の場合はこれをやったらエラー出た。なんでだろう?と思いエラーログを見た。
logのコマンドは
heroku logs --tail
みるとアプリケーションに必要なモジュールがインストールされていないとのこと。
package.json
普通にデプロイするとpackage.jsonのdevDependences に書かれたモジュールが無視される。
そこでdependencesのところにモジュールをすべて記入した。その後もう一度デプロイするとうまくいった。あとから、調べるとdevDependences書かれたモジュールをインストールさせるオプションのコマンドがあった。めんどくさい人はdependencesに記入。
変更後、実行コマンド
git add -u
git commit -m "change package.json"
git push heroku master
ブランチを切っている場合のデプロイ方法
ブランチを切っていると
git push heroku master
コマンドではうまくいかない。
以下のコマンドの場合うまくいく。
git push heroku ブランチ名:master
デプロイされたアプリケーションを触る
heroku open
でアプリケーションのページに遷移する。
mongodbのaddonを使う
アドオンを使うにはクレジットカードの登録が必要なのでherokuのbillingのところから登録。
登録後
heroku addons:add mongolab:sandbox
でmongodbが使えるようになる。ちなみにsandboxは無料。
heroku config
でMongoDBのURLが見れるのでコードの設定変更する。自分の場合は以下のように変更。
var mongoose = require('mongoose');
var mURI='monngodbのURLをここに書く';
mongoose.connect(mURI,function(err){
if(err){
console.log(err);
}
});
・・・・
socket.ioを使う
クライアント側のコードが違っていたので自分はつまずいた。ローカルでやるときとは変えなくてはならない。var socket = io();
に変更しましょう。
<script type="text/javascript" src="/socket.io/socket.io.js"></script>
<script type="text/javascript">
var socket = io();
・・・
おわり
とりあえずこれでデプロイの方法は終了です。
ものすごく簡単にherokuにデプロイができるのでアプリケーションの公開におすすめ。無料です。
コードをgithubに公開しているのでぜひ見てください。