Railsで作成したアプリをインターネット上に公開したいときには、デプロイという手作業が必要になります。こんなときHerokuを使えば、簡単にデプロイをすることができます。
ただ、herokuのデプロイ手順って忘れがちな上に、何をやっているのかがわかりにくいですよね。
今回は手順と、コマンドの意味に焦点を絞ってまとめました。
また、あるあるエラーもまとめていますので、アプリのデプロイにお役立てください!
前提
デプロイ手順は、お使いのPC等によって異なります。
今回の記事では以下の前提に基づいて説明をします。
- MacOSを使用している
- rails アプリのデプロイ
- Rubyはver.2.6.5を使用
- データベースはMySQLを使用している
- アプリをGitで管理している
- アプリが完成し、masterブランチへ最新情報のマージが済んでいる
はじめてデプロイをする場合
Herokuにアカウント登録する
まずはHerokuでアカウント登録をしましょう。
アプリのデータベースにMySQLを使用している場合、クレジットカード登録が必要なので手元に用意しておきましょう。
ではHerokuのウェブサイトへアクセスし、実際に新規登録をしていきましょう。
基本的にはサイトの案内通りに情報を入力していけば問題ありません。
ただ、HerokuでMySQLを使用する際はクレジットカードの登録が必須です。
アカウント登録後に右上のボタンから「AccountSettings」→「billing」と遷移し、クレジットカード情報を登録しましょう。
Heroku CLI(コマンドラインツール)をインストールする
つづいてHeroku CLIというツールを導入します。
導入後はターミナルからコマンドを実行することで、Herokuを操作できるようになります。
次のコマンドをターミナルで実行しましょう。
作業ディレクトリはどこでも大丈夫です。(今後の作業間違えを減らすために、デプロイしたいアプリのディレクトリでやるのがお勧め。)
% brew tap heroku/brew && brew install heroku
ソースコードはHeroku公式リファレンスにも載っています。
Herokuへログインする
前回まででターミナル上でHerokuに関するコマンドが実行できるようになりました。
次は、ターミナルからHerokuにログインします。
下記コマンドをターミナルで実行しましょう。実行後、メールアドレスとパスワードの入力を求められます。順次入力していきましょう。
% heroku login --interactive
=> Enter your Heroku credentials.
//メールアドレスを入力し、エンターキーを押す
=> Email:
//パスワードを入力して、エンターキーを押す
=> Password:
//登録したメールアドレスでログインできれば成功
Heroku上にアプリケーションを作成する
ではいよいよ、Heroku上にアプリケーションを作成していきます。
ターミナルで、デプロイしたいアプリのディレクトリにいることを確認後、コマンドを実行します。
% pwd //デプロイしたいアプリのディレクトリにいることを確認
% heroku create アプリ名
% git config --list | grep heroku
fatal: not in a git directory以外が表示されていればOKです
MySQLを使用できるように設定する
続いてデータベースの設定をします。
まず、ClearDBアドオンという、MySQLをHerokuで使えるようにするツールを導入します。
% heroku addons:add cleardb
次に、herokuからDBへアクセスするためのパスを設定します。
パスを変数に入れる
% heroku_cleardb=`heroku config:get CLEARDB_DATABASE_URL`
herokuにDBへのパスをセットする
% heroku config:set DATABASE_URL=mysql2${heroku_cleardb:5}
mysql2を使用している場合、DATABASE_URLの冒頭がmysql2://に変更されていることも確認しておきましょう。
master.keyを環境変数として設定する
MASTER_KEYとは?という解説は以下のページがわかりやすかったので参考までに乗せておきます。
https://hirocorpblog.com/rails-credentials-master/
ではMASTER_KEYをセットしていきます。
% heroku config:set RAILS_MASTER_KEY=`cat config/master.key`
HerokuにMASTER_KEYが反映されていることを確認しましょう。
% heroku config
Herokuで利用するStackを変更
stackとは、herokuにおけるアプリケーションの動作環境のことです。
私の作業環境であるrubyのver.2.6.5では、HerokuデフォルトのStackではエラーが出てしまうため、正常に作動するheroku-18を指定します。
% heroku stack:set heroku-18 -a
Herokuへアプリケーションの情報をpushする
それでは、アプリケーションのソースコードをHerokuに反映させるための処理へ移ります。
HerokuにはGitHubのリモートリポジトリにあるマスターの内容が反映されます。
この時リモートのマスターを最新の状態にしていないと、意図していない状態でherokuにアップされることになりますので注意が必要です。
% git push heroku master
Heroku上でマイグレーションを実行する
ローカル環境と同じく、DBを作ったらマイグレートが必要です
普段実行しているコマンドの頭に heroku run を付けただけです。
% heroku run rails db:migrate
デプロイできたかを確認する
これまでで、デプロイに必要な作業は終了しています。
最後にきちんとデプロイができているかを確認しましょう!
heroku apps:infoでアプリのwebURLを確認、実際にアクセスしてみます。
% heroku apps:info
===アプリ名
Addons: cleardb:ignite
Auto Cert Mgmt: false
Dynos: web: 1
Git URL: https://git.heroku.com/アプリ名.git
Owner: sample@sample.com
Region: us
Repo Size: 165 KB
Slug Size: 56 MB
Stack: heroku-18
Web URL: https:/アプリ名.herokuapp.com/
このweb URLの欄の、 https:/アプリ名.herokuapp.com/ にアクセスしてみて、正常に表示されれば成功です!
デプロイ済みのアプリケーションに変更修正を加えた場合
すでにデプロイ済みのアプリのソースコードを変更した場合、それをデプロイしたアプリに反映させるためには次のような作業が必要です。
実際の流れを見てみましょう。
変更修正をcommitする
Gitでの作業になりますので今回は割愛します。
ブランチを作成していた場合は、masterブランチへマージする
忘れがちなので注意が必要です。
あくまでGitのリモートリポジトリにあるmasterの情報がHerokuへ反映されるので、ブランチを切っていた場合はマスターへ変更を反映させましょう。
Heroku上にpushする
初めてデプロイしたときと同じコマンドです。
% git push heroku master
(テーブルに変更を加えた場合は)Heroku上でマイグレーションを実行する
こちらも、初めてデプロイしたときと同じコマンドです。
% heroku run rails db:migrate
以上がすでにデプロイ済みのアプリに修正を加えた際の手順です。
このあとはデプロイされたアプリにアクセスし、変更点が反映されていることを確認しましょう。
あるあるエラーの原因と解決方法
それでは最後に、Herokuのデプロイに際してよくあるエラーとその解決方法について紹介します。
間違ったディレクトリからデプロイてしまった
原因
デプロイはプッシュしたいアプリのディレクトリから行う必要がありますが、間違ったディレクトリで heroku create をかけてしまったパターン。空のアプリがcreateされている状態。
heroku addons:add cleardb が弾かれて気がつくことが多いイメージです。
対処法
herokuで誤ってcreateした情報を削除する必要があります。
ターミナルで以下コマンドを実行しましょう
% heroku apps:destroy --app アプリ名 --confirm アプリ名
削除後、正しいディレクトリへ移動して、heroku createからやり直しましょう
この記事のまとめ
・Herokuは、アプリケーションをデプロイするためのツールです。
・手順を踏むことで、インターネット上にアプリを公開することができます。
コメント