プログラミング

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実践開発』という書籍もありますが、このレベルなら特に必要ないので、オススメしません。

 

 

なぜ今回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でついていけるか不安。受ける前に卒業生からアドバイスが聞きたい。   こんな疑問に答えて行きたいと思います。 &nbs ...

続きを見る

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

 

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

 

-プログラミング
-