Laravel本番環境の安全なデプロイ設定完全ガイド|.env・権限・HTTPS・キャッシュ運用まで徹底解説

2026年5月31日日曜日

Laravel PHP バックエンド

t f B! P L

Laravel本番環境の安全なデプロイ設定完全ガイド|安全運用の基本を実務視点で解説

Laravelで開発していると、ローカル環境では快適に動いていたのに、 本番公開した瞬間に「画面真っ白」「エラー大量発生」「設定が反映されない」 みたいな事故に遭遇することがあります。

自分も旅先のカフェでデプロイ作業をしていたとき、 「APP_DEBUG=true」のまま公開してしまい、 サーバーパスやDB情報が表示されて冷や汗をかいた経験があります。

Laravelの本番運用は、単純にサーバへアップロードすれば終わりではありません。 むしろ本番環境こそ、本当の設計力が問われます。

この記事では、Laravel本番環境で必須となる 「安全なデプロイ設定」を、 実務レベルでわかりやすく体系的にまとめます。


Laravel本番環境で最重要となる .env 設定

まず最初に確認したいのが .env 設定です。 Laravel運用の安全性は、ここでかなり決まります。

APP_ENV=production
APP_DEBUG=false
APP_URL=https://example.com
LOG_LEVEL=error

APP_DEBUG=false は絶対に忘れない

本番環境で APP_DEBUG=true のままだと、 例外発生時に以下のような情報が丸見えになります。

  • DB接続情報
  • サーバパス
  • 内部ディレクトリ構成
  • 環境変数

つまり、攻撃者に「どう侵入すればいいか」を 教えているような状態です。

Laravel本番環境では、 APP_DEBUG=false は最重要設定です。


.env をGit管理しない理由

初心者の頃にやりがちなのが、 そのまま git add . してしまうパターン。

git add .env

これは本当に危険です。

.env には以下のような機密情報が含まれています。

  • DBパスワード
  • APIキー
  • メール認証情報
  • AWS認証情報
  • Stripe秘密鍵

GitHubへ誤ってPushした瞬間、 インシデント化するケースも珍しくありません。

.gitignore に必ず追加する

.env

実務では「公開したあと消せばいい」は通用しません。 履歴に残るからです。


Laravel本番運用では config:cache が必須

Laravelは便利な反面、 設定読み込みが多くなるとパフォーマンスが落ちます。

そこで本番ではキャッシュ化を行います。

php artisan config:cache
php artisan route:cache
php artisan view:cache

キャッシュ化のメリット

  • 設定読み込み高速化
  • ルーティング高速化
  • ビューコンパイル高速化
  • 予期せぬ.env変更防止

特に config:cache は、 本番Laravel運用ではほぼ必須です。

.env変更後は再生成が必要

php artisan config:clear
php artisan config:cache

これを忘れると、 「設定変えたのに反映されない」 という沼にハマります。


public ディレクトリだけを公開する

Laravelでは、 Web公開されるべきなのは public/ のみです。

/var/www/app
├─ app/
├─ config/
├─ .env
└─ public/

危険なNG構成

  • ルート全体公開
  • .envへ直接アクセス可能
  • storageが公開領域に存在

レンタルサーバで雑に設定すると、 .env流出事故は普通に起きます。

ApacheやNginx設定では、 DocumentRoot を必ず public に向けましょう。


Laravel本番環境のファイル権限設定

旅先でサーバ設定していると、 意外とハマるのが権限エラーです。

Laravelは storage や cache に 書き込み権限が必要になります。

chown -R www-data:www-data /var/www/app
chmod -R 755 /var/www/app
chmod -R 775 storage bootstrap/cache

権限設定の考え方

  • storage は書き込み可能
  • cache は書き込み可能
  • その他は基本読み取り専用

777を使いたくなる気持ちはわかりますが、 本番では避けましょう。


Laravelのログ設計とエラーハンドリング

本番環境では、 「必要なログだけを残す」 という設計が大切です。

'channels' => [
    'stack' => [
        'driver' => 'stack',
        'channels' => ['daily'],
    ],
]

.env 側では以下を設定。

LOG_CHANNEL=stack
LOG_LEVEL=error

dailyログのメリット

  • ログ肥大化防止
  • 日別管理しやすい
  • 障害解析しやすい

本番では、 debugログを大量出力しない設計が重要です。


秘密情報はベタ書きしない

これは実務で本当に重要です。

NG例

$password = "mypassword";

推奨

DB_PASSWORD=******

さらに大規模環境では、 以下のようなSecret管理サービスも利用されます。

  • AWS Secrets Manager
  • Azure Key Vault
  • GCP Secret Manager

最近は「.envすら置かない」構成も増えています。


HTTPS強制はLaravel本番運用で必須

HTTPS未対応は、 今やSEOにも悪影響があります。

if ($this->app->environment('production')) {
    \URL::forceScheme('https');
}

またはWebサーバ側で HTTP→HTTPSリダイレクトを設定します。

セキュリティだけでなく、 Google検索評価にも関わる重要ポイントです。


デバッグツールを本番から除外する

Laravel Debugbar や Telescope は便利ですが、 本番では危険になる場合があります。

composer remove barryvdh/laravel-debugbar

最低でも、 本番では APP_DEBUG=false を徹底しましょう。


実務で使われるLaravelデプロイ手順

最後に、 現場でもよく使われるデプロイフローを紹介します。

git pull origin main
composer install --no-dev --optimize-autoloader
php artisan migrate --force
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan queue:restart

この流れをCI/CDへ組み込むことで、 かなり安全なLaravel本番運用になります。


Laravel本番環境でよくある事故パターン

事故 原因
DB情報漏洩 APP_DEBUG=true
設定反映されない config:cache
画面真っ白 キャッシュ不整合
.env流出 public配下配置

まとめ|Laravel本番運用は「安全設計」が最優先

Laravelは非常に強力なフレームワークですが、 本番運用では「便利さ」より 「安全性」と「再現性」が重要になります。

特に以下は毎回チェックしましょう。

  • APP_DEBUG=false
  • .envをGit管理しない
  • public以外公開しない
  • config:cache実行
  • storage権限設定
  • HTTPS強制

旅をすると、 Wi-Fi環境もサーバ環境も毎回違います。 だからこそ、 「どこでも安全に動く構成」を作れるエンジニアは強いです。

Laravel本番環境の設定は、 地味ですが確実に実力が出る領域。 ひとつずつ積み上げていきましょう。

このブログを検索

Blog Archive

Welcome



旅するWebライター「Hide」のブログへようこそ!

2年間の世界一周を終え、今は旅の思い出を言葉にしながら、AIやプログラミングという新しい冒険を楽しんでいます。最新技術を味方につけて、もっと自由でクリエイティブな発信を続けていきます!

人気の投稿

QooQ