cakephp3で開発環境と本番環境の設定を切り替える

  • このエントリーをはてなブックマークに追加
  • Pocket

開発、デモ、本番環境でそれぞれ違うDB、ユーザだったりするわけだけど、どうもcake3の文献をあさってもここらのお話が見当たらないので、僕の好きなFuelPHPを参考にしていろいろやってみた。

とりあえずDBを環境によって切り換えられればOKだったのでそれの備忘録。

これくらい標準で用意しておいてほしいんですが、、、 僕のやり方がおかしいのかな?

FuelPHPでは

まずFuelでどうなってるかというと

FuelPHP には 4 つの定義済みの環境があります。 ・\Fuel::DEVELOPMENT 開発環境。 ・\Fuel::TEST テスト環境。 ・\Fuel::STAGING ステージング環境。 ・\Fuel::PRODUCTION 本番環境。

もうこの時点でcool.

あとは、Webサーバのconfigにいずれかを設定すればOK。

これでそれぞれの設定ファイルを見てくれるようになる。

特に設定しなければデフォルトでDEVELOPMENTになるように fuel/app/bootstrap.php で制御されてる。

さて、問題のcakeさんでは。。。

Cakeでは

まず、文献がない。
リファレンスにない。
なんかgithubを見ろとか書いてあった気がするけど、その前に早くリファレンスの日本語訳をやってくれよ。

ないないばっかでは始まらないので、とりあえずconfigを見てみる。

config/app.phpが設定ファイルのようだけど、中をみると

なんとなくいけそうな雰囲気はある。
雰囲気だけだったけど。

「環境によってDBの設定も切り換えれるんですよー^^v」
と言ってる割にはそのやり方が書いてないし、各自自由にやれってことなのか?

ないもんは仕方がないので、Fuelにならって実装してみる。

cake3で環境変数を取得して接続するDBを変更する

どうもConnectionManagerってのを使って、デフォルトの接続先をごにょごにょできるらしい。

標準だと、Datasources => ‘default’の設定を読み込むようなので、こいつを書き換える。  

・・・のは怖いので、 ConnectionManagerでエイリアスを設定できるらしくこっちで勝負。

bootstrap.php

config/bootstrap.phpの最後ら辺に以下を追加。

まったく関係ないけど、なんでTwitterはcssツールキットをbootstrapという名前にしたんだろうか?

app.php

デフォルトだとDatasourcesにはdefaultとtestしかないのでもう一つなにか足してみる。

どちらも本番環境っぽくないので、productionとでもしてDatasourcesに追加。

Nginx conf

cakeの方はできたので、Webサーバに環境変数をセットする。

nginxでの環境変数は location ~ \.php$ {} の中に書くらしい。

これでOK。

Apacheはー
.htaccessかhttp.confにSetEnvで環境変数を設定。

好みの問題だろうけど、あんまり.htaccessが好きでないのでhttp.confに。

設定完了

あとはDatasourcesの中をいじるなり、デバックモードをoffにするなり、そもそもapp.php自体を環境によって分けたり、コロ助なり。

これで自由に設定できるようになった。

もうデプロイする時にgit checkoutして、git pullして、値を書き換えて、、、、
なんてことから解放されるね!
いっそのことFuelのようにconfig以下に各環境のディレクトリを作成してそこを読ませるってのもできるかな?

なら最初からFuel使うよね。

そういえばcakeって「Rapid development PHP framework」と謳ってるじゃん?
なんだか素早く開発できそうな書きっぷりをしてるじゃん?

CakePHPはPHP用の高速開発フレームワークです。アプリケーションの開発、メンテナンス、インストールのための拡張性の高い仕組みを提供します。 MVC や ORM といった、よく知られているデザインパターンを、「設定より規約優先」の考え方で利用して、CakePHPは開発コストや開発者が書く必要のあるコードを減らします。

まず、高速に開発できてねーし、コードも減らせてねーどころか増えとるわ
もう嫌なんだよコントローラで$this->の嵐は。

なにが$thisだよ。
素のPHPでも書けるわ。

あんまり悪口ばっかいうのもアレだと思うけど、僕には合わないようだ。

  • このエントリーをはてなブックマークに追加
  • Pocket

SNSでもご購読できます。

コメントを残す

*