浮気というわけではないんですが、Zopeをちょっと試してみました。

■インストール

インストール時の注意点ですが、Zope 2.6.0から管理画面で入力した文字(特に日本語)をUNICODEに変換する処理が入っており、ブラウザによっては化け化けになっちゃって編集できなくなります。

今回は、管理画面の日本語化パッチもあることですので、2.5.1を選択しました。

Zope-2.5.1-linux2-x86.tgz

Zope 2.5.1ではPythonのVer.2.1以降が必要となります。RedHat 7.*だと、PythonのVer. 1.5系が入っており、RedHatの管理ツール類がこのPythonを必要としますので、Python2.1.3が同梱されているLinux用のバイナ リ版をいれました。

インストール作業ははJZUGさんのHOWTOを見れば5分程で終了します。

ZServer(ZopeのHTTP,FTP,WebDAVサーバ)のHTTPポート設定を変える必要があったので、startスクリプトに書かれているzp2.pyへの引数として「-w ポート」を与えました。
(zp2.pyを編集してHTTP_PORT=8080の部分を書き換えてもOK)

また、指定されたURLが無かった場合に返すエラー(404エラー)や、再起動・シャットダウンの時にユーザー側のブラウザに、デバッグメッセージが出てしまうので、startスクリプトの中の「-D」オプションも外しました。

起動後、管理者でログインして、作業用アカウントを作成して(これをしないとコンテンツを書き換えられません)インストールは終了です。

Hotfix(パッチ)と管理画面日本語化パッチは解凍して、{$ZOPE}/lib/python/Products/に入れれば、起動時に自動で読み込んでくれます。

Hotfix_2002-06-14
日本語化パッチ

■PostgreSQL用のDAを入れる

PostgreSQL好きなので(XOOPSしてんのに!(笑))PostgreSQLとZopeを繋ぐ、DA(Database Adapter)も組み込みました。

ZPoPyDApyscopgがメジャー所のようですので、どちらかを入れてみることに。

まずは新し目のpyscopgを・・・

$ tar zxvf psycopg-1.0.13.tar.gz
$ cd psycopg-1.0.13

Productsに入れればいいんだよな・・・と思いつつ

$ cp -rp ZPsycopgDA ../Zope-2.5.1-linux2-x86/lib/python/Products/

で、再起動をしてみると・・・エラーが出てうまく動きません。ZPoPyDAもそうです。
どうやらPython用の特定の共有ライブラリを必要とするようで、それのインストールが必要なようです。

基本的にPythonのライブラリは、

$ python setup.py build
$ python setup.py install

とすることで然るべき場所にインストールされるのですが、今回のようなケースではシステムにあるPythonとZopeが使用するPythonのバージョンが違うため、標準の場所にインストールされると困ったことになります。

そこで、

$ /home/zope/Zope-2.5.1-linux2-x86/bin/python setup.py build
$ /home/zope/Zope-2.5.1-linux2-x86/bin/python setup.py install

とすることで、Zopeに同梱されているpythonをフルパスで指定することで、Zopeで使用する環境に組み込むことができます。

改めて、psycopgで必要とされるライブラリを入手して、インストールをしなおしてみます。
mxDateTimeというライブラリを必要とするので、

egenix-mx-base-2.0.4.tar.gz

$ tar zxvf egenix-mx-base-2.0.4.tar.gz
$ cd egenix-mx-base-2.0.4
$ /home/zope/Zope-2.5.1-linux2-x86/bin/python setup.py build
$ /home/zope/Zope-2.5.1-linux2-x86/bin/python setup.py install

そして、pyscopgも

$ cd ../psycopg-1.0.13
$ ./configure --with-postgres-libraries=/usr/lib/ --with-postgres-includes=/usr/include/pgsql/ --with-zope=/home/zope/Zope-2.5.1-linux2-x86 --with-mxdatetime-includes=/home/zope/egenix-mx-base-2.0.4/mx/DateTime/mxDateTime
$ make
$ make install-zope

そして、Zopeを再起動することで、psycopgのインストールが完了します。
(パスは自分の環境に読み換えてください)

ZPoPyDAは、必要なモジュールを「すぷもに」さんがコンパイルしてくれたものをJZUGのSquishDotで公開されています。
これをダウンロードし、Zopeで使用するpythonのsite-packageに入れるだけで動作すると思います。
私の環境では、/home/zope/Zope-2.5.1-linux2-x86/lib/python2.1/site-packages/に入れました。

■雑感ね

XOOPSはコンテンツの管理に的を絞り、開発はXOOPSの外で行うという形をとっています。
そのため、XOOPSに機能を追加するには、モジュールを別途PHPで開発する必要があります。

ZopeはCMS(コンテンツマネジメントシステム)というよりは、一つのサーバ環境という感じで、開発環境も内包されており、Zope環境上にコンテンツ管理の仕組みを乗せていくという形をとっています。
(今後はCMFベースとなり、コンテンツマネジメント部分も強化されるようです。)
ですので、Zopeに機能を追加しようと思った場合、Zopeの環境内だけで作業を済ます事も可能です。

そういう観点からすると、WEBベースでの開発が非常に楽になる可能性を秘めているのですが、実際のWEBベースの開発では、「環境ごと」納品という形がとれないケースが多いため、正直なところ仕事としてZopeでの開発を行うのは難しいかな、と感じています。
プロダクトとして提供する形になるのかな・・・?

これに対してXOOPSは、極端な言い方をすればPHPスクリプトの固まりですので、PHPとMySQLの環境さえ用意してもらえば、拡張したXOOPSを納品することで、通常のPHPで開発したシステムを提供するのと同じ形で提供できます。

一見似た感じですが、それぞれ長所も短所もあり、まぁ、例のごとく「適材適所」で使っていくと面白いんじゃないかな、と考えています。


Contents