xxxcaqui.log

ツッコミお待ちしています

Herokuへのデプロイについてまとめてみる

ここのところ、ちょいちょいHerokuにアプリを上げてるにも関わらず、コマンド類がなかなか覚えられないのでざくっとまとめてみる。

前提

  • アプリケーションがGitでバージョン管理されている。

Heroku用のgemを入れる

gem install heroku

これでターミナルからherokuコマンドが使えるようになります。

Gemfileの設定

HerokuのデフォルトDBはPostgreSQL*1なので、Postgre用のgemを入れる。

また、そのままだと「SQLite3無理っす!」みたいな感じで怒られるので、本番環境にはSQLite用のgemを入れないようにする。

gem "pg", group: :production
gem "sqlite3", group: :development

その後、忘れずにbundle installして、git commit。

Heroku上にアプリケーションを作成する

heroku apps:create

デフォルトではランダムなアプリケーション名が与えられるので、任意の名前に変更します。*2

heroku apps:rename your_app_name

2013-04-30追記

上の2つのコメントですが、次のコマンド一発でいけます。

heroku apps:create your_app_name

さあ、デプロイ!

ここが一番簡単。

git push heroku master

git pushするだけでデプロイ出来るなんてHerokuさんステキ! 抱いて!!

その他

Heroku環境でのコマンド実行

rakeコマンドなどをHerokuの環境で行うためには、heroku runコマンドを使用します。

たとえば、データベースの変更を伴うデプロイを行った場合のマイグレーション用コマンドは以下の通り。

heroku run rake db:migrate

メンテナンスモード

Herokuでは「メンテナンス中」みたいなページをコマンドひとつで出すことが出来ます。

heroku maintenance:on

緊急メンテナンスでユーザのアプリケーション利用を止めたい場合やデプロイ時にデータの不整合を起こしたくない場合などに利用できます。

ちなみに、メンテナンスモードからの脱出は次の通り。

heroku maintenance:off

ロールバック

デプロイしたアプリケーションに不具合があって以前のバージョンに戻したい場合。

heroku releases

で今までのデプロイ一覧が表示されるので、左側にあるバージョン番号を指定して

heroku releases:rollback v8

のようなコマンドを実行すると、指定したバージョンまでアプリケーションがロールバックされます。

「バージョン管理」ツールの面目躍如といった感じですね。

ログの監視

Herokuのサーバに直接ログインすることは出来ないので、ログを見るためには次のコマンドを打ちます。*3

heroku logs -t

これで、アプリケーションによって出力されるログをリアルタイムで追跡することが出来るようになります。*4

参考

このエントリを書くにあたって、WEB+DB vol.71を参考にしました。*5

*1:読み方「ぽすぐれ」でおk?

*2:アプリケーション名はHeroku全体で一意である必要があるので、既に使われている名前は弾かれます。

*3:ちなみに、オプションの-tは付けなくても一応動きました。

*4:tail -f log/production.log みたいな感じ。

*5:というか、ほぼ丸パクリです。