知识管理
整合Plone和Apache
1月21日
使用Apache作为Plone服务器,利用Apache的缓存机制,可以提高Plone的响应速度。
首先要在Zope中添加Monster。进入ZMI管理界面,在Zope根目录下添加Virtual Host Monster,名称随意。
设置Apache代理
编辑apache配置文件 /etc/apache2/sites-enabled/000-default, 增加类似下面的几行:
ServerName ossxp.com ServerAlias www.ossxp.com ServerAdmin webmaster@ossxp.com ProxyPass / http://localhost:8080/VirtualHostBase/http/ossxp.com:80/mysite/VirtualHostRoot/ ProxyPassReverse / http://localhost:8080/VirtualHostBase/http/ossxp.com:80/mysite/VirtualHostRoot/
关键是ProxyPass和ProxyPassReverse两行。这两行设置代理和反向代理。
后面第一个斜扛说明对整个网站使用代理。
紧跟着的是Plone站点的地址,然后是VirtualHostBase,然后是协议名称http,然后是apache中的域名,也就是第一行的ServerName,再接着是Plone站点的名称,最后是VirtualHostRoot。记着最后有一个斜扛。
Plone的代理搭建好了,但这个代理却是任何人都可以用的,为了安全起见,我们还需要在配置文件里增加几行:
<LocationMatch "^[^/]">
Deny from all
</LocationMatch>修改完毕,需要重启Apache服务器。但先别忙着重启,先激活proxy模块:
$ sudo a2enmod proxy $ sudo a2enmod proxy_http
然后重启Aapche服务器即可。
在Apache中启用缓存
在使用Plone过程中,确实感觉响应速度比较慢,本地都这样,何况远程呢?所以很有必要优化一下响应速度。
首先使用ApacheBench测试一下Plone的相应速度。回头可以做对比。
$ ab -n 100 http://www.ossxp.com/
使用Expires模块来设置缓存。修改配置文件,增加如下几行:
ExpiresActive On ExpiresByType image/gif "access plus 14 days" ExpiresByType image/jpeg "access plus 14 days" ExpiresByType image/png "access plus 14 days" ExpiresByType text/css "access plus 14 days" ExpiresByType application/x-javascript "access plus 14 days"
激活Expires模块:
$ sudo a2enmod expires
重启Apache服务器即可。
最后,推荐一款分析网页质量和网站速度的Chrome扩展:Monster。

管理Plone的内容
1月14日
Plone4.0发布了,但相关的资料却不多,或者是在amazon上出售的,咱无产阶级买不起,只得抱着古老的《the definitive guide to plone 2nd edition》拜读。虽然是第二版,但讲的却是Plone3.0的事,看着Plone3.0的指南,操作Plone4.0,也是一件郁闷的事情。于是我决定,把这本书翻译并修改一下,算作Plone4.0的指南吧~
有些内容和以前的博客有重复的,就不多说了。本篇从管理Plone的内容讲起。
ZMI中使用portal_workflow管理工作流
1月7日
在ZMI中,Plone使用protal_workflow来管理工作流。
点击plone下的portal_workflow,默认进入的Workflows标签页,这里设置各种对象和工作流的关联。这个其实是Plone控制面板里“类型”项目中修改当前工作流的后端界面。
可以看到,Document(Page)内容类型关联的是Default工作流,而在最后,Default工作流映射的是简单发布工作流(simple_publication_workflow),这是Plone的默认设置。在这里,可以修改它的名称从而映射到不同的工作流。可以在Contents标签页下查看所有的工作流名称。
但要注意的是,在更改工作流时,需要建立之前工作流的状态和新工作流状态的映射。ZMI中没有提供这个转换界面,这时只能通过Plone界面来进行工作流状态的映射了。
进入Plone控制面板->类型,这里可以为单个内容类型或者整个网站改变默认工作流。只要对象关联的工作流改变了,同时就要设置对已有文件从旧状态到新状态的映射。
回到ZMI。在Workflows标签页的底部,有一个”Update security settings”按钮,每当修改了安全配置时,都应该点击这个按钮来更新安全选项。
刚才说了,而在Contents标签页下可以查看所有的工作流。实际上,所有的工作流都在这里定义,在这里还可以增删工作流。点击某一个工作流就进入对应工作流的配置界面。
我们再回顾一下工作流的相关概念。 阅读全部内容 »
设置启动Plone策略支持
12月31日
通过Plone控制面板的”类型“子项,可以设置网站的工作流,但这个设置是针对整个网站的,如果想在某个文件夹下使用另一个工作流,那该怎么办呢?这时就要使用策略支持了。
使用策略支持,可以在更细的粒度上实现文件流访问控制。Plone默认没有启动策略支持。要启动策略支持,进入 Plone控制面板->添加产品,启用 CMFPlacefulWorkflow。
在出现的附加产品配置->工作流策略里,可以配置工作流策略。
可以使用默认的工作流策略,也可以创建新策略。现有的策略有:
- Intranet 内网策略:匿名用户不能访问内容
- Old Plone 默认使用标准Plone工作流的策略
- One State 没有状态转移只有一种状态的策略
- Simple publication 使用简单发布工作流作为默认工作流的策略。
点击其中一个策略时,会让你选择本地默认工作流。对于每个内容类型,可以在应用策略的区域映射工作流。
使用Plone来管理用户组
12月31日
在Plone网站设置的“用户和组”选项里点击“组”标签,进入组管理界面。这个界面和用户管理界面相仿,通过这个界面,可以管理网站的用户组,添加新组等。
下面有一个列表显示所有的用户组,和用户列表类似,有组名,扮演的角色,删除组三列。
上一篇文章里说过,有三个组是默认创建的,管理员组,旗下用户具有管理员角色;具有审核者角色的组;还有已认证组,这是一个虚拟组,因为网站里面注册过的任何一个用户都属于已认证组的。这也就是说如果给已认证用户组分配一个角色的话,网站的所有成员都会拥有这个角色的权限。
给组分配的角色会对组里面的所有成员和组有效。要想给组内某已特定的成员或组分配权限的话,可以在文件夹里的“共享”标签页设定。 阅读全部内容 »

Plone的工作流
12月31日
工作流是完成一项任务的业务流程。比如,写博客时,先保存草稿,待修改满意再发布。这个简单的工作流有两个状态:草稿,发布。有一个转换:从草稿状态到发布状态。在草稿状态时,只有博主能够查看,修改,同时可以随时发布。在发布状态,博主可以更新,删除,任何人都可以浏览。
从上面的例子可以看出,工作流由两部分组成:状态和转换。 而每个状态下又包括不同用户的访问权限控制。
其实工作流可以看做是一个状态转移图。
Plone中的对象操作链就是由工作流管理的。关联工作流到特定的内容类型是由portal_workflow管理的。它包含了protal的工作流的定义。
在Plone里,当创建一个内容对象后,它的状态是“保密”,同时在下拉菜单里会看到两个转换:“发布”,“提交发布”。选择“提交发布”后,状态就变成“待审”,或者选择“发布”,状态就变成“已发布”。这是Plone的默认工作流。
要查看或修改Plone的工作流,在Plone控制面板中选择“类型”,可以看到当前的默认工作流是简单发布工作流(simple publication workflow)。 阅读全部内容 »
Plone中管理用户和权限
12月27日
Plone适合于企业使用的一大特点就是拥有一组强大的安全控制模块。它定义了各种安全等级,每种安全等级都提供了众多安全选项,使得Plone的安全控制粒度很细,能够对每个对象,针对不同的用户,角色或组,提供不同的访问权限。
Plone的安全系统太强大了,以至于调试和管理都很困难。但是,设置网站最重要的,就是要设置好安全选项。
作为Plone管理员,需要做的最常见的任务就是管理网站成员,安全漏洞也是可能犯的最大错误。因此,Plone的安全覆盖了众多方面:
- 在Plone控制面板中管理用户和组
- 通过Zope管理工作流
- 创建自定义成员配置
本文先讲第一方面,关于用户术语和用户要用到的关键接口,还有如何通过Plone来添加编辑用户或组。 阅读全部内容 »
Plone产品实例
12月17日
Plone作为构建在Zope之上的一个应用,它的产品扩展也首先是一个Zope产品。之前通过一个小例子了解了Zope产品的部署。但那一种方式已不再适合Plone。Plone自从使用buildout构建以后,所有的产品都打包成egg包,通过egg包来安装。下面通过<<The Definitive Guide to Plone>>上的一个例子来看如何安装Plone的egg产品。 阅读全部内容 »
Plone安装笔记
12月13日
今年9月1号Plone正式发布了4.0版本,整个界面为之一新,用圆润的色彩框取代了之前的线条框。11月23日,Plone 4.0.2发布,修复了一些Bug。其实,自从3.2版本以后,Plone就使用buildout来构建。所以安装Plone除了经典的源码安装以外,也可以通过buildout来安装。 阅读全部内容 »
Zope Dev Guide中产品例子学习
12月3日
<<The Zope Developer’s Guide>>中在第三章详细讲解了Zope产品的开发过程,其中使用了一个在线选举的例子。通过该例子讲述如何定义接口,实现接口,组件产品类,注册产品,设计管理界面,产品图标,产品帮助等等。第一次看这个例子时,感觉太复杂,没看下去,直接去网上找了个例子来实践,就是上篇的创建zope产品例子。但“网上得来终觉粗,绝知此事要看书”,为了深入挖掘Zope产品的开发特性,我重新翻开了这本书。经过几天的钻研,终于把这个例子调试通过,在此给大家分享。

最新评论