環境
- Ruby 2.6.6
- Rails 5.2.4.4
- Vue 2.6.11
- MySQL 8.0→5.7
流れ
- herokuデプロイ用のブランチを作成する
- 切ったブランチからherokuにデプロイする
- DNSの設定をする
database.ymlの変更
|
|
デプロイ
|
|
Getting Started on Heroku with Rails 5.x | Heroku Dev Center
ここからがデプロイ手順。
- Getting Started on Heroku with Rails 5.x | Heroku Dev Center
rails_12factor
を入れていなかったことに気づいた(´・ω・`)まあ大丈夫。
- Getting Started on Heroku with Rails 6.x | Heroku Dev Center
dumpデータの移行
|
|
【MySQL】エラー:Warning: A partial dump from... - Qiita
ClearDBだとうまくいかないのでJawsDBにする
本番のdumpファイルをインポートしたところ、こんな感じで一部のテーブルのデータがだめぽ。
[クエリ 14 でエラー] Specified key was too long; max key length is 767 bytes
[クエリ 16 でエラー] Table 'heroku_eb9b292d281ded2.ar_internal_metadata' doesn't exist
[クエリ 17 でエラー] Table 'heroku_eb9b292d281ded2.ar_internal_metadata' doesn't exist
[クエリ 18 でエラー] Table 'heroku_eb9b292d281ded2.ar_internal_metadata' doesn't exist
[クエリ 19 でエラー] Table 'heroku_eb9b292d281ded2.ar_internal_metadata' doesn't exist
[クエリ 54 でエラー] Specified key was too long; max key length is 767 bytes
[クエリ 56 でエラー] Table 'heroku_eb9b292d281ded2.schema_migrations' doesn't exist
[クエリ 57 でエラー] Table 'heroku_eb9b292d281ded2.schema_migrations' doesn't exist
[クエリ 58 でエラー] Table 'heroku_eb9b292d281ded2.schema_migrations' doesn't exist
[クエリ 59 でエラー] Table 'heroku_eb9b292d281ded2.schema_migrations' doesn't exist
[クエリ 74 でエラー] Specified key was too long; max key length is 767 bytes
[クエリ 76 でエラー] Table 'heroku_eb9b292d281ded2.tweets' doesn't exist
[クエリ 77 でエラー] Table 'heroku_eb9b292d281ded2.tweets' doesn't exist
[クエリ 78 でエラー] Table 'heroku_eb9b292d281ded2.tweets' doesn't exist
[クエリ 79 でエラー] Table 'heroku_eb9b292d281ded2.tweets' doesn't exist
[クエリ 80 でエラー] Table 'heroku_eb9b292d281ded2.tweets' doesn't exist
[クエリ 85 でエラー] Specified key was too long; max key length is 767 bytes
[クエリ 87 でエラー] Table 'heroku_eb9b292d281ded2.users' doesn't exist
[クエリ 88 でエラー] Table 'heroku_eb9b292d281ded2.users' doesn't exist
[クエリ 89 でエラー] Table 'heroku_eb9b292d281ded2.users' doesn't exist
[クエリ 90 でエラー] Table 'heroku_eb9b292d281ded2.users' doesn't exist
|
|
utf8とutf8mb4の文字コードの違いによるものなので、いろいろ解決法があるけど、多分一番楽なのはJawsDBにすること。
Heroku(Laravel)で自作アプリをHerokuにデプロイしようとしたらマイグレーションエラーが起きたので、ClearDB(MySQL5.5)からJawsDB(MySQL8.0)に変更した時の備忘録 | LaptrinhX
Rails×React×MySQLなSPAをHerokuにデプロイする手順 - 日々の学びのアウトプットするブログ
DNSの設定
お名前ドットコム
ヘッダーの「DNS」→「ドメインのDNS関連機能設定」→サイドバーの「ネームサーバーの変更」でこの画面に遷移する。
現在はAWSに向けているので、一旦初期化する。
DNSの設定はherokuでするので、お名前ドットコムではいじらない。
最初、Google Public DNSで確認したところ、宛先がまだAWSになっている。
ドメインにアクセスしたときにこの画面になればよし。
Automated Certificate Management Failing
1 domain failed validation.
これは後でいい感じになるのでこれでよし。
PointDNS
「Add Record」から、以下のレコードを追加する。
お名前.comの「DNSレコード設定」はこんな感じになる。
$ git push heroku 192_heroku:main
...
remote: Removing msgpack (1.3.3)
remote: Bundle completed (9.92s)
remote: Cleaning up the bundler cache.
remote: -----> Installing node-v12.16.2-linux-x64
remote: -----> Installing yarn-v1.22.4
remote: -----> Detecting rake tasks
remote: -----> Preparing app for Rails asset pipeline
remote: Running: rake assets:precompile
remote: rake aborted!
remote: LoadError: Could not load the 'mysql' Active Record adapter. Ensure that the adapter is spelled correctly in config/database.yml and that you've added the necessary adapter gem to your Gemfile.
|
|
secret_key_baseを追加する
デフォルトでheroku configに入っている値は違う値なので、rails credentialsのsecret_key_baseをheroku configに設定する。
|
|
|
|
secret_key_baseがどういうふうに扱われているか | oknm.jp
スケジューラの登録
|
|
UTCなので、AM6:00のタスクはPM21:00に。
初めてHerokuで独自ドメインを公開するあなたへ - Qiita
Custom Domain Names for Apps | Heroku Dev Center
Automated Certificate Management | Heroku Dev Center
実際の作業内容はこちら。でも、git以外の方がいろいろやった。
herokuに移行 by aiandrox · Pull Request #203 · aiandrox/hashlog