タイトル: メンテナンス
Laravelアプリを一時的に停止するメンテナンスモードの使い方です。デプロイ作業中やDBメンテナンス中に、ユーザーへ503を返すために使います。
メンテナンスモードに入る
メンテナンスをする場合は以下のコマンドを実行すれば、全てのリクエストが503のステータスコードと共に、HttpException例外が投げられます。
| php artisan down |
メンテナンスモードを解除
メンテナンスの解除は以下のコマンドを実行します。
| php artisan up |
down コマンドの主要オプション
| オプション | 意味 |
|---|---|
--message="..." | メンテナンス画面に表示するメッセージ |
--retry=60 | HTTP応答に Retry-After: 60 を含める(再試行間隔のヒント) |
--secret="トークン" | このトークンを含むURLでのみ通常通りアクセスを許可 |
--render="view" | カスタムBladeビューを表示(Laravel 8+) |
--status=503 | 応答ステータスコード(既定503) |
--refresh=15 | HTMLの自動リフレッシュ間隔(秒) |
実行例
|
# シンプルにメンテナンス開始 |
カスタムメンテナンス画面
標準のメンテナンス画面ではなく、自前のBladeで返したい場合は resources/views/errors/503.blade.php を用意するか、--render で指定します。
|
# Laravel 8以降 |
状態の確認
メンテナンスモードは storage/framework/down ファイル(古いバージョン)または同等の状態ファイルで管理されます。
|
# Laravel 8+ ではキャッシュドライバ経由 |
本番運用の注意
- キャッシュドライバとの兼ね合い: Laravel 8以降は
APP_MAINTENANCE_DRIVERでファイル/キャッシュを選択。複数サーバー構成ではcacheドライバ+共有キャッシュが必要 - secret URLのリーク: 推測されにくい長い文字列を使う
- cron/queue はメンテナンス中も動く。バッチを止めたい場合は別途 supervisor で制御
- Webサーバー側で503: nginx/apache 側でメンテ画面を返す方が確実な場面もある(DBダウン時等)
- artisan downで全リクエスト遮断: ヘルスチェックURLもブロックされる場合があるので、LBの設定を確認