この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:2
ページ更新者:atom
更新日時:2026-05-18 01:50:54

タイトル: メンテナンス

Laravelアプリを一時的に停止するメンテナンスモードの使い方です。デプロイ作業中やDBメンテナンス中に、ユーザーへ503を返すために使います。

メンテナンスモードに入る

メンテナンスをする場合は以下のコマンドを実行すれば、全てのリクエストが503のステータスコードと共に、HttpException例外が投げられます。

php artisan down

メンテナンスモードを解除


メンテナンスの解除は以下のコマンドを実行します。

php artisan up

down コマンドの主要オプション

オプション意味
--message="..."メンテナンス画面に表示するメッセージ
--retry=60HTTP応答に Retry-After: 60 を含める(再試行間隔のヒント)
--secret="トークン"このトークンを含むURLでのみ通常通りアクセスを許可
--render="view"カスタムBladeビューを表示(Laravel 8+)
--status=503応答ステータスコード(既定503)
--refresh=15HTMLの自動リフレッシュ間隔(秒)

実行例

# シンプルにメンテナンス開始
$ php artisan down

# メッセージ・再試行を指定
$ php artisan down --message="システム更新中です" --retry=300

# 管理者だけ通常アクセスできるよう secret 付き
$ php artisan down --secret="adm-token-xxx"
# 管理者は https://example.com/adm-token-xxx でアクセス→セッションCookie付与

カスタムメンテナンス画面

標準のメンテナンス画面ではなく、自前のBladeで返したい場合は resources/views/errors/503.blade.php を用意するか、--render で指定します。

# Laravel 8以降
$ php artisan down --render="errors::503"

状態の確認

メンテナンスモードは storage/framework/down ファイル(古いバージョン)または同等の状態ファイルで管理されます。

# Laravel 8+ ではキャッシュドライバ経由
$ php artisan up    # 解除

# 強制的にファイルから消すには
$ rm storage/framework/down

本番運用の注意

  • キャッシュドライバとの兼ね合い: Laravel 8以降は APP_MAINTENANCE_DRIVER でファイル/キャッシュを選択。複数サーバー構成では cache ドライバ+共有キャッシュが必要
  • secret URLのリーク: 推測されにくい長い文字列を使う
  • cron/queue はメンテナンス中も動く。バッチを止めたい場合は別途 supervisor で制御
  • Webサーバー側で503: nginx/apache 側でメンテ画面を返す方が確実な場面もある(DBダウン時等)
  • artisan downで全リクエスト遮断: ヘルスチェックURLもブロックされる場合があるので、LBの設定を確認

関連