CakePHP2を既存のシステムに組み込んでみました 

久々更新! @ojimacです。

ここ3ヶ月くらい、coobooに加えて、とあるサービスの開発担当をしているのですが、
最近、フレームワークをphpで書かれたオレオレフレームワークからCakePHPへの移行を少しずつ進めています。

一部のみCakeを使って運用するという構成は今回が初めてで、
しかも2系を使ったこともあり、組み込むための設定が通常とは異なっていました。
忘れてもいいように、ここにメモしておきます。
使ったCakePHPのバージョンは、2.1 stableです。

<システムのディレクトリ構成>
※ 本番とはディレクトリ名等変えています

/home/ojimac/htdocs/hoge.com/public_html/ <- DocumentRoot
/home/ojimac/htdocs/hoge.com/app/         <- CakePHPのappとは別です><
/home/ojimac/htdocs/hoge.com/cakephp      <- CakePHPで書いた部分のコード
/home/ojimac/cakephp/lib/Cake             <- CakePHP本体

のようになっているとします。
※ appディレクトリが同階層にあるため、CakePHPで書いたコードだと分かりやすいように、デフォルトから変更しています。

http://hoge.com/cake/controller/action

のようなURLでアクセス可能にしたいときの例です。

1. public_html以下にシンボリックリンクのディレクトリcakeを作ります

shell> cd /home/ojimac/htdocs/hoge.com/public_html/
shell> ln -s ../cakephp/webroot cake

2. /home/ojimac/htdocs/hoge.com/cakephp/webroot/index.phpを修正します
※ ユニットテストを行う場合、webroot/test.phpも修正が必要です。修正箇所は同じでした。

define('ROOT', DS . 'home' . DS . 'ojimac' . DS . 'htdocs' . DS . 'hoge.com');
define('APP_DIR', 'cakephp');
define('CAKE_CORE_INCLUDE_PATH', DS . 'home' . DS . 'ojimac' . DS . 'cakephp' . DS . 'lib');

3. http://hoge.com/cake にアクセスすると、CakePHPデフォルトの画面が出てくるので、

  • Security.salt
  • Security.cipherSeed

を適宜修正します。

4. /home/ojimac/htdocs/hoge.com/cakephp/Config/database.php
がないとエラー表示されるので、

/home/ojimac/htdocs/hoge.com/cakephp/Config/database.php.default

を元に、database.phpを作ります。

shell> mv database.php.default database.php
shell> vi database.php

この辺りの流れは1.3系と同じですね。
database.php内で、encodingがはじめから書いてあるところが1.3系と違いました。

5. ここまでで設定が間違っていなければ、

http://hoge.com/cake/

にアクセスすると、オールグリーンになっているかと思います。

6. Htmlヘルパーのimageメソッドを使った時、デフォルトではwebroot/imgディレクトリ以下を見に行くので、
既存システムと共通で使えるよう、既存のアプリの静的ファイルがあるディレクトリ(public_html/template/img)にシンボリックリンクを設定しておきます。

shell> cd /home/ojimac/htdocs/hoge.com/public_html/img
shell> ln -s ./../../public_html/template/img img

以上です!

開発を進めていくと、既存システムとの兼ね合いで、規約から外れていることをしなければいけない場面もあり、
ところどころハマリどころが用意されていますね...
そのあたりについてはまた別エントリーで。

参考URL)
- 公式ドキュメント: http://book.cakephp.org/2.0/ja/installation/advanced-installation.html

Comments are closed.