#はじめに
herokuのデプロイ手順って忘れがちな上に、何をやっているのかがわかりにくいですよね。
今回は手順と、コマンドの意味に焦点を絞ってまとめました。
また、あるあるエラーもまとめていますので、ご確認ください!
#はじめてデプロイをする場合
※既にデプロイ経験がある場合は③からスタート
###1、Herokuにアカウント登録する
https://signup.heroku.com/login
へアクセスしアカウントの新規登録をする
###2、Heroku CLI(コマンドラインツール)をインストールする
herokuをターミナルから動かすことができるツールの導入。
どこのディレクトリで実行しても大丈夫。
作業間違えを減らすために、デプロイしたいアプリのディレクトリでやるのがお勧め。
% brew tap heroku/brew && brew install heroku
参考:公式ドキュメント
https://devcenter.heroku.com/articles/heroku-cli
###3、herokuへログインする
Herokuへログインするためのコマンド
% heroku login --interactive
=> Enter your Heroku credentials.
//メールアドレスを入力し、エンターキーを押す
=> Email:
//パスワードを入力して、エンターキーを押す
=> Password:
//登録したメールアドレスでログインできれば成功
###4、masterブランチへcommitする
GitHubでの操作のため詳細は割愛。忘れがちなので注意。
###5、Heroku上にアプリケーションを作成する
デプロイしたいアプリのディレクトリに移動して作業する
% pwd //デプロイしたいアプリのディレクトリにいることを確認
% heroku create アプリ名
% git config --list | grep heroku
でfatal: not in a git directory以外が表示されていればOK
###6、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://に変更されていることも確認しておくこと。
###7、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
###8、Herokuで利用するStackを変更
stackとは、herokuにおけるアプリケーションの動作環境のこと。
rubyのver.2.6.5が作動するheroku-18を指定する。
% heroku stack:set heroku-18 -a
###9、Herokuへアプリケーションの情報をpushする
GitHubのリモートリポジトリにあるマスターの内容が反映される。
この時、リモートのマスターを最新の状態にしていないと、意図していない状態でherokuにアップされることになる。
% git push heroku master
###10、Heroku上でマイグレーションを実行する
ローカル環境と同じく、DBを作ったらマイグレートが必要。
いつものコマンドの頭に heroku run を付けただけ。
% heroku run rails db:migrate
###11、デプロイできたかを確認する
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/
#デプロイ済みのアプリケーションに変更修正を加えた場合
###1、変更修正をcommitする
GitHubデスクトップでの作業。割愛。
###2、ブランチを作成していた場合は、masterブランチへマージする
忘れがちなので注意。
あくまでmasterの情報がherokuへ反映されるので、ブランチを切っていた場合はマスターへ変更を反映させよう。
###3、Heroku上にpushする
初めてデプロイした時のコマンドと一緒。
% git push heroku master
###4、(テーブルに変更を加えた場合は)Heroku上でマイグレーションを実行する
初めてデプロイした時のコマンドと一緒。
% heroku run rails db:migrate
#あるあるエラーの原因と対処法(作業中)
###1、間違ったディレクトリからデプロイした
####原因
デプロイはプッシュしたいアプリのディレクトリから行う必要があるが、間違ったディレクトリで heroku create をかけてしまったパターン。空のアプリがcreateされている状態。
heroku addons:add cleardb が弾かれて気がつくことが多いイメージ。
####対処法
herokuで誤ってcreateした情報を削除する必要がある。
ターミナルで以下コマンドを実行
% heroku apps:destroy --app アプリ名 --confirm アプリ名
削除後、正しいディレクトリへ移動して、heroku createからやり直す。
###2、mysql2
Mysql2::error::ConnectionError (Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)