OpenPNE3.0がリリースされたのでインストールまでしてみる
2009-01-29 01:35 | IT
昨日、新生OpenPNE3.0.0がリリースされました。
今回のリリースの大きな特徴はなんといってもベースとしてsymfonyを採用したことです。
しかも開発のコミュニティーを見ているとsymfonyの採用バージョンを1.1から1.2へと途中で変えたり、いろいろ試行錯誤があったようです。
最新ソースはこちらのリポジトリか、zipファイルで取得できます。
インストール
それでは作業を進めていきます。
ソースのダウンロードと、展開を行います。
wget http://downloads.sourceforge.net/openpne/OpenPNE-3.0.0.zip unzip OpenPNE-3.0.0.zip
展開されたファイル群の中からNOTICEを見てみると、
This product needs the third-party softwares listed blow to run. - PHP: Hypertext Preprocessor (5.2.x) - symfony (1.2.x)
と、symfony1.2以上、PHP5.2以上が必要だと明記されています。
この環境にはすでにsymfony1.2.2とPHP5.2.6がインストールされていますのでこのまま進めてみます。
DBはMySQLを利用し、
dbname=openpne3, username=openpne3, password=password, host=localhost を用意しておきます。
OpenPNE用taskが追加されており、openpneで始まるtaskが用意されています。
利用可能なタスクは
symfony -T
で確認できます。
DBの設定とデータの初期化を行います。
symfony openpne:install
DBに関する設定をウィザード形式で進めていきます。
Choose DBMS (mysql, pgsql or sqlite)
mysql
Type database username
openpene3
Type database password (optional)
password
Type database hostname
localhost
Type database name
openpne3
Type database socket path (optional)
The DBMS mysql
The Database Username openpne3
The Database Password ******
The Database Hostname localhost
The Database Name openpne3
The Database Socket
Is it OK to start this task? (y/n)
y
#以下処理が流れていきます
設定が無事終わったら、パーミッションの設定を行います。
symfony openpne:permission
これでアクセス可能になります。
って簡単にいかない
順調に行けば上の通りなんですが、今回の環境ではスムーズには行きませんでした。
必要な環境はこちらに書かれています。
XSLがない
[propel-sql] Could not perform XLST transformation. Make sure PHP has been compiled/configured to support XSLT.
PHPのXSLエクステンションが入っていないらしい。
この環境のPHPはソースコンパイルでいれたものなので、ソースからエクステンションのみコンパイルします。
cd ~/php-5.2.6/ext/xsl phpize configure make sudo make install
configure途中で
configure: error: xslt-config not found. Please reinstall the libxslt>= 1.1.0 distribution
なんて出る場合は、libxsltをインストールしてから、再度configureを実行します。
sudo yum install libxslt-devel
生成されたxsl.soを読み込むようにphp.iniを編集します。
sudo vi /etc/php.ini extension=xsl.so
読み込まれたかどうかを確認します。
php -i |grep xsl xsl libxslt Version => 1.1.11 libxslt compiled against libxml Version => 2.6.16 libexslt Version => 1.1.11
これで大丈夫です。
PDOがない
Execution of target "insert-sql" failed for the following reason: /usr/local/lib/php/symfony/plugins/sfPropelPlugin/lib/vendor/propel-generator/build-propel.xml:275:1: [wrapped: could not find driver] [phing] /usr/local/lib/php/symfony/plugins/sfPropelPlugin/lib/vendor/propel-generator/build-propel.xml:275:1: [wrapped: could not find driver] Some problems occurred when executing the task: build-propel.xml:275:1: [wrapped: could not find driver] Read the logs to fix them
なにやら真っ赤です。
could not find driverということなので、DB接続ドライバーがないというエラーです。
symfony1.2が採用しているORMのPropelが1.3になっていて、このライブラリがpdo_mysqlを必要としています。
xslと同じ要領で
cd ~/php-5.2.6/ext/pdo_mysql phpize configure make sudo make install
入ったかどうかを確認します。
php -i |grep pdo pdo_mysql
OKです。
さらにメモリーエラー
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 35 bytes) in /usr/local/lib/php/symfony/util/sfToolkit.class.php on line 191
これは素直にメモリの作業領域が足りないので、php.iniのmemory_limitの値を大きくします。
sudo vi /etc/php.ini memory_limit = 64M
容量はメモリの許す範囲で。
番外編
openpneタスクコマンドでインストールしない方法もメモしておきます。
通常のsymfonyアプリケーションの手順になります。
DBの設定のためconfigディレクトリにdatabases.ymlを作成して、設定を書き込みます
vi config/databases.yml all: propel: class: sfPropelDatabase param: classname: PropelPDO dsn: mysql:dbname=openpne3;host=localhost username: openpne3 password: password encoding: utf8 persistent: true pooling: true
それから同じくconfigディレクトリのpropel.iniの一部を修正します。
vi config/propel.ini
propel.database.url = mysql:dbname=openpne3;host=localhost
propel.database.password = password
propel.database.user = openpne3
propel.output.dir = {ProjectRoot}#ここにはプロジェクトのパスを
DBにスキーマーを設定します。(DDL)
symfony propel:insert-sql
初期用のデータをインサートします。(DML)
symfony propel:data-load
これで動くようになりました。
所感
symfonyは採用されているプロジェクトはちらほらあるんですが、公式サイト以外ではなかなかまとまった情報が出てこなくて、ベストプラクティスみたいなものが手探りな感じがあるので、その辺りがあぶり出てくるといいなとsymfonyユーザーとしては期待しています。
少しソースをみたところだと、sfAction→sfOpenPNE*Action→通常のActionというように、間にOpenPNE用拡張クラスを入れていて、通常のActionに手をいれやすく設計されてますね。
もう少し読んでみたいと思います。
2 Responses to “OpenPNE3.0がリリースされたのでインストールまでしてみる”
By あんじー on 2009-01-29- 23:57
symfonyっていまでもいろいろ大変そうですね。
symfony0.63を入れる時にずいぶん懲りた記憶があってそれ以来ご無沙汰でした。
昔よりはフレームワーク自体も、ドキュメントもずいぶん改善されているのか気になりますが、どうなのでしょうか?
By sekine on 2009-02-01- 01:37
1.0系はリリースされて2年経つのでだいぶ枯れてるんだけど、
矢継ぎ早にリリースされた1.1、1.2系を使っている人は仕様がもりもり変わって翻弄されてるみたい。
でも日本語のドキュメントがそれぞれあるので、以前よりは全然導入しやすいと思います。
日本ではCakePHPが半馬身リードって感じになってるので、OpenPNEの採用でどうなるかね。
http://www.google.co.jp/trends?q=symfony%2CZend+Framework%2CCakePHP&ctab=0&geo=JP&date=all&sort=0