Infrastructure

【Heroku】Laravelアプリをデプロイする方法

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)

これで終了です。

COMMENT

メールアドレスが公開されることはありません。