Herokuとは?
HerokuはPaaS(Platform as a Service)と呼ばれるクラウドサービスです。ハードウェア(サーバー)、OS、ミドルウェアからなるアプリケーションの実行環境を提供します。Herokuを使うことで開発者はアプリケーションの開発に専念することができます
画像引用元
前提
- HerokuにデプロイするLaravelのアプリケーションは準備しておいてください
- DBはMySQLを使用
- Dockerは使いません
- HerokuCLIをインストールしておく
-
$ heroku -v
でversionが返って来なかったらインストールされていません -
$ brew install heroku/brew/heroku
を実行してください
-
手順
1. Gitリポジトリの作成
HerokuのデプロイにはGitを使用します。デプロイしたいLaravelのアプリのディレクトリで$ git init
してGitリポジトリを作成します
$ git init
2. Procfileを作成
アプリケーションのルートディレクトリにProcfileを作成します
$ echo "web: vendor/bin/heroku-php-apache2 public/" > Procfile
アプリを起動するときに実行するコマンドを指定するファイルです
3. Herokuにログインする
以後、Heroku CLIを使います。Herokuにログインしましょう
$ heroku login
$ heroku login
ならブラウザ操作
$ heroku login -i
ならターミナル操作
4. Herokuアプリケーションの作成
Push先として利用するHeroku上にアプリケーションを作成します
方法
$ heroku create
の場合は自動的にアプリ名がつけられます
$ heroku create <アプリ名>
とすれば任意のアプリ名をつけることができます
$ heroku create
https://アプリ名.herokuapp.com/ | https://git.heroku.com/アプリ名.git
上記のようにアプリ名が自動でつけられた結果が返ってくると思います
https://アプリ名.herokuapp.com/
はデプロイ先のURLです
確認
$ git remote -v
でherokuがリモートリポジトリに登録されているのが確認できます
Herokuに登録した別のアプリケーションをリモートリポジトリとして登録したい時は
$ heroku git:remote -a <アプリの名前>
を実行してください
5.ClearDB MySQL
Heroku上でMySQLを使うにはadd-onと呼ばれる拡張機能を入れる必要があります(Heroku推奨のDBはPostgreSQLらしい)
MySQLを使うときはcleardbと呼ばれるadd-onを使うことが多いと思います
ClearDBを追加する
cleardbを追加する前にクレジットカードを追加する必要がありますが、Freeプラン(ignite)なら無料で使うことができます。事前にHerokuのHPの設定からクレジットカードを登録しておきましょう
igniteとゆうFreeプランで始めるコマンドです
$ heroku addons:create cleardb:ignite
Add-onsにClearDBが登録されたか確認する方法
Add-onsにClearDB MySQLが追加されているばOK。
$ heroku config
でも確認することができます
6. 環境変数の設定
開発環境では.envファイルで環境変数を設定していましたが、本番環境では使用しません。本番環境の環境変数を設定する必要があります
自分のアプリケーションの.envファイルを確認してください
APP_NAME=hoge
APP_ENV=local
..
このような記述がされていると思います
.envファイルは上記のように
key=value
の形で記述されています
基本的には、.envファイルと同じように上記のkey=value
を本番環境の環境変数に追加していきます。CLI操作とGUI操作の2種類の追加する方法を紹介します
CLI操作
$ heroku config:set [key]=[value]
GUI操作
Dashboard -> アプリケーションを選択 -> Settings -> Config Vars
下記のようにkeyとvalueを追加していきます
APP_KEYのValueが空の場合
APP_KEYは暗号化に使われるキーです。.envファイルにAPP_KEYのValueが存在する場合はそのまま、上記の操作で環境変数を設定してください。composer create-project
で作成した場合はAPP_KEYのValueが設定されています。ただ、git clone
やテンプレートリポジトリから作成したプロジェクトはAPP_KEYのValueが空だと思います。その場合、下記のコマンドを実行してAPP_KEYを作成して環境変数を設定しておいてください
$ composer install
$ heroku config:set APP_KEY=$(php artisan --no-ansi key:generate --show)
開発環境と本番環境で異なる環境変数
基本的には.envファイルと同じように設定すればいいですが、異なる部分もあります
本番環境の場合は APP_ENV=production
デバッグの結果がユーザに見えるのは良くないので APP_DEBUG=false
アプリのURLAPP_URL=https://アプリ名.herokuapp.com
ClearDBに関する環境変数を確認します
$ heroku config
..
CLEARDB_DATABASE_URL: mysql://[DB_USERNAME]:[DB_PASSWORD]@[DB_HOST]/[DB_DATABASE]?reconnect=true
CLEARDB_DATABASE_URLとゆうものが表示されると思います。これはClearDBで登録したデータベースのことを指しています。これを環境変数に追加していきましょう
DB_CONNECTION=mysql
DB_USERNAME=上記の値
DB_PASSWORD=上記の値
DB_HOST=上記の値
DB_DATABASE=上記の値
7. Herokuへのpush
$ git add .
$ git commit -m 'hoge'
$ git push heroku main
masterブランチを使っている場合は$ git push heroku master
※ Herokuへのpushはmainブランチかmasterブランチで行ってください
8. Heroku上でマイグレーションを実行
本番環境でマイグレーションを実行させましょう
$ heroku run php artisan migrate
これで必要な工程は終わりました。アプリケーションを開きましょう
$ heroku open
おわりに
これでデプロイまでできました、細かい設定は公式のドキュメントを参考にしてください。アップデートもされて一番正確だと思います