CODE

HerokuでLaravelをデプロイ方法と手順(MySQL)



herokuのClearDB MySQLと、ローカルのMySQLのバージョン8の『バージョンの差』によって、大きくつまづいたので、もうつまづきたくないという気持ちで備忘録にしました。

 

果たして、需要があるとは思いませんが一応です。。。笑

 

それぞれのバージョン

  • PHP 7.3.8
  • Laravel Framework 5.5.48
  • MySQL 8.0.17
  • エディター:VScode
  • データベースをいじるため:Sequel PRO

前提条件


もうすでにDBの接続や画面遷移などローカルでそこそこ作りあげられていて、いざデプロイと考えている状況を対象にします。

このレベルまでは基本的な参考者一冊をやればできます。「Laravel入門」でいけます。
※『Laravel入門』のレベルアップ版の『Laravel実践開発』という書籍もありますが、このレベルなら特に必要ないので、オススメしません。

created by Rinker
¥3,300 (2020/07/15 15:23:45時点 楽天市場調べ-詳細)

 

 

なぜ今回MySQLからClearDB MySQLにデプロイするのか

 

本来、herokuの推進しているデータベースはPostgreSQLです。その理由は様々ですが主に

 

PostgreSQL であれば、クレジットカードの登録が必要ない

 

などの理由があげられます。しかし、初心者というかこれからエンジニアになろうという人間にとってはMySQLは

 

  • 一番教材も多い。初心者がPHPを学習すると通る道だと思う
  • Sequel PROなどのGUI(データベースを可視化して、いじれれるアプリ)が使えるものが多い
  • 少し前にはバージョン8も出たことなど、将来性も一番有力なのでは?

 

なので、あえてClearDB MySQLを使います。では、具体的に流れをメモっときます。(なぜの部分は暇があれば、記述します。とりあえず、やることリストです。)

 

herokuにデプロイする

 

 

事前準備


ClearDB MySQLでは、バージョンが5.7未満なので、ローカルではできていたものが、後々マイグレーションした時にエラーになってしまうので、最初に直してからherokuを使っていきます。

『UTF-8』に変更する


Laravelの5.4〜は『utf8mb4』です。それを、『UTF-8』にします。ただし、『絵文字』は使えなくなります。

 

byte数の制約を回避 & HTTPSの設定


ClearDB MySQLでは、5.7未満なので、ユニーク制約を付けたカラムはbyte数の制約で引っかかるので、その設定。

 

そして、なんか推奨されてるHTTPSの設定。一つの文だけでできるらしいので、とりあえずやっときます。

 

用途はよくわからないが、やらなければならないこと

 

herokuでアプリを作成&ClearDB MySQLにマイグレーション


主な流れとしては以下になります。

  1. herokuにアプリを作成
  2. Gitとつなぐ
  3. ギットプッシュする
  4. heroku上にデータベースClearDB MySQLを作成
  5. 環境変数を合わせていく
  6. マイグレーションする
  7. URLにアクセスしてデプロイできているか確認する

 

エラーが出た場合に

 

僕自身もエラーが出て出てしょうがなかったので、この経験からエラーの可能性を載せておきます。

 

ミスが更なるミスを呼ぶので、エラーが出たら最初からherokuにアプリ名を登録するところからやり直した方が良いです。(僕がそれをやらかしました。。。)


事前準備の段階で間違えている


”use Illuminate\Support…”を書き忘れてインポートされていない可能性や、作業ディレクトリの”直下”であるのに、どこかのディレクトリの中に作ってしまったりしていませんか?

ギットと繋げていない(pushを忘れたり)


”git:remote”していなかったり、push先は”heroku”です。普段通りにgit push origin masterなどとしていませんか?

環境変数の登録を間違えている


環境変数をCLEARDB_DATABASE_URLからコピペする人がほとんどだと思います。

 

その時に、コピペを間違えている可能性がありませんか?無駄な『:』などつけていませんか?

マイグレーションができていない


ClearDB MySQLもれっきとしたデータベースです。

マイグレーションも普段通りです。”外部キーの設定”や、”シーダー" など普段のデータベース作成と何か違いはありませんか?

Sequel Proなどで確認してみましょう。

参考にした記事

 

参考にした記事の一覧です。この記事たちがなければ僕はエラー解決できませんでした。感謝します!

 

ちなみに、僕はこの流れをTechAcademyの『PHP/Laravelコース』で学んで確実にできるようになりました。

テックアカデミー無料体験の話
【文系大学生/未経験者】テックアカデミー無料体験の感想【質問内容アリ】

続きを見る

文系大学生がテックアカデミーを4ヶ月受講した感想
【就職済み】文系大学生がテックアカデミーを4ヶ月受講した感想

続きを見る

TechAcademyは現役のエンジニアが教えてくれるので、独学で詰まっているかもという方にはオススメです。

 

本日は以上です。バッチャン でした。

 

-CODE
-

© 2020 バッチャンネル Powered by AFFINGER5