OpenPNEをsymfony1.2のアプリの評価版として入れようとした。
Ubuntu+SQLITEで動かしてみる。
UbuntuでPNEをWgetして動かそうとしたら、symfonyのディレクトリ解決で動かない。結局PEARから入れることになった。OpenPNEの同梱symfonyは無駄なんじゃないかと。
インストール準備
sudo aptitude install php5 php-cli php-pear php5-gd php5-xsl sudo pear channel-discover pear.symfony-project.com sudo pear install symfony/symfony sudo pecl install pdo_sqlite #
xsl
gd
pdo (php5.xなら標準)
pdo_sqlite
PDOやXSLモジュールは標準で入ってないこともあるのですよ。PDOとXSLはPropelが使う。PDOはデータベース。XSLはSchema.xmlの解釈に必要。
symfonyのPne:installコマンドでこけるのでメモリを多めに確保。
sudo vim /etc/php5/cli/php.ini 270 memory_limit = 512M ; Maximum amount of memory a script may consume #270 行目PHPコマンドで使うメモリを512MBに拡張
OpenPNEの3.0を持ってくる。
wget http://nchc.dl.sourceforge.net/sourceforge/openpne/OpenPNE-3.0.0.zip unzip OpenPNE-3.0.0.zip mv OpenPNE-3.0.0 /home/takuya/var/www/pne ln -s /home/takuya/var/www/pne/web /home/takuya/public_html/pne
さっそくインストールコマンドを試してみる
ここまで散々こけていて、期待してないけれど。試してみる。
$>./symfony openpne:install Choose DBMS (mysql, pgsql or sqlite) sqlite Type database username hoge Type database password (optional) hoge Type database hostname hoge Type database name /home/takuya/var/www/pne/data/sqlite/pne.db The DBMS sqlite The Database Username hoge The Database Password ****** The Database Hostname hoge The Database Name /home/takuya/var/www/pne/data/sqlite/pne.db The Database Socket Is it OK to start this task? (y/n) y
結果:真っ赤っか。予想通り。
見事に、こける。
schema.ymlを見てみる。
1 dev: 2 propel: 3 param: 4 classname: DebugPDO 5 all: 6 propel: 7 class: sfPropelDatabase 8 param: 9 dsn: 'sqlite:dbname=/home/takuya/var/www/pne/data/sqlite/pne.db;hostname=hoge' 10 username: hoge 11 encoding: utf8 12 classname: PropelPDO 13 persistent: true 14 pooling: true 15 password: hoge
DSNの書式がおかしい。これは酷すぎる。SQLITEが選択肢にあるのに、動作チェックしてないんじゃないか。
これだからPNEのコミュニティーは・・・
標準データベースはSQLITEでは在りません。
http://groups.google.co.jp/group/openpne-dev/msg/e1bab4ad29dc64d3
手嶋です。またもや日付があいてしまいました。
手嶋屋のスタッフはみんな忙しいですね。。ちょっとでもsymfonyは進めていきたいので、一日一通を目指します。
OpenPNEはMySQLのDBセットアップが大変なので、楽をするためにSQLiteを標準の
DBにしたいなと思っています。
はいはい。それを目指すのね。INSTALL位はチェックしといてよ。
開発WIKIを見てみる。
こんなこというなら少しくらいチェックしてほしい。
SQLite対応Wiki
http://trac.openpne.jp/wiki/db-sqlite
画像や大量のバイナリをSQLiteに確保できるか?
Postgres MySQLで使っているSQL内関数が使えるか?
日付の扱いに問題は無いか?
Likeの取り扱いは?
NULL値の取り扱いは?
AutoIncrement?そのままいけるか?
うんとね。無理じゃないかな。画像はBASE64でテキスト化するなりserializer使うだろう。うん。
互換性考えるならBLOBタイプ使うべきじゃないと思うな。
SQLiteでINSTALL実行するためのパッチを書いた
lib/task/openpneInstallTask.class.php
78 79 protected function createDSN($dbms, $hostname, $dbname, $sock) 80 { 81 $result = $dbms.':'; 82 83 if( $dbms == "sqlite" ){ 84 `touch $dbname ; chmod 777 $dbname ;`; 85 return "sqlite:/{$dbname}" ; 86 } 87
取りあえずINSTALLは成功
$>symfony openpne:install
Choose DBMSでSQLite Type database name にフルパス。あとは適当。
エラー無くINSTALLは成功
でも画像云々と開発Wikiに書いてあるから心配だ
動作確認とか
力尽きたのでまた明日。