2008/03/06

Plone Package Management with buildout

在 Zope2 以前的時代,新增模組的方式,是把下載來的模組檔案解開到 Products 目錄裡,但這樣的方式至少有下列的缺點:
* 不易整合 egg 或 setuptools 帶來的便利,這些是 Python 在模組包裝與系統擴充上的新方案,越來越多的 Python 模組以 egg 型式來包裝,並利用 setuptools 來散佈與佈署,新版 Zope 與 Plone 也需要配合這項潮流。
* 傳統 Zope2 模組管理方式,無法提昇軟體重用性,讓 Zope 與 Plone 成為對外孤立或競爭的環境。

因應上述模組管理的新需求,新版 Zope3 利用 buildout 機制,充份發揮 egg 的效益。不過,舊有的名詞現在被更改,系統運作的細節也有所不同,例如 Zope 的 instance 以往是透過 mkzopeinstance.py 來建立,現在改由 buildout 接手,而模組命名方式,也由 PloneSomeProduct 改成類似 plone.app.some 型式,以便不同的模組能整理在相同的 namespace 之下,最後,再透過 configure.zcml 之類的檔案來註冊模組。

安裝 buildout 的方法,是先準備好 Python 環境,以 Plone 3.0.6 版本為例,要配合 Python 2.4.x 版本,並記得加入必要的模組,例如 PIL 等。再安裝 setuptools 工具,可下載 ez_setup.py 並執行 python ez_setup.py 完成,重點就是讓 easy_install 能正常運作。接著安裝 ZopeSkel 工具,可執行 easy_install -U ZopeSkel 指令,它會安裝好 paster 程式。

執行 paster create --list-templates 會列出可指定的 template 項目,必須至少包含 plone3_buildout 項目,接著就可以執行

$ paster create -t plone3_buildout myproject
$ cd myproject
$ python bootstrap.py
$ ./bin/buildout
$ ./bin/instance start

2008/03/05

ZPyODBCDA with MSSQL

之前在 Plone 連接過 MySQL 與 PostgreSQL,現在 Microsoft SQL server 也成功了。操作的環境是在 Mandriva 2008 上,已知滿足
unixODBC, libunixODBC1, libunixODBC1-devel, libfreetds0, libfreetds0-unixodbc (可考慮額外加裝 libfreetds_mssql0, libfreetds_mssql0-unixodbc) 這些安裝檔案相依關係後,能成功完成設定。題外話: 或許不需要安裝這麼多檔案,但一時之間也懶得細究了。

ODBC driver 和 data source 設定方式可參考 unixODBC with MS SQL 文件。此處設定 driver 應是主角,我使用 Driver = FreeTDS 設定值,設定內容會記錄在 /etc/odbcinst.ini 檔案裡。題外話: 猜想 data source 留待在 Zope 裡 database adapter 設定即可,透過 odbcinst 指令我還是將兩者都設定好,但 data source 設定值能成功記錄在 $HOME/.odbc.ini 而非 /etc/odbc.ini 檔案,讓我感到困惑。如果需要更多的設定參數,可參考詳細參數資料

我使用的 Plone 環境是 UnifiedInstaller,要先裝好 pyodbc,例如 Plone-3.0.6/Python-2.4.4/bin/python setup.py install,接著再安裝 ZPyODBCDA。題外話: 原本試著放到 Plone-3.0.6/lib/python 目錄,並沒生效,這裡算是 SoftwareHome 的位置,改放在 Plone-3.0.6/zeocluster/Products 裡才成功,因為 zeocluster 目錄算是 InstanceHome 位置。

再從 ZMI 裡新增 Z PyODBC Database Connection,填寫 connection string 內容,重點是 DRIVER={FreeTDS} 也就是配合前述的設定值。


成功新增後,可到 Test 執行 SQL 指令來測試。