LoginSignup
1
0

More than 3 years have passed since last update.

【Heroku】Laravelで作成したアプリをHerokuでデプロイしてみよう!# MySQL

Last updated at Posted at 2021-03-24

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が登録されたか確認する方法

  1. Dashboardを選択 名称未設定のデザイン (3).png
  2. アプリケーションを選択してResourcesを選択 名称未設定のデザイン (1).png

Add-onsにClearDB MySQLが追加されているばOK。
$ heroku configでも確認することができます

6. 環境変数の設定

開発環境では.envファイルで環境変数を設定していましたが、本番環境では使用しません。本番環境の環境変数を設定する必要があります
自分のアプリケーションの.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を追加していきます
スクリーンショット 2021-03-24 15.16.43.png

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

おわりに

これでデプロイまでできました、細かい設定は公式のドキュメントを参考にしてください。アップデートもされて一番正確だと思います

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0