Theme
SD MILIEU

2019-2-11

LaravelをHerokuにデプロイ(Laravel mix使用かつGitHub経由)

最近 Heroku の活用事例を聞いて試してみたくなったので試した。そのメモ。

手順

  • GitHub リポジトリの準備
  • Heroku の準備
    • アプリの作成
    • BuildPack の適用
    • DB の準備
    • GitHub リポジトリと連携
  • 初回デプロイ
    • 最初は手動デプロイ
    • 環境変数の設定

GitHub リポジトリの準備

基本普通に作成した Laravel アプリのリポジトリを用意すれば問題ないが、以下の点に留意して準備する。

リポジトリのルートディレクトリにcomposer.jsonが存在するように

Heroku はビルドする際にリポジトリのルートディレクトリだけを見るみたいで、ルートディレクトリ以外でビルドしようとすると面倒。なので、基本ルートディレクトリにcomposer.jsonpackage.json等が配置されるようにすること。

Procfileの配置

ルートディレクトリに以下の内容のProcfileを配置。

web: vendor/bin/heroku-php-apache2 public/

Procfileは Heroku でアプリが起動する際の処理を記述するみたいだけど詳しいことはよくわかっていない。とりあえず上記のように書いておくとpublicがドキュメントルートになる。

package.jsonheroku-postbuildを追加

当然だけど、Heroku 側でnpm run productionされないとフロントエンドの諸々が用意されない。

以下のようにpackage.jsonheroku-postbuildを追加すると、パッケージインストール完了後記述したスクリプトが実行される。

{
    ~
    "scripts": {
        ~

        "heroku-postbuild": "npm run production"
    },
    ~
}

Heroku の準備

アプリの作成

普通に作成。

Buildpacks の適用

Settingsタブからheroku/nodejsheroku/phpをインストールしておく。

DB の準備

ResourcesタブのAdd-onsから、Heroku Postgresをインストールする。

GitHub リポジトリと連携

先んじて準備しておいたリポジトリと連携し、masterブランチにpushされた際に自動デプロイされるようにする。

DeployタブのDeployment methodから GitHub を選び、画面の指示に従って進めれば OK。

初回デプロイ

最初は手動デプロイ

pushに反応して自動デプロイされるので、最初は手動でデプロイする。

環境変数の設定

Laravel に必要な環境変数の設定をする。

Heroku の WEB サイトからも設定できるが、面倒なので CLI からやる。

ローカルのプロジェクトと Heroku アプリを結びつける

以下のコマンドをプロジェクトルートで実行する。

heroku git:remote -a [app name]

これで、リモートブランチとしてherokuが登録されると共に、herokuコマンド時に自動的に指定したアプリへのコマンドとして実行されるようになる。(これをしないと毎回-aオプションが必要になる。)

環境変数を設定する

APP_KEYと DB 情報の設定を行う。

DB 情報は、Heroku PostgresSettingsタブ内の項目Database Credentialsに記述されている。

必要な項目を以下のコマンドで環境変数として設定。

heroku config:set APP_KEY=$(php artisan key:generate --show) DB_CONNECTION=pgsql DB_HOST=...

参考

Laravel5.7: Heroku にデプロイする - Qiita

Laravel Mix + Heroku - Qiita

Heroku Node.js Support | Heroku Dev Center