Vagrant で手軽に CakePHP 開発環境が作れる Cakebox で CakePHP1を動かす
職業 PHPer ながら近ごろは趣味の範囲で Ruby も書く kagata です。ゴールデンウィークは Ruby on Rails でアプリを作って過ごす予定です。
さて、今回は CakePHP1系の開発環境をちゃちゃっと立ち上げるお話です。Cake1なんていつの話なんでしょう…役に立つ場面はもうないと思いたいのですが、実際そうもいかなかったので備忘のためにまとめておきます。
おさらい:Cakebox について
Cakebox は Vagrant を使って CakePHP アプリケーションの開発環境をかんたんに立ち上げるためのツールです。以前にも一度ご紹介したことがありました。
Vagrant で手軽に CakePHP 開発環境が作れる Cakebox に WordPress を同居させる | バシャログ。 | 横浜でWeb制作を行うシーブレインスタッフによる技術情報ブログ
Cakebox では CakePHP のメジャーバージョンとして2系もしくは3系が選択できます。
$ cakebox application add mycake2.app -f cakephp -m 2
1系は選択できません。残念ながら…といいたいところですが、1系は開発が終了してもうずいぶん経ちます。いまさら需要もないということなのでしょう。
そう思っていたところ、先日仕事の都合で CakePHP1系と2系の挙動の違いを確認したい事情ができてしまいました。そこで、Cakebox に手作業で CakePHP1をインストールしてみたのでした。
本題:Cakebox に CakePHP1をインストールする
そんなわけで、Cakebox に CakePHP1をインストールしてみます。準備として、Cakebox で仮想マシンを立ち上げて SSH でログインしておきます。手順は上でもご紹介した前回の記事をご参照ください。
1. バーチャルホストを作成する
まずは CakePHP1を設置するバーチャルホストを作成します。バーチャルホストは cakebox
コマンドで作成できます。
$ mkdir /home/vagrant/Apps/mycake1.app
$ cakebox vhost add mycake1.app /home/vagrant/Apps/mycake1.app
コンソールに出力される指示に従ってホスト側の hosts ファイルにバーチャルホスト向けの設定を追加すると、ホスト側の cakebox/Apps/mycake1.app/ に置いたものが http://mycake1.app/ から見えるようになっているはずです。
2. CakePHP1 を設置する
続いて、1で作成したバーチャルホストのドキュメントルートに CakePHP1を設置します。
CakePHP1系は1.3.21が最新かつ最終バージョンです。
Release CakePHP 1.3.21 Released · cakephp/cakephp
上のサイトからダウンロードしてホスト側の cakebox/Apps/mycake1.app/ に展開しましょう。もしくは、 SSH から下の要領で進めても OK です。
$ curl https://codeload.github.com/cakephp/cakephp/tar.gz/1.3.21 -o cakephp1.tar.gz
$ tar xzf cakephp1.tar.gz
$ mv cakephp-1.3.21/* /home/vagrant/Apps/mycake1.app/
この段階で、ブラウザから http://mycake1.app/ を開いてみます。
CakePHP1のウェルカムページが表示されますが、スタイルが崩れて見えます。これはバーチャルホストのドキュメントルートを CakePHP のルートディレクトリから webroot に変更してやれば解決します。SSH から以下の要領で設定を変更しましょう。
$ sudo sed -i -e 's!root /home/vagrant/Apps/mycake1.app;!root /home/vagrant/Apps/mycake1.app/app/webroot;!g' /etc/nginx/sites-enabled/mycake1.app
$ sudo /etc/init.d/nginx restart
これで、スタイルも適用されました。
あとは、セキュリティの警告が出ているのでこれも消しておきましょう。ホスト側の cakebox/Apps/mycake0.app/config/core.php の Security.salt
と Security.cipherSeed
を適当な値に書き換えてやれば OK です。
3. データベースに接続する
データベースを使わないのであれば、ここまでの設定で準備完了です。
データベースが必要な場合は、さらに続けてデータベースを準備しましょう。Cakebox はデフォルトで cakebox@localhost という MySQL ユーザを持っていて、 cakebox
コマンドから CakePHP アプリケーションを立ち上げるとこのユーザがデータベース接続に使われます。CakePHP1もこのユーザで MySQL に接続することにします。
$ mysql -uroot -p # パスワードは "secret"
mysql> CREATE DATABASE mycake1_app;
mysql> GRANT ALL ON mycake1_app.* TO cakebox@localhost;
そして、準備したデータベースに CakePHP1から接続しましょう。 cakebox/Apps/mycake1.app/config/database.php にデータベース接続設定を記述します。
<?php
class DATABASE_CONFIG
{
public $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'cakebox',
'password' => '',
'database' => 'mycake1_app',
);
}
これで、CakePHP1からデータベースが利用できるようになりました。ウェルカムページにもその旨がメッセージとして表示されています。
まとめ
Cakebox で CakePHP1を動作させる手順をご紹介しました。これによって、CakePHP のメジャーバージョン1~3を同一サーバ上で動かせる環境が手に入ります。何かのはずみで CakePHP1のことを思い出したくなったら、この記事をお役立てください。