PLONE建站指南 - 基础安装

(本文内容来自台湾网站,将繁体转为简体,少量文字修改)

1. 基础安装

架站软体的选项很多,为什么要选择 Plone 呢?最大的几项优点包括:首先,它以 Python 语言开发而成,容易入门,具备企业级的功能弹性,能够布署在 VPS 或 Amazon EC2 云端系统上。其次,它由广大积极的社群朋友所支持,拥有绝佳的升级相容及系统安全记录,并且支援多国语言。根据评比资料,Plone 在同类软体里,多个评分项目都拿到中上的成绩,算是开放源码里的通才工具。

安装 Plone 很简单,下载安装档案后,很快就在 Windows 或 Linux 等环境完成架站,它的内建工具已能满足常见的应用场合,像是 wiki 编辑环境,TinyMCE 编辑器等,加上会员管理及工作流程的支援后,摇身变为企业级的内容管理系统,这些都是它的应用弹性,协助内容管理人员轻松经营网站。

另一方面,Plone 也照顾程式开发人员的需求。它搭配一套开发框架,及一系列的扩充工具和测试工具,可以新增或开发各式模块,为系统增加其他功能特色,包括支援多媒体的表单,提昇视觉体验的 AJAX 特效,结合 Google Map 或 Subversion 等常见的外部系统。本文将以 Plone 网站开发框架为主角,进行名词解释,并介绍 Python 专案开发工具的操作方式。

1.1. Plone 的开发框架

早期 Plone 只是一个内容管理系统 (Content Management System,CMS) 模块,后来才衍生出开发框架。它以 Python 和 Zope 为基础,2011 年的此刻,不少 Plone 实作品还处於转型的阶段,网路上不容易找到完整而稳定的文件。本文的目的之一,就是试着说明 Plone 开发框架的最新状况,包括版本、模块注册方式、设定档格式等。

开发框架通常扮演网站系统的中间层角色,它的底层是程式语言和作業系统环境,它的上层是应用程式,为了快速满足应用程式的设计需求,开发框架必须提供一致的介面和逻辑思惟,让开发人员借以解决问题。

Zope 最早是一个 Application Server 系统,同时也是一个开发框架,目前版本分成 Zope2 和 Zope3 两种体系,前者版本号码以 Zope2-2.12.x 方式来命名,后者则以 zope.x 方式来命名。简单地说,既有的 Plone 3.3.x 和 Plone 4.0.x 版本,混用了 Zope2 和 Zope3 的功能和技术,混用的目的,是为了维护应用软体的相容性,不过,这也带来版本相依性的议题。首先,我们要知道如何选用 Python 的版本。

1.2. Python 版本的选用方式

Plone 4.0 是个分界点,在此之前使用 Python 2.4 版本,之后使用 Python 2.6 版本,原因在于 Zope 的支援程度不同。例如 Plone 3.3.x 使用 Zope 2-2.10.x,必须搭配 Python 2.4;而从 Plone 4.0.x 开始,使用 Zope 2-2.12.x 以上的版本,底层也昇级为 Python 2.6。这个改变造成 Plone 4.x 执行效能大幅提昇,配合使用 plone.reload 工具的话,修改程式码的过程就不需要重新启动伺服器,可以再减少开发时间。额外的效益还包括记忆体的使用量减少了,以往 512MB RAM 的电脑跑不动 Plone 3.3.x,现在可以顺利执行 Plone 4.0.x。

真是复杂,那该怎么选呢?刚接触的朋友,建议使用 Plone 4.0.x 和 Python 2.6.x 环境,并且直接下载安装档来起步。下列将以 Ubuntu Linux 示范指令,动手操作会更容易探索系统。

1.3. 安装档快速起步

Plone 的安装档称为 Unified Installer,以 4.0.2 的安装档为例:

▲ 图1 下载及编译安装

最后,画面显示 admin 帐号的密码,它是首次安装时的管理者帐号密码,这组帐号密码也会记录在 adminPassword.txt 档案里。完成编译后,会产生 Plone 目录,内含四个目录:

* Python-2.6 * zinstance * buildout-cache* Plone-docs

顾名思义 Python-2.6 就是 Python 系统目录,即使你的 Linux 已经装好 Python,安装档还是再送给你一份。这样的好处之一,是拥有独立的底层函式库,特別适合测试开发的场合,搞乱系统的话,砍掉重练,重新安装即可。

zinstance 是 zope instance 的缩写,系统运作过程所产生的动态资料,都会记录在这里,它也是管理工作的起始目录,存放着记录系统配置的设定档,在 bin 目录里,也存放许多系统工具程式。

▲ 图2 系统工具程式目录

buildout-cache 目录里存放许多 egg 程式码,egg 是 Python 建构各式应用软体的元件单位,它的功能类似 Java 的 jar (Java ARchive),或是 Ruby 的 gem。 以 Plone 为例,它是由上百个元件单位组成,并利用 Buildout 工具程式来管理元件的安装与昇级,因此,认识 buildout 的运作机制,成为开发过程的重要工作。

1.4. 系统配置设定档

Buildout 程式执行时,默认需要搭配 buildout.cfg 设定档,档案里记录系统配置的资讯,首次启动 Plone 前,可以查看想要修改哪些设定值,下列是部份设定范例:

http-address = 8080
... ...
user=admin:mypasswd

Plone 默认在 port 8080 启动,想要更换 port 号码的话,可以修改 http-address 的设定值。另外,想要更换 admin 管理者起始密码的话,可以修改 user 的设定值。

每次修改 buildout.cfg 档案后,都要执行 bin/buildout 让设定值生效。成功生效之后,再执行 bin/plonectl 来启动系统。启动的参数分成 fg 和 start 两种,分別代表前景执行和背景执行。

首次启动系统的话,可以使用 bin/plonectl fg 指令,它会把系统执行讯息显示在萤幕上,让管理者即时观察,这时候可以按 Ctrl + C 来停止系统执行。使用 bin/plonectl start 指令启动的话,就可以用 bin/plonectl stop 指令来停止。


1.5. 建立 Plone 网站

成功启动后,在浏览器输入 http://localhost:8080/ 之类的网址,会出现 Plone 的起始网页。

▲ 图3 起始网页

首次启动的话,必须先新增 Plone 网站。填写的资料当中,以网站识別码最重要,它会成为网址的一部份。以 mysite 为例,它的网址格式会是 http://localhost:8080/mysite 这样。

▲ 图4 网站新增表单

使用管理者 admin 帐号密码登入 Plone 网站后,先示范如何从管理前台新增会员帐号。

▲ 图5 由 Site Setup 进入管理前台

首先,要设定帐号的安全政策,点选 Security 项目。


▲ 图6 管理前台的清单项目

勾选 Let users select their own password,这样在注册帐号时,就可以自行选择密码。



▲ 图7 设定安全政策

再到 Users and Groups 新增一组帐号密码。



▲ 图8 新增帐号

默认的会员帐号,属于 Member 角色,当然,管理者可以在这里指定其他角色,或是删除这个帐号。



▲ 图9 帐号管理

接着,我们开启「另一种」浏览器,就可以同时观察管理员、一般会员,登入系统时,画面有哪些不同。因为帐号资讯是以 cookie 方式储存,要用不同浏览器,才能让帐号同时操作系统。



1.6. 内容管理

Plone 默认提供的内容项目,包括:Page、News Item、Event、Image、File、Link、Folder、Collection 等,我们介绍 News Item 的新增方式。

先由管理员到 News 目录,从 Sharing 指定一般会员帐号 Can add 的权限,这代表指定的帐号,可以在 News 目录里新增内容项目。



▲ 图10 指定帐号权限

一般会员进入 News 目录后,从 Add new... 可以点选 News Item 来新增。



▲ 图11 新增内容项目

填写 News Item 的各项字段后,就可以将内容储存。



▲ 图12 编辑内容项目

储存的内容项目,默认是 Private 状态,可以选择 Submit for publication 提交给管理员,进行审核及发佈。



▲ 图13 显示内容项目

1.7. 物件资料库

一 般的 LAMP 系统,常见使用 MySQL 来储存内容,Plone 则是使用 ZODB 来储存内容。网页内容属于半结构式资料,理论上并不适合完全套入资料库的规范,使用物件资料库显得更直觉。当然,这不代表使用 SQL 储存内容,不能提供优异的网站服务。重点在于,开发过程的思惟,它们有著根本的差异,经由 NoSQL 议题的广受讨论,相信更多人将逐步认识它们的差异。

那 么,哪里找得到 Plone 存放的内容呢?在 Plone/zinstance/var/filestorage 目录里,找得到一个 Data.fs 档案,它就是 ZODB 存取内容的实体档案,系统运行过程,就会发现 Data.fs 增加大小。新版的 Plone 已经增加 BLOB 支援,在 Plone/zinstance/var/blobstorage 目录里,存放的是 Plone 系统里的图片、影音档案,大幅改善以往 ZODB 容易过度膨胀的问题。

想 要看到 Data.fs 里的内容吗?plonectl 工具程式提供一个 debug 参数,让我们进入除错模式来观察 ZODB 内容。所有的物件以 app 为根目录,使用 app.mysite 就能存取 Plone 网站,使用 app.mysite['news'] 代表存取 news 目录。除错模式的操作方法,对于 Python 朋友而言,并不陌生,更多的乐趣,先留给各位自行探索。



▲ 图14 除错模式

另 外,透过 ZEO 可以支援多个客户端存取,让 ZODB 的延展度提昇,企业级的部署规划,肯定需要这样的功能。不过,初学者可能只关心,该怎样备份 Plone 的 系统资料呢?最简单的方式,只需要把 Data.fs 和 blobstorage 里的档案复制起来,就完成备份。

1.8. 结论

网 页程式发展十余年了,今日已有许多工作和生活应用,弹指之间就由网站服务完成,透过这样的普及与内化过程,我们反而更不容易窥见它们的运作原理。内容管理 系统是网页应用程式的具体产品,它能完整示范一个通用式的网站,该具备哪些功能与特色。我把 Plone 当成乐高积木,借由拆解和组合的过程,认识网站应用程式的奥秘。邀请想要探索奥秘的朋友,一起发掘 DIY 的乐趣。

你可能感兴趣的:(plone,python)