Rails
MySQL
Heroku

Herokuへのデプロイ方法【Heroku+Rails+MySQL】


本記事について

RailsアプリをHerokuへデプロイする機会があったので、備忘録として当記事を作成しました。

ほぼ参考にさせていただいたサイトや記事の通りですが、自分が詰まった部分については詳しく記載しました。


環境:


  • MacOS 10.13.4

  • Rails 5.2.0

  • DB: MySQL


Railsプロジェクト作成

新規Railsプロジェクトの作成手順(現在作成中) 参照


※Herokuのアプリ名には、英数字とハイフンしか使用できないので、このとき作るアプリの名前も英数字とハイフンで作成すること!!!


作成したRailsプロジェクトのGit管理


  • Gemfile修正

    sqlite3が入っている場合、production環境でsqlite3が利用されないように修正する。

gem 'sqlite3', group: [:development, :test]

mysql2を追加

gem 'mysql2'


  • コマンドライン上で、作成したRailsプロジェクトのディレクトリに移動

  • 以下のコマンドを実行すると、プロジェクトがGitで管理されるようになる。

$ git init

$ git add .
$ git commit -m "<適当なコミットメッセージ>"


  • 以下のコマンドで、コミットログに問題がないか確認

$ git log


Herokuのアカウント作成

https://jp.heroku.com/ を参照


Herokuのtoolbeltインストール

$ brew install heroku/brew/heroku


  • Herokuのバージョンを確認

$ heroku -v


SSHキーの追加


キーの作成(現在作成中)

SSHキーの設定関連(現在作成中)


作成したHerokuアカウントにキーを追加


  • herokuにログイン

$ heroku login


  • 以下のコマンドでSSHキーがherokuのアカウントに追加されます。

$ heroku keys:add ~/.ssh/id_rsa.pub

id_rsaの部分は、先ほど作成したSSHキーの名前に置き換えること。


  • 追加に成功していれば、以下のコマンドで追加したSSHキーが確認できます。

$ heroku keys


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


  • コマンドライン上で、先ほど作成したRailsプロジェクトのディレクトリに移動

  • Herokuにアプリケーションを作成

$ heroku apps:create <アプリの名前>

<アプリの名前>には、先ほど作成したRailsプロジェクト名を入れる。


※Herokuのアプリ名には英数字とハイフンしか使えない。


  • Herokuのリモートリポジトリを確認

$ git remote -v

上記コマンドを実行すると以下のように出力される。

heroku https://git.heroku.com/<アプリの名前>.git (fetch)

heroku https://git.heroku.com/<アプリの名前>.git (push)
origin git@github.com:shou1012/<アプリの名前>.git (fetch)
origin git@github.com:shou1012/<アプリの名前>.git (push)


  • Herokuのアプリケーション名変更

    上記手順で出力された<アプリの名前>が異なっている場合、以下のコマンドでHerokuのアプリケーション名が変更できる。

$ heroku git:remote -a <変更後のアプリの名前>


HerokuのDB設定


DBを追加する

下記コマンドを実行すると、「ClearDB MySQL」というアドオンが「Igniteプラン」で追加される。

$ heroku addons:create cleardb:ignite

以下のようなエラーが出た場合は、Herokuアカウントでクレジットカード情報の登録が必要。

▸    Please verify your account to install this add-on plan (please enter a credit card) For more

▸ information, see https://devcenter.heroku.com/categories/billing Verify now at
▸ https://heroku.com/verify

※アドオンの追加にはクレジットカード情報の登録が必要だが、「Igniteプラン」は無料のため、この設定だけで料金が発生することはない。(2018/7/5(Thu)現在)


詳細はこのURLを参照


Herokuアプリの環境変数設定


  • ClearDBのURL確認

    以下のコマンドで、ClearDBのURLが確認できる。

$ heroku config

=== <アプリの名前> Config Vars
CLEARDB_DATABASE_URL: mysql://<ユーザー名>:<パスワード>@<ホスト名>/<データベース名>?reconnect=true


  • 環境変数の設定

    上記コマンドで表示されたそれぞれの値を変数に設定する。

$ heroku config:add DB_NAME='<データベース名>'

$ heroku config:add DB_USERNAME='<ユーザー名>'
$ heroku config:add DB_PASSWORD='<パスワード>'
$ heroku config:add DB_HOSTNAME='<ホスト名>'
$ heroku config:add DB_PORT='3306'
$ heroku config:add DATABASE_URL='mysql2://<ユーザー名>:<パスワード>@<ホスト名>/<データベース名>?reconnect=true'

※ RailsのGemfileで'mysql2'を使用しているので、DATABASE_URLmysql2://で始める必要がある。


設定内容を確認すると、以下のように表示される。

$ heroku config

=== <アプリの名前> Config Vars
CLEARDB_DATABASE_URL: mysql://<ユーザー名>:<パスワード>@<ホスト名>/<データベース名>?reconnect=true
DATABASE_URL: mysql2://<ユーザー名>:<パスワード>@<ホスト名>/<データベース名>?reconnect=true
DB_HOSTNAME: <ホスト名>
DB_NAME: <データベース名>
DB_PASSWORD: <パスワード>
DB_PORT: 3306
DB_USERNAME: <ユーザー名>


Herokuへデプロイ


Railsプロジェクトに必要な準備



  • config/environments/production.rbに以下を追記

    (この辺りの設定に関しては、後々修正します。)

config.assets.compile = true

config.assets.initialize_on_precompile=false


  • rootへのルーティング作成
    Herokuでアプリケーションにアクセスした時、最初に開くページをRails側で設定してください。


Herokuへデプロイ


  • ローカルリポジトリをHerokuへpush

$ git push heroku master

master以外のローカルブランチをpushする場合は、以下のコマンドを実行してください。

$ git push heroku <ブランチ名>:master


  • HerokuのDBのmigrate

$ heroku rake db:migrate


  • アプリケーションにアクセス
    以下のコマンドを実行すると、ブラウザでアプリケーションが開きます。

$ heroku open


参考サイト・記事