EZ Publish集群的使用详解.docx
- 文档编号:6451275
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:9
- 大小:68.37KB
EZ Publish集群的使用详解.docx
《EZ Publish集群的使用详解.docx》由会员分享,可在线阅读,更多相关《EZ Publish集群的使用详解.docx(9页珍藏版)》请在冰豆网上搜索。
EZPublish集群的使用详解
EZPublish集群的使用详解
✓出处:
站长百科
✓原文地址:
✓本电子书整理自站长百科EZ_Publish/EZ_Publish_集群的使用词条,查看内容请访问网站。
集群概述
集群特性允许在多台WEB服务器上运行同一个eZPublish站点。
集群站点会有更好的性能也可以承受更多的访问量。
可以将所有内容相关的缓存,图片和二进制文件保存在数据库中。
数据库事务被用来保证所有的集群节点使用相同的缓存文件并访问相同的图片和二进制文件。
换言之,当内容被上传,变化会自动对所有节点生效。
这个特性在3.10中得到了很大的改善。
注意:
当使用集群时,建议使用虚拟主机模式运行eZPublish。
∙3.10引入的变化
在3.10版本以前,清除缓存会物理删除缓存文件。
这一操作可能非常耗时。
从3.10版本开始,系统会将缓存标记为不可用而不是从数据库或文件系统中物理删除。
这可以标记每个特别缓存文件为过期或设置全局过期时间(在需要很多变化时,例如:
当清除特定类型的所有缓存,后者常被使用)。
全局过期时间是一个时间戳,它可以被用来作为系统中所有缓存的过期时间。
如果全局过期时间被设置为一个特定日期,所有比这个日期旧的缓存文件都不会被使用。
注意,在重建缓存的时候,系统会重用旧的/过期的文件内容。
如果要从数据库中物理删除缓存文件,需要添加"—purge"参数来执行"bin/php/ezcache.php"。
下例演示了如何删除所有两天前的内容缓存。
phpbin/php/ezcache.php--clear-id=content--purge--expiry='-2days'
如果要了解更多信息,可以用"—help"参数:
phpbin/php/ezcache.php--help
注意:
3.10不支持基于PostgreSQL和Oracle数据库的集群。
代码针对使用InnoDB引擎的MySQL数据库做了性能优化。
MySQL的数据库连接数必须被增加30-50%。
这样做的原因是新的集群代码在将内容写入数据库时会建立另外一个连接(这个连接用于检查得到写入锁后,文件是否被修改过)。
如果持续连接被启用,集群将不会与普通数据库操作共用连接,所以之前的连接数将翻倍。
∙3.9版本引入的修改
从3.9版本开始,系统引入了一个附加的HTTP头"Served-by"。
这一特性用于测试和调试目的。
当您需要在客户端检查内容来源于哪个服务器时,这一特性变得很有用。
下例演示了服务器回应的片段。
...
Last-Modified:
Fri,29Jun200709:
35:
54GMT
Served-by:
62.70.12.230
Content-Language:
en-GB
...
∙集群如何工作
需要在不同服务器见保持同步的数据被保存在数据库中:
•二进制文件
•图片和图片别名
•内容相关的缓存
内容视图缓存
模板缓存块
过期缓存
URL别名缓存
RSS缓存
用户信息缓存
类标识符缓存
排序键值缓存
其它文件在文件系统中保存,包括(但不限于):
•INI文件
•模板文件
•编译的模板
•PHP文件
•日志文件
•与内容无关的缓存
全局INI缓存
INI缓存
代码页缓存
字符变换缓存
模板缓存
模板重设缓存
∙内容视图缓存
当eZPublish显示一个页面(一个内容节点)时,它会执行"content"模块的"view"视图并在pagelayout中包含视图的输出。
如果视图的输出被缓存,缓存文件会被读取并使用。
否则,系统会从eZPublish数据库中提取内容,生成必要的模板,生成WEB页面并在返回结果前将生成的XHTML保存在文件系统中。
如前说述,这些文件现在可以(从3.8版本开始)被保存在数据库中因而文件(以及改动)可以被简单迅速地在所有的服务器中共享。
∙图片和图片别名
上述解决方案也被用于图片和图片别名(图片变种)。
但是,解决方案有一点复杂因为直到最近(3.8),图片都是被Apache直接提供的。
因为WEB服务器不能直接与数据库沟通,图片需要由一个称为"index_image.php"的PHP脚本来提供。
这条规则应用于所有与内容有关的图片,但是不适用于界面中的图片。
请注意,需要为Apache添加新的rewrite规则来要求Apache在提供图片的时候使用"index_image.php"。
∙集群文件处理器
在3.8中引入了一种新的文件管理器机制。
它允许在数据库中对文件进行保存,提取,重命名,删除等操作。
集群文件处理器在"kernel/classes/clusterfilehandlers"目录中。
以下为系统内建的集群文件处理器:
•ezfs(eZFSFileHandler)
•ezdb(eZDBFileHandler)
eZFSFileHandler
这个处理器允许使用文件系统来处理文件。
∙eZDBFileHandler
这个处理器允许使用数据库处理文件(在集群环境中,这通常包括图片,上传的二进制文件,内容有关的缓存等等)。
它被划分为不同的后台实现以支持不同的数据库(注意:
目前只有MySQL被支持)。
∙自定义处理器
可以开发自己的处理器和/或后台实现来扩展系统。
这可以通过扩展系统实现(不是通过修改eZPublish内核文件)。
"file.ini"中的"[ClusteringSettings]"下的"[ExtensionDirectories[]"数组是eZPublish用来寻找附加集群文件处理器的位置。
默认情况下,eZPublish会在扩展的"clusterfilehandlers"子目录内寻找。
例
如果有一个扩展"myExtension",它包括一个集群文件处理器"cfh"。
应该在"file.ini.append.php"文件中的"[ClusteringSettings]"下添加如下配置:
FileHandler=cfh
ExtensionDirectories[]=myExtension
这些配置会要求eZPublish使用位于"extension/myExtension/clusterfilehandlers/cfhfilehandler.php"的自定义集群文件处理器。
集群的配置
以下步骤演示了如何配置eZPublish在数据库中保存图片,二进制文件和内容相关的缓存。
1.清除缓存(可选)
建议(但不是必须)在启动集群功能之前清除所有eZPublish缓存。
步骤如下:
phpbin/php/ezcache.php--clear-all-–purge
运行缓存脚本之后,确保所有缓存文件已经被清除(通常在"var/cache/"和"var/<站点入口名称>/cache/")。
如果还有残留文件,手动删除它们。
2.修改"file.ini"配置
在"file.ini"的重设文件中添加如下配置:
[ClusteringSettings]
FileHandler=ezdb
DBBackend=mysql
DBHost=localhost
DBPort=3306
DBSocket=
DBName=name
DBUser=user
DBPassword=pass
DBChunkSize=65535
用实际的数据库连接信息替换"localhost","name","user"和"pass"(大部分情况下,这些设置与"[DatabaseSettings]"下的配置相同)。
确保"DBSocket"的配置正确(如果在"site.ini"的重设文件中"[DatabaseSettings]"下的配置为"Socket=disabled",则设置为空)。
在"FileHandler"配置中指定"ezdb",这会要求eZPublish使用指定的数据库保存图片,二进制文件和内容相关的缓存。
"DBBackend"配置指定"ezdb"文件处理器应该使用何种数据库后端(目前,只支持"MySQL")。
"DBChunkSize"指定了从数据库中提取文件时,内容块的大小(字节)。
3.创建新脚本用来提供图片
所有的图片(除了界面图片)将会由PHP脚本提供。
Apache会被要求用特定的PHP脚本"index_cluster.php"来处理图片。
这个脚本必须引入"index_image.php"以及一系列配置。
这个技巧可以另图片的处理更快因为系统不需要从数据库读取配置。
在eZPublish的安装目录中创建"index_cluster.php"并输入如下内容:
php
define('STORAGE_BACKEND','mysql');
define('STORAGE_HOST','localhost');
define('STORAGE_PORT',3306);
define('STORAGE_SOCKET','');
define('STORAGE_USER','user');
define('STORAGE_PASS','pass');
define('STORAGE_DB','name');
define('STORAGE_CHUNK_SIZE',65535);
include_once('index_image.php');
?
>
确保数据库的配置与"file.ini.append.php"中的"[ClusterSettings]"配置相同。
4.创建新的数据库表
需要在数据库中手动创建一些表。
可以在"kernel/classes/clusterfilehandlers/dbbackends/mysql.php"中找到表结构。
表结构的定义在文件开头的注释中。
5.将文件导入数据库
需要将"var"目录中的文件复制到数据库。
在"eZPublish"的根目录中执行如下脚本(用实际的站点入口名替换"ezwebin_site"):
phpbin/php/clusterize.php-sezwebin_site
这个脚本会将"var"目录中的文件,图片,图片别名复制到数据库中。
6.编译模板(可选)
因为所有缓存为空,需要重新编译模板。
注意,这一步可以省略,而模板会在被请求时被编译。
在eZPublish根目录中执行以下脚本:
phpbin/php/eztc.php-sezwebin_site
为每个站点入口执行这个脚本
7.更新Apache配置文件
Apache需要知道在提供图片时应该使用哪个PHP脚本。
这个脚本只是简单地从数据库提取并提供图片。
将以下规则添加到.htaccess文件中其它规则之上:
Rewriterule^/var/([^/]+/)?
storage/images-versioned/.*/index_cluster.php[L]
Rewriterule^/var/([^/]+/)?
storage/images/.*/index_cluster.php[L]
如果".htaccess"文件不存在,在Apache配置文件中添加以上规则。
8.重启Apache并测试站点
重启Apache。
重启Apache之后,系统会以集群模式启动。
确认站点正常工作,内容图片可以被显示且内容二进制文件可以被访问(在浏览器中登录到管理界面,试着点击不同链接)。
9.从文件系统中删除导入的文件
如果站点正常工作,可以从文件系统中删除原始的内容图片和二进制文件(因为它们已经被成功导入数据库)。
需要调查"var"目录(特别是"var/storage/"和"var/
如果这些目录中有任何内容图片或二进制文件,可以手动删除它们。
撤销集群配置
总是可以将站点出集群模式切换回标准模式:
在文件系统中保存图片,二进制文件和内容相关的缓存。
以下步骤解释了如何切换。
假设eZPublish站点现在使用MySQL保存文件。
1.清除缓存(可选)
建议(不是必须)在撤销集群之前清除缓存。
phpbin/php/ezcache.php--clear-all--purge
2.撤销图片和文件的集群
需要将图片,二进制文件,内容相关的缓存从数据库复制回文件系统。
可以用"bin/php/clusterize.php-u"来实现。
执行之前确保有足够的磁盘空间。
下例演示了如何运行这个脚本(用实际的站点入口替换"ezwebin_site")。
phpbin/php/clusterize.php-u-sezwebin_site
以上脚本将会遍历数据库中保存的文件并将它们复制到"var"下面正确的子目录中。
3.修改"file.ini"配置
编辑"file.ini"的重设文件并注释以下内容:
[ClusteringSettings]
#FileHandler=ezdb
#DBBackend=mysql
#DBHost=localhost
#DBPort=3306
#DBSocket=
#DBName=name
#DBUser=user
#DBPassword=pass
#DBChunkSize=65535
注意,您也可以直接删除以上配置。
4.禁用提供图片的脚本
重命名或删除"index_cluster.php"。
5.修改Apache配置
注释或删除以下Apache配置:
Rewriterule^/var/([^/]+/)?
storage/images-versioned/.*/index_cluster.php[L]
Rewriterule^/var/([^/]+/)?
storage/images/.*/index_cluster.php[L]
6.重启Apache并测试站点
重启Apache服务器。
重启之后,站点应该可以使用"var"目录下的图片,文件和内容相关的缓存。
确保站点正常工作(在浏览器中登录管理界面,试着点击不同链接)。
7.删除数据库中的集群表
如果站点正常工作,您可以从数据库中删除之前使用的图片,文件和内容缓存。
DROPTABLEezdbfile;
DROPTABLEezdbfile_data;
EZPublish使用手册导航
EZPublish安装卸载:
EZPublish正常安装|EZPublish手动安装|EZPublish自动安装|EZPublish安装向导|EZPublish虚拟主机设置|EZPublish使用扩展|EZPublish的卸载
EZPublish的使用:
模板使用:
EZPublish节点模板|EZPublish系统模板|EZPublishPagelayout页头信息|EZPublishPagelayout变量|EZPublish模板注释|EZPublish模板变量类型|EZPublish模板变量用法|EZPublish调查数组和对象|EZPublish模板控制结构|EZPublish函数与操作符|EZPublishURL处理|EZPublish内容提取|EZPublish模板重设系统
系统功能:
EZPublish系统记帐|EZPublish策略功能|EZPublish多语言使用
(一)|EZPublish多语言使用
(二)|EZPublish集群的使用|EZPublish安装包的使用|EZPublishCronjob脚本的使用|EZPublish多货币功能|EZPublish通知功能
其他功能:
EZPublish增值税(VAT)系统|EZPublish改进的商品配送系统|EZPublish多语言URL别名|EZPublish登录后高级重定向|EZPublish检索引擎|EZPublishWebDAV|EZPublish视图缓存
EZPublish常见问题:
EZPublish安装常见问题|EZPublish使用常见问题
EZPublish其他:
EZPublish内部结构|EZPublish内容与界面|EZPublish内容管理
(一)|EZPublish内容管理
(二)|EZPublish配置模型|EZPublish模块与视图|EZPublishURL翻译|EZPublish界面|EZPublish访问控制|EZPublish网络商店|EZPublish工作流
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EZ Publish集群的使用详解 Publish 集群 使用 详解
![提示](https://static.bdocx.com/images/bang_tan.gif)