信頼はずっと、挑戦はもっと。

お問い合わせ
TEL:03-3496-3888

BLOG コアテックの社員ブログ (毎週月曜~金曜更新中)

2013

17

6月

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

この記事を書いた人

マスオさん

coretech

所 属:
WEBインテグレーション事業部
出身地:
渋谷
仕事内容:
Web制作