Help us understand the problem. What is going on with this article?

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

参考サイト・記事

murakami-mm
aaw yeah
pure-system
大手生命保険会社各社をはじめ、自治体、大手企業など、日本を代表する企業様のIT化を推進・支援しています。
https://www.pure-system.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした