CakePHPで構築したWebサービスのメンテナンスモードを簡単に実装する【Maintenance plugin】

CakePHPでメンテナンスモードを簡単に実装する【Maintenance plugin】 CakePHP2

このCopyContentDetectorはCakePHPで実装しています。サービスを運用していくなかで、どうしてもメンテナンスが必要な時があります。そのメンテナンスモードを簡単に実装できるプラグインを紹介します。

■Maintenance plugin

メンテナンスモードを簡単に実装できるプラグインです。導入後はbootstrap.phpにフラグを設定するだけでメンテナンスモードになります。設定方法を紹介します。

■導入までの手順

1.ダウンロードしてくる

gitHub上にソースコードが公開されています。gitHubのプロジェクトから、対象のプラグインをzipでダウンロードしてきます。

2.app/Pluginの下にmaintenaceというディレクトリ名で配置

ダウンロードしてきたzipを展開したあと、app/Pluginディレクトリにmaintenanceというディレクトリ名に変更して配置します。

3.bootstrap.phpに読み込み設定を記述

bootstrap.phpに以下の記述をして、読み込み設定を行います。

// メンテナンスモードプラグインの導入
CakePlugin::load('Maintenance');
Configure::write('Maintenance.enable', false); // trueにするとメンテナンスモードになる

 

4.AppController.phpにメンテナンスモードの設定を記述

AppControllerに設定を記述します。コンポーネントなので、$componentsに記述をします。今回の設定は、リダイレクト先とメンテナンスモード中でもアクセス可能なIPの一覧です。他にもいろいろ設定できるようです。

	// コンポーネント読み込み
	public $components = [
		'Maintenance.Maintenance' => [
			'maintenanceUrl' => [
				'controller' => 'pages', // メンテナンス中にリダイレクトする
				'action' => 'maintenance',
			],
			'allowedIp' => [ 
				'10.0.2.2',  // メンテナンス中も接続可能なIPアドレス
				'127.0.0.1',
			],
		],
	];

 

5.メンテナンスページを作成

今回はPagesコントローラーに作成しました。他のコントローラーでも問題ありません。

AppController.php

<?php
App::uses('AppController', 'Controller');

class PagesController extends AppController {
	public function maintenance() {

	}
}

 

View/Pages/maintenance.ctp

現在システムメンテナンス中です。今しばらくお待ち下さい。

 

これで、設定が完了です。bootstrap.phpのMaintenece.enableを以下のようにtrueにすると、すべてのアクセスがPages/maintenanceにリダイレクトされるようになります。

Configure::write('Maintenance.enable', true);

 

メンテナンスモード

かなり簡単にメンテナンス画面が実装できます。また、htaccessで設定した時のように抜け漏れも発生しにくいかと思います。参考にしてみてください。では。