公開日:2013.06.17

Laravel4 で特定のIPアドレスからのアクセスを許可するメンテナンスモードパッケージを作りました。

テクログ

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

この記事を書いた人

core-corp

入社年2010年

出身地東京都

業務内容インフラ

特技または趣味ドライブ

core-corpの記事一覧へ

テクログに関する記事一覧