はじめに
Laravelのアプリケーションを作成したのでherokuにデプロイしようとしてつまずいたので、書いていけたらとおもっています。
今回自分はLaravelでのアプリケーションをデプロイしますが、他の言語でもやることはあまり変わらないと思いますので少しでも参考になると幸いです。
herokuコマンドやherokuへの登録は終わってるものとします。
まだの方はこちらの記事を参考に実施してください
https://qiita.com/tetsu-sh/items/f6fcbb6b85df04e5cf3f
使用する環境
- MacOS(M1)
- PHP 8.0.19
- Laravel 9.19.0
- MySQL 8.0.29
- Docker
- LaravelSail
早速やっていくよ!!
herokuアプリを作成
$ heroku create
作成したアプリケーションに移動して
#アプリケーション名の確認
$ heorku apps
# 確認した名前をアプリ名としてherokuと連携
$ heroku git:remote -a {アプリ名}
# ちゃんと連携できてるかの確認(herokuが追加されてたらOK)
$ git remote -v
アプリケーション直下にProcfileを追加する
$ touch Procfile
webサーバーにapachを使う場合
web: vendor/bin/heroku-php-apache2 public/
デプロイ
$ git add .
$ git commit -m "heroku-deploy"
$ git push origin master
$ git push heroku master
heroku configの設定
APP_KEYを確認してherokuにセットする
APP_KEY=base64:{APP_KEY}
$ heroku config:set APP_ENV=production
$ heroku config:set APP_DEBUG=false
$ heroku config:set APP_URL=https://{アプリ名}.herokuapp.com/
$ heroku config:set APP_KEY=base64:{APP_KEY}
# うまく設定できたのかを確認
$ heroku config
デプロイしたのを確認
$ heroku open
MYSQLの設定
クレジットカードの設定ができてないとエラーが出るのでクレジットの設定をする
ここで設定する:https://heroku.com/verify
cleardbはMySQL5.7以降だとマイグレーションの時にエラーになってしまうのでJawsDBを採用する(無料)
$ heroku addons:create jawsdb:kitefin
こちらでしっかりDBに追加されていることを確認
$ heroku config
JAWSDB_URL: mysql://{文字列}
herokuにDBでの設定をする
ここがなかなか難しくて苦戦しました
自分はてっきり.envファイルに書いてある環境変数かと思ってたんですけど、違いました
間違ってるといつまで経ってもマイグレーション出来ないので注意してください。
正解
JAWSDB_URL: mysql:/<username>:<password>@<host>/<databse>
$ heroku config:set DB_CONNECTION=mysql
$ heroku config:set DB_HOST=<host>
$ heroku config:set DB_PORT=3306
$ heroku config:set DB_DATABASE=<databse>
$ heroku config:set DB_USERNAME=<username>
$ heroku config:set DB_PASSWORD=<password>
# ちゃんと設定できたかの確認
$ heroku config
heroku環境でマイグレーション
$ heroku run php artisan migrate
$ heroku open
で確認してエラーが出てなかったら完了!