それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

OpenPNEをSQLiteでインスト-ル@Ubuntu

OpenPNEをsymfony1.2のアプリの評価版として入れようとした。

Ubuntu+SQLITEで動かしてみる。

UbuntuでPNEをWgetして動かそうとしたら、symfonyのディレクトリ解決で動かない。結局PEARから入れることになった。OpenPNEの同梱symfonyは無駄なんじゃないかと。

PNEはMySQLらしいが、SQLiteが使いたい。

インストール準備

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 #

*1
PHPで必要なパッケージが、

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は進めていきたいので、一日一通を目指します。

OpenPNEMySQLの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 DBMSSQLite Type database name にフルパス。あとは適当。

エラー無くINSTALLは成功

でも画像云々と開発Wikiに書いてあるから心配だ

動作確認とか

力尽きたのでまた明日。

*1:/etc/php5/conf.d/pdo_sqlite.iniが作成され無いことがある。次項のメモリ量をいじってから再実行すると言い