最近想实现一个个人网站 “图志”,来搜集和整理有一天会去亲眼看看的世界的历史、文化和自然景观的资料。这个网站虽然也可以简单用WordPress来实现,但是我还是想能够做一个更为完善的平台,能够持续地运作并且借此机会提高在知识管理、CMS、Python方面的技能。

Plone平台是开源的CMS平台,适合企业级的应用,有完善的权限管理以及流程支持,是目前开源CMS的翘楚。虽然个人网站极为渺小,但是通过实践一个优秀的开源产品,可以开阔思路和眼界。

任何一个企业,企业知识的积累和传承是核心竞争能力。虽然目前所处的互联网行业热点瞬息万变,但是核心的知识管理依然是非常基础的管理要点。

本文是单机简化部署Plone的记录,适合小型网站使用,大规模部署Plone需要集群多台服务器,后续再补充集群部署案例。

Plone安装环境需求

  • 连接Internet(公开网站)或Intranet(私有内部网络)的服务器,需要能够SSH访问
  • 操作系统 - Windows/Linux/BSD/OS X/Solaris之类的*nix系统

  • 硬件(或虚拟机)需求 - 最少256MB内存和512MB swap,需要至少512MB磁盘空间;建议2G或以上内存,40G磁盘

  • 软件:gcc, gmake, patch, tar, gunzip, bunzip2, wget 积极对应的dev软件包

  • 可选软件: poppler-utils (PDFs) 和 wv (office docs)

  • Plone 4.3/4.2 需要 Python 2.7,并且要求支持 expat (xml.parsers.expat), zlib 和 ssl

库文件

libz (dev)
libjpeg (dev)*
readline (dev)*
libssl or openssl (dev)
libxml2 >= 2.7.8 (dev)*
libxslt >= 1.1.26 (dev)*

CentOS安装Plone

准备依赖环境

yum install gcc make patch tar gzip bzip2 wget

安装库依赖

yum install libzip libzip-devel libjpeg-turbo libjpeg-turbo-devel openjpeg openjpeg-devel \
readline readline-devel openssl openssl-devel libxml2 libxml2-devel libxslt libxslt-devel

感觉应该是安装 openjpeg-devel 为准

根据后续的安装经验,还需要安装

yum install python-devel

安装 poppler 和 wv

yum install poppler

wv 可以从 http://wvware.sourceforge.net 下载安装,不过版本已经很陈旧了,发行版现在也不包含这个软件包,所以没有安装

安装Plone

Plone提供了一个称为 Unified UNIX Installer - 可以从 Plone Download页面下载

例如,安装 4.3.3 稳定版本

wget --no-check-certificate https://launchpad.net/plone/4.3/4.3.3/+download/Plone-4.3.3-UnifiedInstaller.tgz

我使用了最新 Plone 5 非稳定发布版本

tar xfz Plone-5.0a2-UnifiedInstaller.tgz
cd Plone-5.0a2-UnifiedInstaller

最简单的是Single Zope instance(单个Zope会话)安装,适合测试环境 - 对于大规模环境,则使用 clustered (ZEO) setup 适合多核CPU的生产环境部署。

./install.sh standalone

如果使用ZEO Cluster (ZEO server, 2 clients)

./install.sh zeo

如果使用root用户身份安装,会将软件包安装到系统目录 /usr/local/Plone

安装成功最后会提示默认 admin 帐号密码,请记录

启动 Plone

sudo -u plone_daemon /usr/local/Plone/zinstance/bin/plonectl start

停止 Plone

sudo -u plone_daemon /usr/local/Plone/zinstance/bin/plonectl stop

第一次访问和初始化

第一次访问的时候,会提示创建一个 plone 网站

Plone初始化

实际上Plone服务是一个多站点的服务,也就是默认 http://plone.huatai.me 下面可以托管多个plone站点,所以第一次访问 http://plone.huatai.me 并创建一个 atlas 站点以后,会生成 http://plone.huatai.me/Atlas 这个网站。

问题来了: 如何实现 Zope Virtual Host 功能,使得 http://atlas.huatai.me 替代 http://plone.huatai.me/Atlas ?

Zope Plone多虚拟主机和Nginx反向代理设置

卸载Plone

尝试了alpha 2版本的Plone 5以后发现比较怪异(有点缓慢并且设置Virtual Host遇到苦难),所以想回退到 Plone 4.3.3 稳定版本。参考 README.txt ,卸载的方法很简单:

  • 停止Plone

  • 删除 /usr/local/Plone 或者 $HOME/Plone 目录

备份Plone

备份也同样简单:

  • 停止Plone

  • 备份目录 /usr/local/Plone 或者 $HOME/Plone 目录

    tar -zcvf Plone-backup.tgz /usr/local/Plone
    

在线备份也是可以的,参考 Backup Plone

重新安装Plone 4

由于Plone5的多虚拟主机(virtual host)没有设置成功,所以尝试重新安装 Plone 4。

删除了 /usr/local/Plone 目录之后

wget --no-check-certificate https://launchpad.net/plone/4.3/4.3.3/+download/Plone-4.3.3-UnifiedInstaller.tgz
tar xfx Plone-4.3.3-UnifiedInstaller.tgz
cd Plone-4.3.3-UnifiedInstaller
./install.sh standalone

但是启动 sudo -u plone_daemon /usr/local/Plone/zinstance/bin/plonectl start 访问web页面出现报错

Site Error

An error was encountered while publishing this resource.

Error Type: IOError
Error Value: (2, 'No such file or directory')

这个问题参考 Plone re-install 原因是前一次安装的Plone进程没有杀掉导致的。原来plone的停止命令可能没有杀干净plone进程,然后删除了旧版本安装新版本,启动实际就有冲突。

解决的方法是使用 kill 命令彻底杀死掉plone进程,再次启动就不再报错。

参考