今更だが、古いCakePHP2.x系のソースを修正する必要があり、
メンテナンスモードを簡単に実装するため、以下のプラグインを使用。
ただ、TOPページはCakePHP3.x系のものっぽいので、
branchesをたどり、以下の2.x系のソースをダウンロードして使用する。
GitHub - fusic/maintenance at master
ソースコード一式をダンロードし、解凍後のフォルダを「Maintenance」とリネームして
app/Pluginに入れる。また自分の場合は、メンテナンス用のレイアウトも使用したかったため
以下のようにソースを修正または追加した。
[修正] app/Config/bootstrap.php
<?php // メンテナンスモードプラグインの導入 CakePlugin::load('Maintenance'); // trueにするとメンテナンスモードになる Configure::write('Maintenance.enable', false);
[修正] app/Controller/AppController.php
詳細は後述するが、
・メンテナンス用のコントローラ
・メンテナンス用のビュー
・メンテナンス用のレイアウト
を作成し、自分の開発環境からのIPを除外する前提で、AppController.phpを編集する。
controllerに「メンテナンス用のコントローラ」、actionに「メンテナンス用のビュー」を設定
そして自分の開発環境IPを「xxx.xxx.xxx.xxx」に設定する。
<?php class AppController extends Controller { public $components = array( 'Maintenance.Maintenance' => array( 'maintenanceUrl' => array( 'controller' => 'maitenance', 'action' => 'index' ), 'allowedIp' => array('xxx.xxx.xxx.xxx', '127.0.0.1'), // allowed IP address when maintanance status # 'allowedAction' => array('posts' => array('index'), 'users' => array('*')) // allowed action when maintanance status ) ); }
[追加] app/Plugin/Maintenance/Controller/MaintenanceController.php
<?php App::uses('AppController', 'Controller'); class MaintenanceController extends AppController { public function index() { $this->autoLayout = false; $this->layout = 'maintenance'; } }
[追加] app/Plugin/Maintenance/View/Maintenance/index.ctp
※任意の文字を設定
現在システムメンテナンス中です。今しばらくお待ち下さい。
[追加] app/Plugin/Maintenance/View/Layouts/default.ctp
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>メンテンナンス</title> </head> <body> <?php echo $this->fetch('content'); ?> </body> </html>
これで準備は完了。
メンテナンスモードにするには、
app/Config/bootstrap.phpの以下をtrueにすればOK
<?php Configure::write('Maintenance.enable', true);
タイマー設定もでき、「app/tmp/maintanance」のファイルを作成し、
ファイル内に以下のように設定できることでタイマー設定ができる。
例1: Maintenance 2011/1/1 ~ 2011/1/3
2011-01-01 00:00:00,2011-01-03 23:59:59
例2: Maintenance 2011/12/28 ~
2011-12-28 00:00:00,
例3: Maintenance ~ 2011/3/31 12:00
,2011-03-31 12:00:00
[参考]
GitHub - fusic/maintenance at master
メンテナンスモードを簡単実装できるMaintenance plugin | CakePHPクッキング
Maintenance plugin for CakePHPの組み込み : 儲かる気がしないスマホアプリ開発日誌