LoginSignup
12
9

More than 3 years have passed since last update.

LaravelのHerokuへのデプロイ、DBはMySQL。

Last updated at Posted at 2019-11-28

データベースにMYSQLを使う

HerokuではデータベースとしてPostgreSQLになっているため、アプリごとにClearDBを入れなければならない。利用にはクレジットカードが必要。(ClearDBの利用自体は無料)

$ heroku addons:add cleardb

上記にコマンドの入力またはHerokuのサイトのsettingタブから導入できる。

Procfile を作成する

ProcfileというHerokuの設定ファイルを作成。サーバーにApacheを使うこと、public/をドキュメントルートとすることを宣言するために使います。アプリフォルダの直下に作成する。

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

中身は上記のように。

環境変数の設定

どの項目を登録すべきかよくわからなかったためいろいろやってみたが注意すべきはDBに関する項目。

DB_DATABASE=[データベース名]
DB_HOST=[ホスト名]
DB_USERNAME=[ユーザー名]
DB_PASSWORD=[パスワード]

これらはenvファイルの設定ではなくclearDBの設定で、そのURL内にある。下記コマンドで表示。

heroku config:get CLEARDB_DATABASE_URL

#URLが表示される
mysql://[ユーザー名]:[パスワード]@[ホスト名]/[データベース名]?reconnect=true

またセキュリティ関連のAPP_KEYの設定も必須。

heroku config:set APP_KEY=$(php artisan --no-ansi key:generate --show)

envファイルのAPP_KEYの項目をartisanコマンドで取得

HerokuのMYSQLにmigrateする

自分はここに一番時間を取られた。マイグレーションがうまくいかない。

Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

何度やってもこのエラーメッセージが出てくる。訳すと「指定されたキーは長すぎます。キーの長さは最大767バイトです。」

調べていくとvarchar型の文字数を191に制限しなければこのエラーが出るらしい。

app\Providers\AppServiceProvider.phpに以下を追加。

AppServieProvider.php
use Illuminate\Support\Facades\Schema;

public function boot()
{
    Schema::defaultStringLength(191);
}

自分はSchemaクラスをuseするのを忘れていたため時間がとられてしまった。
use Illuminate\Support\Facades\Schema;を忘れないように。

デプロイする

HerokuではアプリをGitを利用してデプロイする。自分はGitも初心者だったためここでもかなり時間を要した。

まずはHerokuのアプリをリモートとして登録

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

ローカルリポジトリにコミットし

git add .
git commit -m "コミットメッセージ"

プッシュすることによりデプロイする

git push heroku master

問題がなければheroku openでサイトを開くことができる

heroku open

思った以上に時間がかかってしまった。自分が犯していた間違いはdevelopブランチにProcfileファイルを作成し、マージしないままmasterをプッシュをしていたこと。そのほかにもGitの基本的な操作ができていなかった。HerokuよりもGitに慣れていないことを痛感させられた。

こちらの記事に全体的な流れをまとめましたのでよかったらどうぞ
【Laravel】Herokuでのデプロイ

12
9
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
12
9