13
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Laravel】Herokuでのデプロイ

Last updated at Posted at 2020-04-03

Herokuを利用して、Laravelのアプリのデプロイを行います。その一連の手順をメモします。
DBにはMySQLを利用したいので、その設定も行います。

###前提
・laravelアプリが作成済み
・Herokuアカウント取得済み
・Heroku CLI導入済み
・DBにはMySQLを利用します。

###Procfileの作成
まずはLaravel側の設定を行います。

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

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

###DBの文字数の設定
Herokuではvarchar型の文字数はデフォルトの255では大きすぎるため191に設定します。
app\Providers\AppServiceProvider.phpのboot()に設定します。

AppServiceProvider.app
use Illuminate\Support\Facades\Schema;

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

###アプリをhttpsに対応させる
本番環境の場合にhttpsを強制します。こちらもapp\Providers\AppServiceProvider.phpのboot()に設定します。

AppServiceProvider.app
public function boot()
{
    if (\App::environment('production')) {
      \URL::forceScheme('https');
  }
}    

Laravel側の設定は以上です。ほかにもあるとは思いますが、これらをしておけば少なくともデプロイには成功すると思います。

###Herokuへのログイン

$ Heroku login

###Herokuアプリの作成、デプロイ
Herokuアプリを作成します。

$ heroku create myapp –buildpack heroku/php

デプロイはGitを利用したHerokuアプリへのプッシュによって行います。
なのでまずHerokuアプリをリモートとして登録します。myappのところは先ほど作成したHerokuアプリを指定します。

$ heroku git:remote -a myapp

このHerokuリモートにプッシュしてデプロイします。変更点のコミットを忘れずにしましょう。

$ git add . 
$ git commit -m 'Add Procfile, varcher length, force https'
$ git push heroku master

###DBとしてMySQLを利用
HerokuはデフォルトのDBがPostgreSQLであるため、MySQLを使うためにはアドオン「ClearDB」を利用して設定を変更します。
ClearDBは利用自体は無料ですが、クレジットカードの登録が必要となります。Herokuのサイトから行うことができます。

クレカの登録をしたら、下記コマンドでClearDBのインストールをします。

$ heroku addons:add cleardb

###環境変数の設定
アプリの環境変数は.envなどに定義しますが、それらはデプロイされません。したがって環境変数はHerokuアプリに定義する必要があります。

下記コマンドで設定ができます。

$ heroku config:set キー=値

###DBの環境設定
まずは自分のClearDBのURLを確認します。

$ heroku config:get CLEARDB_DATABASE_URL 
mysql://[ユーザー名]:[パスワード]@[ホスト名]/[データベース名]?reconnect=true

各キー、値を登録します

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

###その他の環境設定

$ heroku config:set APP_KEY=$(php artisan key:generate --show)
$ heroku config:set APP NAME=myapp
$ heroku config:set APP_ENV=heroku

このほかにもメールやapi等の各種環境変数もここで設定します。

###マイグレーションの実行

$ heroku run php artisan migrate

$ heroku open

マイグレーションを実行し、成功したらサイトにアクセスしてみましょう。

下のようなエラーが出た場合、MySQLのvarchar型の文字数を変更がうまくいっていません。

Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes
13
15
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
13
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?