LoginSignup
6
3

More than 1 year has passed since last update.

【Heroku+Laravel】デプロイの方法!

Last updated at Posted at 2021-10-09

はじめに

Herokuを使ってLaravelプロジェクトをデプロイする方法を書いていきます。初心者の備忘録ですので理解不足はご容赦ください。

Herokuに登録

※すでにデプロイしたいアプリは作成されている想定でいきます!

まずはGit、Composerをインストールしてください。(インストール方法はここでは割愛します・・・)
次に早速Herokuに登録をしていきます。こちらからHerokuのページへ遷移してください。
新規登録ボタンをクリックして、登録をします。普通に進めていけば問題なく登録できると思います。

登録ができたらこんな感じの画面が出てくるかなと思います。
右上のドットが9つ並んでいるアイコンからDocumentationを選択すると、各言語の始め方を見ることができます。このドキュメントに従って進めていきます。
スクリーンショット 2021-10-09 16.32.46.png

Heroku CLIをインストール

まずはじめにHeroku CLIをインストールする必要があります。
コマンドは全て書いてありますのでこれをターミナルで入力していきましょう。
スクリーンショット 2021-10-09 16.36.27.png

brew install heroku/brew/heroku

パスワードの入力を求められますので、入力します。するとherokuコマンドが使えるようになりますのでこのように入力しましょう。

heroku login

Press any key ホニャララ・・・と出力されますので、エンターキーを押します。
するとHeroku ClIの画面が開いて、Log inボタンを押すとログインすることができます。
スクリーンショット 2021-10-09 16.40.44.png

これでHeroku CLIをインストールすることができました!

laravelの設定

まずはComposerをインストールします。

composer install

するとvendorディレクトリが生成されます。

次にlaravelプロジェクトの.envファイルを編集します。APP_KEYを生成する必要があるので、このように入力します。

php artisan key:generate

これでAPP_KEYの中にKEYが入ります。

次にLaravelプロジェクトのルートディレクトリ(appやbootstrapと同じ階層)にProcfileを作成します。中身はこのように記述します。

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

これでpublicがドキュメントルートに設定されます。

Herokuの設定

今回はMySQLを使用しているため、Herokuでクレジットカードの登録をします。登録するだけで無料で使えますので安心してください!
アカウントのアイコンにカーソルをホバーさせると、Account Settingsというメニューが出てきます。設定画面のBillingというタブをクリックするとクレジットカードの登録ができます。特に問題なく登録できるかと思います。

Herokuへデプロイ

まずはHerokuでアプリを作ります。
Herokuのページから作ることもできますが、コマンドでも作ることができます。

heroku create

これでアプリを作成することができました。

次に、データベースを作成していきます。今回はMySQLを使っていきますが、それにはアドオンというものが必要になります。アドオンとは、Herokuアプリを拡張するクラウドサービスのことです。今回はその中のClearDBというものを使ってデータベースを作っていきます。
このようにコマンド入力します。

heroku addons:add cleardb

これで作成したHerokuのアプリ上にデータベースを作ることができます。

各種設定

①プロキシ設定(Laravel)
Laravelでプロキシの設定を行なっていきます。TrustProxies.phpを編集していきます。
このように書きます。

app/Http/Middleware/TrustProxies.php
<?php

namespace App\Http\Middleware;

use Fideloper\Proxy\TrustProxies as Middleware;
use Illuminate\Http\Request;

class TrustProxies extends Middleware
{
    /**
     * The trusted proxies for this application.
     *
     * @var array|string|null
     */
    protected $proxies = '**';

    /**
     * The headers that should be used to detect proxies.
     *
     * @var int
     */
    protected $headers = Request::HEADER_X_FORWARDED_AWS_ELB;
}

②アプリキーをHerokuに設定
先ほど生成したアプリキーをHerokuに設定します。このようにコマンド入力します。

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

③ログの書き込み先を設定
こちらもコマンド入力をします。

heroku config:set LOG_CHANNEL=errorlog

こちらはLaravelにも設定していきます。
logging.phpを編集します。

config/logging.php
//〜略

'default' => env('LOG_CHANNEL', 'errorlog'),

//略〜

④データベースの設定
こちらはこのようにコマンド入力します。

heroku config | grep CLEARDB_DATABASE_URL

これでClearDBのURLを取得することができます。URLにはデータベースのユーザー名やパスワードなどの情報が入っています。
次に取得したURLをHeroku上に設定します。このようにコマンド入力します。

heroku config:set DATABASE_URL='データベースURL'

次に、Herokuにmysqlを設定してあげます。

heroku config:set DB_CONNECTION=mysql

最後に、Laravel上でデータベースの設定をします。
このように編集します。

config/database.php
<?php

use Illuminate\Support\Str;

$db = parse_url(env('DATABASE_URL'));

return [
          //〜略

    'connections' => [
           //〜略
        'mysql' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => $db['host'],
            'port' => env('DB_PORT', '3306'),
            'database' => ltrim($db["path"], '/'),
            'username' => $db['user'],
            'password' => $db['pass'],
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],
             //〜略

    ],
];

これで設定は完了です!

公開

ここまできたらあとはコミットしてプッシュしてマイグレーションをするだけです。

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

herokuにデプロイができたらマイグレーションを実行します。

heroku run php artisan migtrate

マイグレーションが無事に実行できたら最後に、heroku openをすることでアプリを開くことができます。

heroku open

公開することができました!

終わりに

Herokuを使うことで簡単にアプリを公開できますので、ポートフォリオなどの公開に便利です。
無料で使うことができるというのも魅力的ですね。

6
3
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
6
3