Rails

【MacOS/Rails/MySQL/Heroku】11枚の画像を用いて詳しく解説!Herokuを用いたデプロイ手順をまとめてみた

Heroku

 

今回は、MySQLを使用したRailsアプリケーションをHerokuでデプロイする手順について解説したいと思います。簡単なデバッグ方法も解説するので、予期せぬエラーが出た際の参考になればと思います。

この記事ではMac OSを使用したデプロイについて解説しています。

MySQLを使用したアプリケーションのデプロイにはクレジットカードが必須となります。予めご用意ください。

Herokuとは

Heroku

 

Herokuとは、アプリケーションを実行するためのプラットフォームを提供しているサービスです。Herokuを使用することで簡単に本番環境にデプロイすることができます。

Herokuにはいくつかのプランがあり、無料でも本番環境にデプロイすることが可能です。

無料プランの場合、未認証アカウントでは月間550時間程しかプロセスを動かすことはできませんが、クレジットカードを登録することで月間1000時間の稼働が可能になります。

 

アプリケーションを実行するためのプラットフォームを提供しているサービス

こちらはPaaS(Platform as a Service)と呼ばれています。

PaaSを使用したデプロイは、サーバー構成などのカスタマイズが制限されますが、注力すべき部分とそれ以外を割り切った運用をすることが可能です。

 

PaaSの他には、IaaS(Infrastructure as a Service)と呼ばれるサービスがあります。

Amazon EC2GCP(Google Cloud Platform)がその代表例として挙げられ、ネットワーク環境などを含めた環境構築ができるサービスとなっています。

IaaSは大規模なWebサービスのデプロイに使用されます。

Herokuでのデプロイ手順

ではここから、Herokuを用いたデプロイの手順について解説していきます。

まずは、今回デプロイするアプリケーションの概要について見ていきましょう。

デプロイするアプリケーションは何でも構いません。

Herokuの会員登録

デプロイするにはHeroku上での会員登録が必要となります。

以下のリンクからHerokuにアクセスし、「無料で新規登録」をクリックしましょう。

↓ ↓ ↓

 

新規登録

 

以下の必要項目を全て入力し、「無料アカウント作成」をクリックします。

入力項目

 

すると登録したメールアドレスに確認メールが届くので、そちらからHerokuに再度アクセスしましょう。

確認メール

 

最後にパスワードを設定します。

パスワード設定

 

パスワード設定後、Herokuのダッシュボードに遷移すれば完了です。

ダッシュボード

クレジットカードの登録

クレジットカードをHeroku上で登録することで、月間の稼働時間をあげるだけでなく、本番環境でMySQLを使用することができます。

Herokuの初期設定ではデータベースはPostgreSQLになっています。

 

以下の画像の手順でクレジットカードの登録を行いましょう。デビットカードでの登録も可能です。

クレジットカード登録 クレジットカード登録 クレジットカード登録

 

「Save Details」をクリック後、以下のようなページに遷移すればクレジットカードの登録が完了です。

クレジットカード登録完了画面

Heroku CLIのインストール

次に、Herokuでアプリケーションのデプロイなどを操作するためのHeroku CLIをインストールしましょう。

The Heroku Command Line Interface (CLI) makes it easy to create and manage your Heroku apps directly from the terminal. It’s an essential part of using Heroku.

Herokuコマンドラインインターフェイス(CLI)を使用すると、ターミナルから直接Herokuアプリを簡単に作成および管理できます。これはHerokuを使用する上で不可欠な部分です。

 

以下のコマンドを打ち込み、Heroku CLIをインストールしましょう。

% brew tap heroku/brew && brew install heroku

 

Heroku CLIがきちんとインストールされているか、以下のコマンドで確認します。

% heroku --version

以下のような表示がされればインストールが成功しています。
heroku/7.0.0 (darwin-x64) node-v8.0.0

 

インストール方法は以下の記事を参考にしています。

The Heroku CLI:https://devcenter.heroku.com/articles/heroku-cli

Herokuへログイン

Heroku CLIのインストール後は、Herokuへログインしましょう。

ログインするには以下の流れを実行する必要があります。

  1. heroku loginを入力
  2. エンターキーを押下
  3. 自動的にブラウザに遷移するので、「Log In」をクリック
  4. ブラウザを閉じる

 

具体的に見ていくと、以下の流れになります。

% heroku login
heroku: Press any key to open up the browser to login or q to exit:
①ここでエンタキーを押下する。

②自動的にブラウザに遷移し、ログインが求められる。

③ログイン後、ブラウザを閉じると以下のような文言が表示される。
Opening browser to https://cli-auth.heroku.com/auth/cli/browser/e02fb933-fad6-41ba-8fc5-727c71f1dee6?requestor=SFMyNTY.g3QAAAACZAAEZGF0YW0AAAAPMTI2LjI1NS4xMDQuMTUyZAAGc2lnbmVkbgYAEAO2v3QB.eV_pNcbnj7x95uF5atcZE3i56A2-BPPcUYYSl9T0wKQ
Logging in... done
Logged in as 登録したメールアドレス
Herokuへログイン Herokuへログイン

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

ここからは実際にHeroku上でアプリケーションを作成し、デプロイ作業に取り掛かっていきます。

まずは以下のコマンドを打ち込み、Heroku上でアプリケーションを作成しましょう。ブラウザ上でもアプリケーションの作成は可能ですが、今回はターミナルで実行していきます。

% heroku create favorite-app-2
「favorite-app」という名前はすでに使われていたため、「favorite-app-2」と命名しました。
「heroku create [アプリケーション名]」を打ち込むことで、Heroku上にアプリケーションを作成することができます。
アプリケーション名に「アンダーバー(_)」を含むとエラーになるので、命名には注意してください!

 

以下のコマンドを打ち込み、正しくアプリケーションが作成されたか確認します。

% git config --list --local | grep heroku

以下のような文言が出れば成功。
remote.heroku.url=https://git.heroku.com/favorite-app-2.git
remote.heroku.fetch=+refs/heads/*:refs/remotes/heroku/*

MySQLの追加

続いてHeroku上にMySQLを追加しましょう。

前述しましたが、HerokuではデフォルトでPostgreSQLが設定されているため、MySQLは手動でインストールする必要があります。

以下のコマンドを打ち込んでください。

% heroku addons:create cleardb:ignite

以下のような文言が出れば成功。
Creating cleardb:ignite on ⬢ favorite-app-2... free
Created cleardb-shallow-34916 as CLEARDB_DATABASE_URL
Use heroku addons:docs cleardb to view documentation
ClearDBというクラウド上でMySQLを使うためのサービスがあります。プランはがいくつかありますが、igniteは無料です。

MySQLの接続設定

次にHeorku上で作成したアプリケーションの環境変数を設定していきます。

まずは「heroku config」というコマンドを入力し、データベース情報を確認しましょう。

% heroku config

以下のように出力される。
=== favorite-app-2 Config Vars
CLEARDB_DATABASE_URL: mysql://b5a7353ff4e54a:ce7955d@us-cdbr-east-02.cleardb.com/heroku_11ba3695e7f62e?reconnect=true

 

今回アプリケーションではmysql2というGem使用しているため、CLEARDB_DATABASE_URLのmysqlの箇所を「mysql2」に変更します。

% heroku config:set DATABASE_URL='mysql2://ここは変更しない'

以下のような文言が表示されれば完了。
Setting DATABASE_URL and restarting ⬢ favorite-app-2... done, v5
DATABASE_URL: mysql2://b5a7353ff4e54a:ce7955d@us-cdbr-east-02.cleardb.com/heroku_11ba3695e7f62e?reconnect=true

Herokuへデプロイ

ここまでで一通りに設定が完了しました。

後は、Herokuへプッシュ(デプロイ)しましょう。

% git push heroku master
今後、コードの変更をHeroku上にも反映させたい場合にも「commit」→「push」を実行する必要があるよ。

 

デプロイ後、Heroku上でマイグレートを実行しましょう。

% heroku run rails db:migrate

 

これでHerokuを使用したデプロイ作業が完了しました。以下のコマンドを入力し、きちんと本番環境に反映されているか確認しましょう。

% heroku open
上記コマンドを入力することで、自動的にブラウザに遷移します。

 

無事にアプリケーションが反映されています。

本番環境

トラブルシューティング

ログの確認

デプロイの過程で予期しないエラーが起き場合があります。

しかしログを確認することで、その原因が判明しすぐに解決できる可能性があるので、ぜひこの機会にログを確認する方法をマスターしましょう。

 

ログの確認には以下のコマンドを入力します。

% heroku logs

 

しかし上記コマンドで表示されるログは非常に長く、かつ見るべきログは最下部にあるので効率がよくありません。

代わりに以下のコマンドを入力しましょう。

% heroku logs --tail
「–tail」オプションをつけることで、最新のログのみ表示させることができます。

コンソールの実行

Heroku上でも「rails console」を実行することが可能です。

以下のコマンドを打ちこみ、実際の挙動を確かめてみてください。

% heroku run rails c
Running rails c on ⬢ favorite-app-2... up, run.9636 (Free)
Loading production environment (Rails 6.0.3.2)
 pry(main)> puts 1 + 1
2

Heroku CLIのアンインストール

どうやってもうまく行かないという場合は、アンインストール試してみることも1つの手です。

アンインストールは以下の手順で行うことができるので、頭に入れておきましょう。

% brew uninstall heroku
% rm -rf ~/.local/share/heroku ~/Library/Caches/heroku

参考

The Heroku CLI:
https://devcenter.heroku.com/articles/heroku-cli

Getting Started on Heroku with Rails 6.x:
https://devcenter.heroku.com/articles/getting-started-with-rails6

 

 

今回はMySQLを使用したRailsアプリケーションをHerokuでデプロイする手順について解説しました。Herokuを使用することで手軽にデプロイ作業ができるので、ぜひ取り組んでみてください。