Herokuへデプロイ

アプリケーションをHerokuへデプロイ

アプリケーションをHerokuへデプロイするための手順についてまとめていきます。

Herokuとは

Paasの一つでアプリケーションの公開、運用を行うためのサーバーを提供しているサービスのこと。基本機能だけの場合、無料で使うことができ、デプロイの手間が少なく容易であるというメリットがある。

Herokuへデプロイするための手順

Heroku CLIをインストールする

Herokuへデプロイするアプリケーションのディレクトリで以下を実行する。

brew tap heroku/brew && brew install heroku
heroku --version  # インストールが完了したか確認

Herokuへログインする

heroku login --interactive

EmailとPasswordを要求されるため入力する。

rails_12factoryの導入

rails_12factoryは静的アセットファイルやログの保存先をHeroku用に微調整してくれるGem。 Gemfileのgroup :production内にgem 'rails_12factory'を記述する。

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

Herokuへデプロイするアプリケーションのディレクトリで以下を実行する。

heroku create アプリケーション名
git config --list | grep heroku  # 正しく設定されているか確認(fatal: not in a git directory以外が表示されれば良い。)

heroku createコマンドはHeroku上に公開するためのアプリケーションを作成することができるコマンド。続けてアプリケーション名を記述することで、Heroku上でのアプリケーション名を決めることができる。

Heroku上でMySQLを使えるようにする

アプリケーションをデプロイする前にDBの設定をしておく。HerokuではデフォルトでPostgreSQLというDBが設定されている。そのため、MySQLを使用できるようにするために以下のコマンドを実行する。

heroku addons:add cleardb
# このように出力されていると成功(WARNという警告が出てもそのまま進む)
Creating cleardb on ⬢ ajax-app-123456... free
Created cleardb-vertical-00000 as CLEARDB_DATABASE_URL
Use heroku addons:docs cleardb to view documentation

clearDBアドオンとは、MySQLを使うためのツール。これを追加することでHerokuでMySQLを使うことができるようになる。

設定を変更する

Railsを使う場合、MySQLに対するGemについて考慮する必要があるため、以下のコードを実行して設定を変更する。

heroku_cleardb=`heroku config:get CLEARDB_DATABASE_URL`  # ClearDBのURLを変数heroku_cleardbに格納
heroku config:set DATABASE_URL=mysql2${heroku_cleardb:5}  # DBのURLの再設定

# 出力結果
Setting DATABASE_URL and restarting ⬢ ajax-app-123456... done, v◯◯
DATABASE_URL: mysql2://000000000000:0aa0000@us-cdbr-east-02.cleardb.com/heroku_aaa00000000?reconnect=true

Heroku上で環境変数を設定する

Heroku上で環境変数を設定するために以下のコードを実行する。

heroku config:set RAILS_MASTER_KEY=`cat config/master.key`
heroku config  # Heroku上の環境変数一覧を表示

アプリケーションをHerokuへpushする

以下のコマンドを実行し、Herokuへアプリケーションをpushする。

git push heroku master

Heroku上でマイグレーションファイルを実行する。

Heroku上のDBにはマイグレーションの情報が反映されていないため、以下のコマンドを実行する。

heroku run rails db:migrate

heroku runコマンドはHeroku上で実行したいコマンドに用いる。

公開を確認する

以下のコマンドを実行する。

heroku apps:info

heroku apps:infoコマンドはHerokuへデプロイされたアプリケーションの情報を見ることができる。ここに記述されているURLへアクセスすれば、公開したアプリケーションにアクセスすることができる。

デプロイ後のエラー対応方法

まず、エラーログを確認する。エラーログとは、アプリケーションなどのシステム実行時に発生したエラーを記録したもの。以下のコマンドを実行すると確認することができる。

heroku logs --tail --app <<アプリケーション名>>  # --tailはログの最後の10行だけを表示するためのオプション

Herokuへのデプロイを行ってみて

Heroku以外でもよくあるが、環境変数を設定し忘れて接続できないことがある。本番環境をAWSに置き換えたりするときにエラーが出たらまず環境変数を疑ってみる。
手順はたくさんあるが、焦らず一つずつやっていくことが大事。