Patrol という Craft CMS のプラグインが Craft CMS で管理されているサイトをメンテナンスモードにできそうだったので試してみた。

Patrol | Selvin Ortiz
https://selvinortiz.com/plugin...

プラグインのインストール

とりあえずCLIでプラグインをインストールする

// 一応backupをとる
./craft backup storage/backups/20191227-1015.sql

composer require selvinortiz/patrol

./craft install/plugin patrol

これでプラグインがインストールされた。

管理画面から設定ができるが、この辺は config ファイルでやった方が良さそうとドキュメントに書いてあった。

config ファイルの用意

まずはインストールしたプラグインのファイルの

/vendor/selvinortiz/patrol/src/config.php

/config/patrol.php

として複製する。

メンテナンスモードの設定

patrol.php の内容を編集する。

'maintenanceModeEnabled'            => false,  <= true でメンテナンスモードになる
    'maintenanceModePageUrl'            => '/offline', <= 飛ばすページを指定する
    'maintenanceModeResponseStatusCode' => 403,
    'maintenanceModeAuthorizedIps'      => [
        '::1',
        '127.0.0.1', <= 許可するIPを指定する
    ]

これでメンテナンスモードをオンにすると、指定したIPはこれまで通りみれるが、それ以外の場合は指定したページへリダイレクトされる。

ドキュメントルートに直接置いているような html ファイルはこの処理を挟まないので、そこも厳密に見る場合はサーバーの方で設定した方が良さそう。

固定IPじゃない場合などは token をつけて確認する

IPアドレスで指定できない場合は、tokenを作ってそれをパラメータとして付けてみてもらうということもできる。

'maintenanceModeEnabled'            => false,
    'maintenanceModePageUrl'            => '/offline',
    'maintenanceModeResponseStatusCode' => 403,
    'maintenanceModeAuthorizedIps'      => [
        '::1',
        '127.0.0.1',
    ],
    'maintenanceModeAccessTokens' => [
        'gecpqdfbfhvtnwjmfnazdejtvtraguvu' <= ここで指定したパラメータを利用する
    ],

指定したパラメータを使って

example.com/?access=gecpqdfbfhvtnwjmfnazdejtvtraguvu

のようなURLでアクセスすれば、IPが違っていても見ることができる。

固定IPじゃない場合や、スマホから確認する場合などは使えるかもしれない。


アップデート時などにメンテナンスモードを使いたいといったときには使いやすいプラグインだと思う。

ただ、実際にはこのプラグインでメンテナンスモードをオンにしたうえで、Craft CMSのアップデートとか、他のプラグインだったり開発した内容のアップデートをすることになるので、そのアップデート作業自体でこのプラグインとの関係で何かが起こったりしないか、、、とかは気になるところではあるが。