CakePHP3.2が出ましたね。
3.2はPHP5.5.9以上がrequiredになっています。が!私のローカル環境(Mac)のPHPは5.4!
というわけで、どうにかすることにしました。。。
phpenvというので複数バージョンのPHPを入れてみようと思ったけどうまくいかず挫折し、前に使ってみたのが残ってたVagrantのVirtualBoxのCentOSなやつに入れようと思ったらintlが入ってなくてpecl installしようと思ったけどうまくいかず挫折し、Cakeboxというのを見つけたので、これを使うことにしました。
https://github.com/alt3/cakebox
Cakeboxのインストール
書いてある通りにやればいいのですが、VagrantとVirtualBoxはすでに入れてあったので割愛。
git clone https://github.com/alt3/cakebox.git
cd cakebox
cp -pi Cakebox.yaml{.default,}
ローカルにあるworkspaceディレクトリを共有させたいので、Cakebox.yamlファイルを編集して追加します。
synced_folders:
- local: Apps
remote: /home/vagrant/Apps
- local: /Users/ran/workspace
remote: /home/vagrant/workspace
仮想マシンを起動します。
vagrant up
初回は時間がかかります。
完了したら仮想マシンにsshします。
vagrant ssh
設定
仮想マシンでcakebox application add アプリケーション名
とするとアプリケーションを作って諸々設定してくれますが、ソースはすでにあるので、バーチャルホストとDBの設定だけをします。
バーチャルホストの設定
cakebox vhost add cakebox-myproject /home/vagrant/workspace/myproject/app/webroot
サーバー名(cakebox-myproject)とドキュメントルートを指定します。
cakebox-myproject
の部分は何でもいいのですが、プロジェクト名の頭にcakebox-を付けることにしました。
これで /etc/nginx/sites-available/
以下にNginxの設定ファイルが作成され、/etc/nginx/sites-enabled/
以下からシンボリックリンクが張られている状態になります。
ローカルマシンの/etc/hosts
に以下を追加します。
10.33.10.10 cakebox-myproject
ローカルのブラウザからhttp://cakebox-myproject/
でアクセスできるようになりました。
データベースの設定
cakebox database add -u dbusername -p dbpassword mydbname
CakePHPがアクセスするユーザー名(dbusername)とパスワード(dbpassword)を指定してmydbnameというデータベースを作成します。
必要なテーブルをCakePHPのmigrationsで作成します。
cd workspace/myproject/app
bin/cake migrations migrate
おまけ
私は環境変数CAKE_ENVを設定して、各種設定値を開発と本番で読み分けたりしているので、バーチャルホストでも同様の設定をしました。
/etc/php5/fpm/pool.d/www.conf
に以下を追加します。
env[CAKE_ENV] = local
sudo /etc/init.d/php5-fpm restart
とか(stopとかstartとか)やってみたんですが、どうも再起動されないようなので、vagrant halt
して vagrant up
しなおしました。
なんでrestartできないのか…。
まとめ
というわけで、割とスムーズに環境構築できました。
cakeboxコマンドでnginxの設定ファイルができたり、DBが作れたりするのは便利ですね。
ちなみに http://10.33.10.10/
を開くと、設定されているものの一覧が見れます。betaなので見るだけっぽいですが…。
でもそれぞれのアプリケーションのCakePHPのバージョンが一覧できるのはちょっと嬉しいかも。