138
142

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Last updated at Posted at 2019-01-07

本記事について

RailsアプリをHerokuへデプロイする機会があったので、備忘録として当記事を作成しました。
ほぼ参考にさせていただいたサイトや記事の通りですが、自分が詰まった部分については詳しく記載しました。

2023/3/26追記:
現在、herokuの無料プランは終了しています。

環境:

  • MacOS 10.13.4
  • Rails 5.2.0
  • DB: MySQL

Railsプロジェクト作成

脳死 rails new するためのコマンド - Qiita 参照
※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 tap heroku/brew && brew install 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プラン」は無料のため、この設定だけで料金が発生することはない。(2022/3/20(Sun)現在)
詳細はこの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

参考サイト・記事

138
142
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
138
142

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?