[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

Vagrant で手軽に CakePHP 開発環境が作れる Cakebox で CakePHP1を動かす

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/ を開いてみます。

20160428_1.png

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

これで、スタイルも適用されました。

20160428_2.png

あとは、セキュリティの警告が出ているのでこれも消しておきましょう。ホスト側の cakebox/Apps/mycake0.app/config/core.php の Security.saltSecurity.cipherSeed を適当な値に書き換えてやれば OK です。

20160428_3.png

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からデータベースが利用できるようになりました。ウェルカムページにもその旨がメッセージとして表示されています。

20160428_4.png

まとめ

Cakebox で CakePHP1を動作させる手順をご紹介しました。これによって、CakePHP のメジャーバージョン1~3を同一サーバ上で動かせる環境が手に入ります。何かのはずみで CakePHP1のことを思い出したくなったら、この記事をお役立てください。

この記事を読んだ人にオススメ