目次
Laravelプロジェクトをデプロイする
Laravelアプリを作成
$ laravel new deploy-app
Herokuにローカルからログイン
$ heroku login
Heroku内にリポジトリを作成
$ heroku create deploy-app --buildpack heroku/php
おそらくここで指定したビルドパックのおかげで、composer installやnpm installがなされるのだと思います。
LaravelアプリのソースコードをHerokuにデプロイ
$ git init
$ heroku git:remote -a [herokuのリポジトリ名]
$ git add .
$ git commit -m “initial commit”
$ git push heroku master
プロジェクト直下にProcfileを作成
$ touch Procfile
web: vendor/bin/heroku-php-apache2 public/
$ git add .
$ git commit -m “add Procfile”
$ git push heroku master
Heroku PostgreSQLの導入
$ heroku addons:create heroku-postgresql:hobby-dev
$ heroku pg:info
下記のコマンドで必要な情報を確認します。
$ heroku config:get DATABASE_URL
下記のように表示されます。
postgres://[ユーザー名]:[パスワード]@[ホスト名]:5432/[DB名]
$ heroku config:set\
DB_CONNECTION=pgsql\
DB_USERNAME=[ユーザ名]\
DB_PASSWORD=[パスワード]\
DB_HOST=[ホスト]\
DB_DATABASE=[DB名]\
マイグレーションを実行
$ heroku run php artisan migrate
Laravelアプリに必要なデータを設定
$ heroku config:set DEBUGBAR_ENABLED=true
$ heroku config:set APP_KEY=$(php artisan key:generate --show)
ブラウザで確認
$ heroku open
PostgreSQLにログインして確認する
ここからは実際に作成したデータベース(PostgreSQL)の中身を確認していきます。
開発の際、マイグレーションの失敗などで確認したいと思うことがあると思いますし、おそらくこれから紹介するエラーに直面すると思うので残しておきます。
手順
・HerokuのPostgreSQLのバージョンを確認
・ローカルに同じバージョンの”postgresql”をインストール
・コマンドで確認
HerokuのPostgreSQLのバージョンを確認
下記のコマンドで表示されるPG: の部分です。
$ heroku pg:info
=== DATABASE_URL Plan: Hobby-dev Status: Available Connections: 0/20 PG Version: 12.2 Created: 2020-04-04 16:51 UTC Data Size: 8.3 MB Tables: 3 Rows: 2/10000 (In compliance) Fork/Follow: Unsupported Rollback: Unsupported Continuous Protection: Off Add-on: postgresql-closed-8****
僕の場合でいうと、12.2となっているので12を指定します。
ローカルに同じバージョンの”postgresql”をインストール
Homebrewでインストールします。
$ brew install postgresql@12
コマンドで確認
$ heroku pg:psql -c “\d”
--> Connecting to postgresql-closed-8***** Schema | Name | Type | Owner ------------+-----------+----------+------------ public | failed_jobs | table | lglvvjdsuzhemn public | failed_jobs_id_seq | sequence | lglvvjdsuzhemn public | migrations | table | lglvvjdsuzhemn public | migrations_id_seq | sequence | lglvvjdsuzhemn public | users | table | lglvvjdsuzhemn public | users_id_seq | sequence | lglvvjdsuzhemn (6 rows)
これで終了です。