核心 zope 安装
假定安装过程中使用的是 root 用户。
获取软件包的当前可用的稳定版本:
- python 2.1.3: http://www.python.org/ftp/python/2.1.3/Python-2.1.3.tgz
- zope 2.6.2: http://zope.org/Products/Zope/2.6.2/Zope-2.6.2-src.tgz
Zope 的当前版本需要与 python 2.1 一起工作,不能与系统自带的更高的版本系列一起工作,并且需要启用多线程配置。
tar -zxvf Python-2.1*.tgz cd Python-2.1* ./configure --with-threads make make install
python 2.1 被安装到 /usr/local/bin 下面,在安装与 Zope 有关的所有软件包的时候,凡是执行 python setup_script.py 的命令行都需要改为 python2.1 setup_script.py,确保相应的模块被安装到 /usr/local/lib/python2.1 下面。
假定把 Zope 安装到 /usr/local/Zope 目录下。
tar -zxvf Zope-2.6.2.tgz mv Zope-2.6.2 /usr/local/Zope cd /usr/local/Zope make
记住屏幕上显示的初始用户的名字 admin 和随机生成的口令,可以在用这个口令登录到 Zope 的 web 管理界面时更改口令,或现在就执行下面的命令行来更改 admin 用户的口令:
python2.1 zpasswd.py inituser
Zope 的安装完成,下面做的是进一步的定制。
useradd zope chown -R root /usr/local/Zope chmod o+t var mkdir var/gadfly mkdir var/gadfly/demo mkdir var/mnt chown -R zope var/*
Zope 的控制脚本有两个 start,stop。编辑一个可以放置到 /etc/init.d 中的 zope 控制脚本:
if [ $# -ne 1 ]; then echo need one argrument: start, stop or restart exit 1 fi ZOPE_HOME=/usr/local/Zope case $@ in start)${ZOPE_HOME}/start -u zope & ;; stop)${ZOPE_HOME}/stop ;; restart)${ZOPE_HOME}/stop ; ${ZOPE_HOME}/start -u zope & ;; esac
启动 Zope:
./zope start
用浏览器访问 http://localhost:8080/。可以见到一个 Zope Quick Start 页面,其中有指向 The Zope Book 和例子的连接,其中 Zope Management Interface 连接指向 Zope 管理界面,也可以直接用 http://localhost:8080/manage 访问。从其他机器上访问,把这里的 localhost 替换为实际的域名或 IP。
到此就可以读教程,熟悉一下 Zope 的使用然后继续安装。
本地化和内容管理构件的安装
下面继续安装 CMF 和 plone, 为了显示中文还需要安装本地化包和翻译包,获取软件包的当前可用的稳定版本:
- zope CMF 1.3.3: http://cmf.zope.org/download/CMF-1.3.3/CMF-1.3.3.tar.gz
- plone 1.0.5: http://prdownloads.sourceforge.net/plone/CMFPlone1.0.5.tar.gz?download
- Localizer 1.0.1: http://prdownloads.sourceforge.net/lleu/Localizer-1.0.1.tgz?download
- TranslationService 0.4: http://zope.org/Members/efge/TranslationService/0.4/TranslationService-0.4.tgz
plone 需要与 zope CMF 1.3 一起工作。安装 CMF:
tar -zxvf CMF-1.3.3.tar.gz mv CMF-1.3.3 /usr/local/Zope/CMF cd /usr/local/Zope/CMF
编辑一个 run 文件:
INSTANCE_HOME=/usr/local/Zope SOFTWARE_HOME=/usr/local/Zope/lib/python ln -s ${INSTANCE_HOME}/CMF/CMFCore ${SOFTWARE_HOME}/Products/CMFCore ln -s ${INSTANCE_HOME}/CMF/CMFDefault ${SOFTWARE_HOME}/Products/CMFDefault ln -s ${INSTANCE_HOME}/CMF/CMFTopic ${SOFTWARE_HOME}/Products/CMFTopic ln -s ${INSTANCE_HOME}/CMF/CMFCalendar ${SOFTWARE_HOME}/Products/CMFCalendar
运行这个 run 脚本完成 CMF 的安装。
安装 plone:
tar -zxvf CMFPlone1.0.5.tar.gz mv CMFPlone-1.0.5 /usr/local/Zope/CMFPlone cd /usr/local/Zope/CMFPlone
编辑一个 run 文件:
INSTANCE_HOME=/usr/local/Zope SOFTWARE_HOME=/usr/local/Zope/lib/python ln -s ${INSTANCE_HOME}/CMFPlone/CMFPlone ${SOFTWARE_HOME}/Products/CMFPlone ln -s ${INSTANCE_HOME}/CMFPlone/i18n ${SOFTWARE_HOME}/Products/i18n ln -s ${INSTANCE_HOME}/CMFPlone/Formulator ${SOFTWARE_HOME}/Products/Formulator ln -s ${INSTANCE_HOME}/CMFPlone/DCWorkflow ${SOFTWARE_HOME}/Products/DCWorkflow
运行这个 run 脚本完成 plone 的安装。
安装完产品(构件)之后,需要重新启动 Zope 使之生效。
登入 Zope 的 web 管理界面,增加一个 Plone Site,就有了一个现成的内容管理系统了。
安装 Localizer 和 TranslationService 包:
tar -zxvf Localizer-1.0.1.tgz mv Localizer /usr/local/Zope/lib/python/Products tar -zxvf TranslationService-0.4.tgz mv TranslationService /usr/local/Zope/lib/python/Products
后续配置参见 http://www.plone.org/development/i18n/howto 即可。
与 apache 的连接
假定 Apache 2.0.* 安装在 /usr/local/apache 目录下。
获取 mod_fastcgi 模块:
- mod_fastcgi 2.4.0 :http://www.fastcgi.com/dist/mod_fastcgi-2.4.0.tar.gz
开始安装:
tar -zxvf mod_fastcgi-*.tar.gz cd mod_fastcgi-* cp Makefile.AP2 Makefile make top_dir=/usr/local/apache make install
编辑 Apache 配置文件 /usr/local/apache/conf/httpd.conf,增加如下内容:
LoadModule fastcgi_module modules/mod_fastcgi.so FastCgiExternalServer /usr/local/apache/htdocs/zope \ -socket zope.soc \ -pass-header Authorization <Location /zope> SetHandler fastcgi-script </Location>
编辑 Zope 的启动文件 /usr/local/Zope/start, 更改启动 ZServer 的选项。
exec /usr/local/bin/python2.1 $cwd/z2.py -f - -w - -F /usr/local/apache/logs/fastcgi/zope.soc -D "$@"
停止对 8080 和 8021 端口的监听,启用 fastcgi 连接。
重新启动 Apache 和 Zope。对 Zope 的访问变为 http://localhost/zope。
与 PostgreSQL 的连接
假定 PostgreSQL 安装在 /usr/local/pgsql 目录下PostgresSQL 的源文件在 /usr/local/src/postgres-7.* 目录下。
获取下列软件包:
- mxDateTime 2.0.5 : http://www.egenix.com/files/python/egenix-mx-base-2.0.5.tar.gz
- psycopg 1.1.10 : http://initd.org/pub/software/psycopg/psycopg-1.1.10.tar.gz
mxDateTime 为 python 提供对数据库的日期时间类型的处理。
tar -zxvf egenix-mx-base-*.gz cd egenix-mx-base-* python2.1 setup.py install
psycopg 是 python 访问 PostgreSQL 数据库的适配器,软件包中还带有 ZPsycopgDA,它是 Zope 访问 PostgreSQL 数据库的适配器。
确保安装了 PostgreSQL 的全部头文件:
cd /usr/local/src/postgresql-* make install-all-headers
确保可以找到动态库文件 libpq.so,如果它不在 /lib /usr/lib 下,则需要编辑 /etc/ld.so.conf。增加一行
/usr/local/pgsql/lib
执行命令使之生效。
ldconfig
开始安装 psycopg:
tar -zxvf psycopg-*.gz cd psycopg-*
编辑一个 run 文件。
./configure --with-python=/usr/local/bin/python2.1 \ --with-zope=/usr/local/Zope \ --with-mxdatetime-includes=/usr/local/lib/python2.1/site-packages/mx/DateTime/mxDateTime \ --with-postgres-includes=/usr/local/pgsql/include \ --with-postgres-libraries=/usr/local/pgsql/lib make make install make install-zope
执行这个 run 文件完成 psycopg 的安装。
ZODB 到关系数据库的映射
获取下列软件包:
- DBTab 1.2.1 : http://hathaway.freezope.org/Software/DBTab/DBTab-1.2.1.tar.gz
- Ape 0.7.1 : http://hathaway.freezope.org/Software/Ape/Ape-0.7.1.tar.gz
DBTab 使用配置文件来设置数据库连接。使用它可以挂装多个数据库。
tar -zxvf DBTab-*.gz mv DBTab /usr/local/Zope/lib/python/Products cd /usr/local/Zope/lib/python/Products/DBTab
编辑一个 run 文件
SOFTWARE_HOME=/usr/local/Zope/lib/python INSTANCE_HOME=/usr/local/Zope ln -s ${SOFTWARE_HOME}/DBTab/custom_zodb.py ${INSTANCE_HOME}/custom_zodb.py cp ${SOFTWARE_HOME}/DBTab/dbtab.conf.in ${INSTANCE_HOME}/dbtab.conf
运行这个文件完成 DBTab 的安装。
Ape 把 Zope 对象存储到文件系统或关系数据数据库中。
tar -zxvf Ape-0.7*.gz mv Ape /usr/local/Zope/lib/python/Products
建立存储 ZODB 对象的关系数据库和操纵它的用户,授权这个用户能建立数据库、不能建立用户:
su postgres createuser -A -d -P zope createdb -U zope zodb exit
按 Ape 的 README.txt 文件的说明编辑 /usr/local/Zope/dbtab.conf:
[Storage: Main] type=FileStorage file_name=%(CLIENT_HOME)s/Data.fs [Database: Main] mount_paths=/ [Storage: FS] type=apelib.zodb3.storage.ApeStorage factory=apelib.zope2.mapper.createFSMapper basepath=%(CLIENT_HOME)s/mnt [Database: FS] class=apelib.zodb3.db.ApeDB cache_size=0 mount_paths=/fs container_class=OFS.Folder.Folder [Storage: PostgreSQL] type=apelib.zodb3.storage.ApeStorage factory=apelib.zope2.mapper.createSQLMapper module_name=psycopg params= dbname=zodb user=zope password=XXXXXX [Database: PostgreSQL] class=apelib.zodb3.db.ApeDB mount_paths=/pg
重启 Zope,进入 Zope 的 web 管理界面,增加“DBTab Mount Point”, 把 PostgreSQL 数据库挂装到 /pg 上。
到此在 http://localhost/zope/pg 下的所有对象都会保存到 PostgreSQL 数据库中。