日々のできごとと写真

OpenPNE3.0がリリースされたのでインストールまでしてみる


2009-01-29 01:35 | IT

openpne3.0

昨日、新生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に手をいれやすく設計されてますね。
もう少し読んでみたいと思います。

  1. 2 Responses to “OpenPNE3.0がリリースされたのでインストールまでしてみる”

  2. By mixiあんじー on 2009-01-29- 23:57

    symfonyっていまでもいろいろ大変そうですね。
    symfony0.63を入れる時にずいぶん懲りた記憶があってそれ以来ご無沙汰でした。

    昔よりはフレームワーク自体も、ドキュメントもずいぶん改善されているのか気になりますが、どうなのでしょうか?

  3. 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

コメント For mixi ユーザー

コメント