Blog スタッフブログ

Laravel システム開発

[Laravel]Laravelでのメンテナンスモード

システム開発担当のTFです。

※Laravel8系統対応

やり方

  • メンテナンス開始前にコンソールに接続する
  • php artisan down –secret=”シークレット値” を叩きメンテナンスモードにする
  • メンテナンスモードになった事を確認する
  • https://サイトURL/シークレット値 に接続すると、laravel_maintenanceのcookieが作成される
  • メンテナンス中に行動可能な状態となる為、メンテナンスと確認を行う
  • laravel_maintenanceのcookieを削除し、メンテナンス画面を表示する
  • php artisan up を叩きメンテナンスモードを解除する
  • 正常に画面が表示される事を確認する

メモ

毎回、「php artisan down」を叩かなくても、
storage/framework/
  down
  maintenance.php
の2ファイルが生成・削除されるのみのため、手動でもメンテナンス状態の変更可能
挙動としては、
maintenance.php で down 読み込み、その設定で動く
down内のtemplate に事前レンダリングの表示設定可能

参考

  Laravel 8.x 設定
  Laravelでメンテナンスモードを試してみた

サンプル

// メンテナンス開始( シークレット値は、testtest )
php artisan down --secret="testtest"

// メンテナンス終了
php artisan up

デフォルトの設定

{
    "except": [],
    "redirect": null,
    "retry": null,
    "refresh": null,
    "secret": null,
    "status": 503,
    "template": null
}

編集後の設定

{
    "except": [],
    "redirect": null,
    "retry": null,
    "refresh": null,
    "secret": "testtest",
    "status": 503,
    "template": "<!DOCTYPE html>\n<html lang=\"en\">\n    <head>\n        <meta charset=\"utf-8\">\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n        <title>サイトタイトル<\/title>\n        <link rel=\"icon\" href=\"img\/\/favicon.ico\">\n        <meta name=\"robots\" content=\"noindex\" \/>\n        <!-- Styles -->\n        <link href=\"css\/style.css\" rel=\"stylesheet\">\n    <\/head>\n    <body>\n        <section class=\"antialiased\">\n            <div class=\"antialiasedInner\">\n                <h1>ただいまメンテナンス中です。<\/h1>\n                <p>大変お手数ですが、しばらくしてから再度アクセスをお願いします。<\/p>\n            <\/div>\n        <\/section>\n    <\/body>\n    <!-- Fonts -->\n    <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Nunito:wght@400;600;700&display=swap\" rel=\"stylesheet\">\n<\/html>\n"
}