HerokuでLaravel10をデプロイする

とりあえず動作確認をしながら人様にお見せできる環境の構築をって考えた時に手軽にデプロイできるのがHerokuのいいところですよね。

無料版がなくなってしまったんですけど、価値あるサイトを作って収益化できるように頑張って欲しいという前向きなメッセージだと思ってます。

前提

Herokuアカウントの新規作成方法

【図解】Herokuにクレジットカードを登録する手順

上2つができていること

Laravel10のプロジェクトを用意する

※2023年06月18日時点で最新のバージョンが10になります。

作成する

composer create-project laravel/laravel life_laravel_project

DBとの接続を確認する

php artisan migrate

実行できれば問題ないが、今回確認環境がDockerだったためPHPコンテナとMySQLコンテナを繋ぐ必要があった。docker-compose.ymlの内容は問題なかったがMySQLのユーザーに問題があった。

mysql> select user, host from mysql.user;

これだと内部からのアクセスのみとなってしまうため外部からのアクセスができない、そのため外部へのアクセスができるユーザーを作成する必要がある。

以下コマンド

CREATE USER 'laravel_life_user' IDENTIFIED BY '';

GRANT ALL PRIVILEGES ON . TO 'laravel_life_user'@'%' WITH GRANT OPTION;

マイグレーションを実行して以下の通りになれば問題なし

プロジェクトフォルダに移動してGitのバージョン管理をする

git init

githubのリポジトリと紐付けてローカルの現状をPushする

HerokuでDeployが完了したこと確認できればOK

Herokuでデプロイをする時には、Procfileが必要になるので作ります。

echo "web: vendor/bin/heroku-php-apache2 public/" > Procfile

Laravelプロジェクトと同じ階層にファイルを作って再度PushすることでHerokuの画面は500のサーバーエラーになります。

参考:【Laravel+Heroku】Herokuデプロイ時に500エラーで画面が表示されない問題【APP_KEY未設定】

単にAPP_KEYの設定がないということなのですが、根本的にHerokuには.envが存在していません。

そのためHerokuの環境設定をします。

以下にAPP_KEYやDBの設定情報を入力します。

設定するとこのようにLaravelサイトが表示されます。

HerokuでMySQLを使えるようにする

参考:【Heroku】Laravel+MySQLで作成したアプリを公開【完全版】

参考:herokuでMySQL環境作ってやんよ!!!

heroku addons:create cleardb:ignite --app life-test

設定ができたので、マイグレーションを実行してみたら

heroku run php artisan migrate --app life-test

In Connection.php line 795:

SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long;
max key length is 767 bytes (Connection: mysql, SQL: alter table users add unique
users_email_unique(email))

普通にできなかった。

app/Providers/AppServiceProvider.php

boot()メソッドの中に「\Illuminate\Support\Facades\Schema::defaultStringLength(191);」を記述して再度プッシュする。

その後マイグレーション実行し直し「heroku run --app your_app_name php artisan migrate:fresh」をする

これでLaravel10の開発環境は構築できました!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です