🔖
【Heroku】Laravelの初回デプロイに実施すること
APP_KEYを環境変数に設定する
ローカルのリポジトリとHerokuのAppを紐付けておきましょう。
heroku git:remote -a ${HEROKU_APP_NAME}
そしてローカルで以下のコマンドを実行するとAPP_KEYを生成し環境変数にセットできます。
heroku config:set APP_KEY=$(php artisan key:generate --show)
Apacheの設定
Procfileを生成しドキュメントルートを設定します。
echo 'web: vendor/bin/heroku-php-apache2 public/' > Procfile
URLをHTTPSで生成させる
Herokuにデプロイする場合、それらはStagingやProductionになりえると思います。
それらの環境で生成されるURLをhttpsを強制にしておきましょう。
まず環境変数でAPP_ENVを設定しておきます。
heroku config:set APP_ENV=staging
AppServiceProviderのboot()に以下を追加します。
public function boot()
{
if (\App::environment(['staging', 'production'])) {
\URL::forceScheme('https');
}
}
HttpをHttpsにリダイレクトさせる
Milldewareによってすべてのリクエストをチェックしてリダイレクトするようにしましょう。ForceHttpsという名前でMiddlewareを作成します。
php artisan make:middleware ForceHttps
生成されたForceHttpsのhandleを以下のように修正します。
追加したのはifの3行です。
APP_ENVがStagingかProduction環境かつ、HTTP_X_FORWARDED_PROTOでプロトコルをチェックしhttpであれば、httpsでリダイレクトするようにします。
public function handle($request, Closure $next)
{
if (\App::environment(['staging', 'production']) && $_SERVER["HTTP_X_FORWARDED_PROTO"] != 'https') {
return redirect()->secure($request->getRequestUri());
}
return $next($request);
}
そしてKernel.phpに以下のように作成したForceHttpsを追加します。
protected $middleware = [
\App\Http\Middleware\ForceHttps::class, // 追加
];
初期設定は覚えられない!
初期設定って頻繁に繰り返して行うことではないのでなかなか覚えられず事あるごとにググるタイプです。この記事で一箇所にデプロイに関してまとめることができたので、どなたかのお役に立てれば幸いです。
Discussion