メンテナンスモードを簡単実装できるMaintenance plugin
開発環境:CakePHP2.5.1
サイト全体へ影響するようなバグ修正や機能追加などのために、一時的にサイトをメンテナンスモードにする必要がある場合があります。
そのような時に簡単にメンテナンスモードに変更できるプラグインが Maintenance plugin for CakePHP です。
それでは導入手順を見ていきましょう。
Maintenance pluginをダウンロード
まず最初はGithub上に公開されているソースをダウンロードします。
https://github.com/fusic/maintenance
リネームして設置
ダウロードしたファイルを解凍し、Maintenance とリネームして app/Plugin/Maintenance に設置します。
bootstrap.phpに読み込む設定を追記
設置したMaintenanceを読み込むために、app/Config/bootstrap.php に下記のコードを追加します。
CakePlugin::load('Maintenance');
AppControllerでインクルード
Maintenanceの読み込みが完了したので、実際に利用するために app/Controller/AppController.php でコンポーネントを呼び出します。
class AppController extends Controller { public $components = array( 'Maintenance.Maintenance' => array( 'maintenanceUrl' => array( 'controller' => 'maintenance', 'action' => 'index' ), ) ); }
設定として、maintenanceUrl にメンテナンスのURLを指定します。
メンテナンスのControllerとViewを設置
上記で指定したコントローラーとビューファイルをそれぞれ設置します。
今回は app/Plugin/Maintenance/Controller/MaintenanceController.php と app/Plugin/Maintenance/View/Maintenance/index.ctp となります。
レイアウトファイルもメンテナンス用にする場合は、app/Plugin/Maintenance/View/Layouts/default.ctp を置けばこちらのファイルを読み込んでくれます。
最後にメンテナンスモードをONにする
最後、メンテナンスモードにするために、app/config/bootstrap.php に設定を追加します。
Configure::write('Maintenance.enable', true);
ここを true / false にすることでメンテナンスモードを切り替えることができます。
メンテナンスモードをタイマー設定にする
上記のように’Maintenance.enable’で指定すると、その瞬間からメンテナンスモードになりますが、深夜1時からメンテナンスモードに自動で切り替えたいというケースもあるかと思います。
その場合は、上記の bootstrap.php への設定は行わず、代わりに app/tmp/maintenance というファイルを作成し、いつから開始との情報を記載することで自動で切り替わる仕組みにすることができます。
例えば 2014/1/1〜2014/1/3とする場合は、
2014-01-01 00:00:00,2014-01-03 23:59:59
2014/1/1〜ずっとの場合は、
2014-01-01 00:00:00,
2014/12/31までずっとの場合は、
,2014-12-31 23:59:59
ステータスコードもしっかり指定
以上の設定で全て完了で、実際にサイトにアクセスしてみると、上記の例の場合、/maintenance にリダイレクトされているのが確認できます。
その際はステータスコードの307を返し、一時的なリダイレクトであることをクローラーに対し伝えてくれます。