前提

以下のサイトでherokuコマンドをインストールしてheroku loginでログインを行い、使えるようにしておきましょう。 https://devcenter.heroku.com/articles/heroku-cli#download-and-install

DBはPostgreSQLを使います。

Procfileを作る

Procfileはheroku上にデプロイされたときに実行するコマンドを指定するものです。 これを使っておかないとデプロイしてもエラーになってアプリを起動できません。

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

アプリを登録

herokuコマンドから

まずはherokuコマンドでアプリを登録する必要があるので、Laravelのプロジェクトディレクトリに移動して

$ heroku create <アプリの名前>

を実行して作りましょう。 git initからremoteの登録までやってくれます。

Webから

Webのダッシュボードから登録することもできますが、gitの設定を自分でやらないといけません。 Laravelのプロジェクトディレクトリから

$ git init
$ heroku git:remote -a <アプリの名前>

を実行します。 もしすでにgitを使っているなら最後のコマンドだけで十分です。

PostgreSQLを設定

herokuでPostgreSQLやMySQLなどを使うにはaddonとして追加する必要があります。ほかにもいろいろ便利なアドオンがあるそうなのですが、今回はPostgreSQLのみを追加します。

$ heroku addons:create heroku-postgresql:hobby-dev

Web上のアプリ管理画面にいくとAddonが追加されています。

次はLaravelでPostgreSQLを使うように設定します。 開発時には.envを書き換えてDBを変えていたかもしれませんが、このファイルは.gitignoreに載っていてpushされませんので、herokuのサーバーに環境変数を設定します。

上記の画面のHeroku Postgresをクリックして以下の画面を開き、SettingsView Credentials を開いてDBの設定情報を表示しましょう。

また、LaravelプロジェクトではAPP_KEYを環境変数として登録する必要があるのでそれも追加。

それぞれの情報をherokuコマンドから登録します。

$ heroku config:set DB_CONNECTION=pgsql \
                    DB_HOST=<Host> \
                    DB_PORT=<Port> \
                    DB_DATABASE=<Database> \
                    DB_USERNAME=<User> \
                    DB_PASSWORD=<Password> \
                    APP_KEY=$(php artisan key:generate --show)

デプロイする

herokuへのデプロイの方法はgitでpushするだけです。

$ git add .
$ git commit -m "update"
$ git push heroku master

するといつものgitのログとは違いずらずらと出てくるので終わるまで見つめましょう。 見つめ終わったらデプロイ完了です。

herokuアプリの管理画面からOpen Appを開けばLaravelアプリが迎えてくれるでしょう、簡単。

マイグレート、その他初期設定

herokuアプリは生成されてばかり、まっしろの状態です。 もちろんDBも空っぽなのでmigrateを実行しましょう。 初期設定が必要なライブラリを使っている場合もコマンドを実行しておいてください。 シェルに入って走らせておきましょう。リージョンがアメリカなので少しレスポンスが悪いけどイライラしないように。

$ heroku run "php artisan migrate"

確認

herokuの管理画面からOpen appをクリックしてみましょう。 以下の画面が出たら成功です。