CakePHPでMongoDBを使ってみる

CakePHPでMongoDBが動くまで

CakePHP側の準備

WEB ROOT
/var/www/html

CakePHPを取得
/var/wwwにlibを作成

libでCakePHPを取得
git clone git://github.com/cakephp/cakephp1x.git
ブランチを1.3に切り替え
git checkout origin/1.3

これでCakePHP1.3がlibにインストールされた状態。

appを公開用フォルダに移動
(本番はWebrootだけ移動するのが望ましい)

cp /var/www/lib/cakephp1x/app /var/www/html/projectname

webrootのindex.phpのパスの定義を修正

ROOT, APP_DIR, CAKE_CORE_INCLUDE_PATHの内容を実際の構成に合わせて変更

	if (!defined('ROOT')) {
		define('ROOT', DS.'var'.DS.'www'.DS.'html');
	}
	if (!defined('APP_DIR')) {
		define('APP_DIR', 'projectname');
	}
	if (!defined('CAKE_CORE_INCLUDE_PATH')) {
		/* define('CAKE_CORE_INCLUDE_PATH', ROOT); */
		define('CAKE_CORE_INCLUDE_PATH', DS.'var'.DS.'www'.DS.'lib'.DS.'cakephp1x');
	}

MongoDBのインストールと起動はここを参照。
http://d.hatena.ne.jp/camelmasa/20100222/1266798151
起動スクリプトなど作成するならここを参照。
http://www.ihpsystem.com/blog/196

PHPからMongoDBを操作するためのライブラリをインストール

pecl install mongo

php.iniにextension=mongo.soを追加
php.iniにコメントでextentionを入れるための場所が定義されてるので、そのあたりに追加)

MongoDB-Datasourceをインストールする

app/plugins/に移動

git clone git://github.com/ichikaway/mongoDB-Datasource.git

mongoDB-Datasourceに本体がダウンロードされるので、ディレクトリ名をmongodbに変更する

app/config/database.phpを編集

	var $mongo= array(
	    'datasource' => 'mongodb.mongodbSource',
	    'database' => 'test',
	);

あとはDB側で$mongoを使用するように設定する。
もしくはdatabase.phpのdefaultをmongoDBの定義にしても良し。

mongodbのデフォルトポートは27017