開発環境
- Windows 10
- Laravel9
- Gitセットアップ済み
※Windows内の開発環境はXAMPPで作成
xammpのセットアップはこちら
サンプルアプリケーション作成
デプロイのためのサンプルアプリを作成します。
今回はLaravel9に認証機能を設定した、ほとんど機能のない単純なアプリケーションをデプロイしていきます。
アプリケーション作成
composer create-project laravel/laravel=9.* heroku-sample
phpMyAdminからDBを新規作成
ユーザを作成しながらDBを同時に作成。

LaravelからDBへの接続設定
.envファイルにDBへの接続情報を入力
Laravel認証機能のインストール
composer require laravel/breeze --dev
php artisan breeze:install
php artisan migrate
npm install
npm run dev
ログイン機能が動作することを確認
画面からユーザを作成し、そのユーザでログイン。
これでローカル環境での動作はOKとし、デプロイ作業へ。

Herokuへのデプロイ
Heroku CLIのインストール
下記サイトから自身のOSに合ったものを使用してインストール。
今回使用するのは「Windows 64ビット用インストーラ」。
今回は全て初期設定のままインストール。
再起動してインストールできていることを確認。確認コマンドは下記
heroku --version

Herokuへのログイン
heroku login
コマンドを実行するとメッセージが表示されます。適当なキー(qを押すと中断のようなので、q以外?)を押下するとブラウザでHerokuのログイン画面が表示されるのでログインしてください。
ちなみに私は多要素認証の設定はしていません。(デプロイが正常に行えることを確認してから、このあたりの設定を行うつもりです)
公式サイトの手順を見る限り、ブラウザを利用したログインであれば多要素認証を行っていても問題なさそうです。
Herokuにソースコードを設定
プロジェクトディレクトリに移動してHerokuコマンドを実行
cd ./myapp
heroku create
git init
heroku git:remote -a xxxxxxxxxx
heroku git:remote -a xxxxxxxxxxの「xxxxxxxxxx」部分については、自分のheroku createコマンドで表示されたgitのURLの内容に応じて変更してください。https://git.heroku.com/xxxxxxxxxx.gitのようになっていると思います。
HerokuマイページのDeployからも確認できるので、そちらも確認してみてください。
git add .
git commit -am "first"
git push heroku master
HerokuのDB設定
データベースアドオンの追加
今回はJawsDBを使用します。(アドオンサイト)
インストールコマンドはこちら。
heroku addons:create jawsdb:kitefin
JawsDBの場合はアドオンサイトの左に料金プランが記載されています。
プランによってインストールコマンドが異なります。(kitefinは無料プランです。)
DB設定
DBのURLを取得
heroku config:get JAWSDB_URL
出力内容はこんな形式。
mysql://username:password@hostname:port/default_schema
出力内容を使用してHerokuのDB接続設定を行う
heroku config:set DB_CONNECTION=mysql
heroku config:set DB_HOST=<hostname>
heroku config:set DB_DATABASE=<default_schema>
heroku config:set DB_USERNAME=<username>
heroku config:set DB_PASSWORD=<password>
設定ができているか確認したい方は、ブラウザでHerokuにアクセスし、アプリケーションの詳細ページに移動してください。
「Setting」から「Config Vars」の「Reveal Config Vars」から確認できます。
HerokuのLaravelアプリケーション設定
migrationの実行
heroku run php artisan migrate
DBのmigrationが実行できない場合、エラーメッセージを参考にDBへの接続設定等を見直してみてください。
Procfileの作成(アプリケーションの公開ディレクトリの設定)
公開ディレクトリの設定のため、「Procfile」を作成します。
echo "web: vendor/bin/heroku-php-apache2 public/" > Procfile
git add .
git commit -m "Procfile (Heroku)"
git push heroku
403エラーになってしまう場合、Procfileの内容を確認してみてください。
「”」で入力内容が囲まれている場合、「”」を削除してから再度pushしてみてください。
APP Keyの設定
.envに作成されているKeyを設定しましょう。
heroku config:set APP_KEY=<APP_KEY>
npmの設定
ここまでの手順でアプリケーションにアクセスするとLaravelのログインページが表示されるかと思います。
しかし、Top右上のRegisterなどから認証機能にアクセスするとエラーとなってしまいます。
これは、認証機能で必要なファイルが作成されていないためです。
(開発環境ではnpm run devコマンドなどで作成されていたファイル)
そのため、Herokuのビルド設定を行います。
アプリケーション詳細ページにアクセスしたら「Setting」の「Buildpacks」を確認してください。
ここでnodejsのビルドが実行されるように設定する必要があります。
Add buildpackから「nodejs」を選択して「Save changes」を選択してください。
PHPとnodejsがBuildpacksに表示されれば設定完了です。


警告メッセージの通り、次のデプロイ時に有効となるため再度デプロイします。
変更なしでpushを行うため、空のコミットを作成してpushしましょう。
デプロイのための空コミットであることをコミットメッセージに追加しておくとよいでしょう。
git commit --allow-empty -m "Trigger Heroku deploy"
git push heroku
これで認証機能も問題なく使用できるはずです。
お疲れ様でした。

今回はここまで。
今回は最小構成ではありますが、認証機能まで使用しているということで少し癖がありましたね。
LaravelのHerokuデプロイの記事はたくさんの記事がありますが、認証機能を使用したアプリのデプロイをしている記事が少なかったので書いてみました。
皆様の参考になれば幸いです。