2013.06.17
STAFF BLOG
スタッフブログ
TECHNICAL
テクログ
Laravel4 には標準でメンテナンスモードが用意されています。
$ php artisan down # メンテナンスモードに入ります
$ php artisan up # メンテナンスモードを解除します
このメンテナンスモードは、storage/meta/down という空ファイルの存在のみが基準なので、メンテナンスモード中は社内からのアクセスも出来なくなります。メンテナンスモードでソースの更新やDBのマイグレーションを行い、社内からアクセスして確認後、メンテナンスモードを解除。というフローは、現バージョン(4.0.5)では無理です。
今回、Laravel4 のパッケージ作成方法の調査がてら、特定のIPアドレスからのアクセスを許すメンテナンスモードパッケージを作成しました。
https://github.com/core-tech/laravel-packages-exdown
https://packagist.org/packages/core-tech/exdown
以下、パッケージの作成方法と、作成したパッケージのインストール方法です。
パッケージの作成方法
作成したパッケージを使いたいだけであれば、読み飛ばして頂いて構いません。
以下、Laravel4 のプロジェクトルートに居ることとします。
composer コマンドにパスが通っていなければ、通します。実行権限も与えておきます。以下はMacでの例です。OS毎の差異等は調整して下さい。
$ sudo cp composer.phar /usr/bin/composer
$ sudo chmod +x /usr/bin/composer
app/config/workbench.php の name と email を変更しておきます。name は必須です。この値はパッケージ用に自動生成される composer.json で使われます。
artisan workbench でパッケージの雛形を生成します。
$ php artisan workbench core-tech/exdown --resources
Package workbench created!
resources オプションをつけることで、以下も併せて作成されます。
public
src/config
src/lang
src/migrations
src/views
app/config/app.php の providers に
CoreTechExdownExdownServiceProvider
を追加します。
ブラウザから適当にアクセスして何のエラーも出なければOKです。 ExdownServiceProvider に対する not found のエラーが出たならどこかで失敗しています。
ExdownServiceProvider に到達しているか確認してみます。
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
?dd("test");
}
ブラウザからアクセスすると、到達していました。
作成したパッケージのインストール方法
composer.json の require に 以下を追加して update します。
"core-tech/exdown": "dev-master"
app/config/app.php の providers に
CoreTechExdownExdownServiceProvider
を追加します。メンテナンスモード判定パッケージなので、先頭に追加するのが良いと思います。
以下のコマンドで config ファイルを app 下にコピーします。
$ php artisan config:publish core-tech/exdown
config ファイルの “allowed_ips” は許可するIPアドレス一覧です。
config ファイルの “view” は使用する view ファイル名です。
パッケージの config を環境毎に設定したい場合は、ヤマジュンの記事 を参考にして下さい。
以下でメンテナンスモードになります。
$ php artisan exdown
以下でメンテナンスモードが解除されます。
$ php artisan exup