HerokuでLaravel10をデプロイする
とりあえず動作確認をしながら人様にお見せできる環境の構築をって考えた時に手軽にデプロイできるのが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 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 uniqueusers_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の開発環境は構築できました!