kaliop / ezpublish5universalinstaller
ez5通用安装工具集
Requires
README
一个使部署安装变得轻松的包。为eZPublish5开发,与eZPlatform 1和2兼容。
安装
-
通过composer将此包添加到您的项目中:在composer.json中
... "require": { ... "kaliop/ezpublish5universalinstaller": "*", ... }, ...
执行
有不同命令可用,所有都是通过命令行应用程序。要查看命令列表,运行
php bin/ezp5installer.php
(假设顶级bin文件夹在composer.json中设置为'bin',默认情况下eZPublish中就是这样)
大多数命令需要定义一个环境才能成功执行。这可以通过使用'--env'选项或SYMFONY_ENV环境变量来完成
特性:管理旧版设置
-
这允许您在eZ5存储库中保留eZP Legacy的设置,位于Legacy扩展之外
-
您可以将它们存储在任何您喜欢的目录中,默认是'ezpublish/legacy_settings'
-
允许存储'common'设置和'每个环境'设置文件,后者的文件会覆盖前者如果两个位置都有文件的话
-
设置文件默认为符号链接。在Windows上,以非管理员身份运行时,它们会被复制
-
部署设置的命令是
php bin/ezp5installer.php legacy-settings:install --env <env>
-
设置文件夹的预期结构是
Structure: <baseDir> |- common | |- override | |- *.ini | |- siteaccess | |- <name> | |- *.ini |- <env> |- override | |- *.ini |- siteaccess |- <name> |- *.ini
特性:管理每个环境的配置(Apache、Solr等)
-
这使得能够在项目中保留类似.htaccess等文件,每个环境一个版本或一个全局版本,并将它们部署到目标目录(eZP根目录内或甚至之外)
-
使用与旧版设置类似的子目录结构;存储文件的默认目录是'ezpublish/misc_files'
-
部署文件的命令是
php bin/ezp5installer.php misc:install --env <env>
如果目标文件之一存在且不是符号链接,部署将失败。使用'-o'选项允许覆盖
特性:从数据库中清理临时数据
在开发网站时,eZ数据库将在某些表中积累“临时垃圾”,例如最常搜索的内容、待处理通知和登录用户的最后访问页面。
虽然这样做不是强制性的,但在将数据库发送到UAT/PROD之前删除这些数据是一个好主意。可用的命令之一:database:cleanup
就是为了这样做。
如果您在任何时候使用完整数据库转储,并希望使用“diff”或类似工具进行比较,这也是一个有用的工具。
特性:清除Memcache缓存
请参阅memcache:purge命令,例如
php bin/ezp5installer.php memcache:purge
注意:仅当使用yml配置文件设置eZPublish时才有效
特性:清除Varnish服务器
请参阅varnish:purge命令,例如
php $DIR/ezp5installer.php varnish:purge --key=ezpublish.system.my_siteaccess_group.http_cache.purge_servers
注意:仅当使用yml配置文件设置eZPublish时才有效
特性:清除OPCache缓存
为了实现这一点,我们必须向Web服务器发出HTTP请求。一种方法是
-
在Web根目录设置一个清除opcache的脚本
<?php if (function_exists('opcache_reset')) { opcache_reset(); echo 'OK'; } else { echo 'KO'; }
-
保护对它的访问,使其只能由部署脚本来请求。例如Apache htaccess配置
# Allow ONLY TRUSTED IPS to send calls to clean the OPCache RewriteCond %{REMOTE_ADDR} ^127\.0\.0\.1 RewriteRule ^clearopcache.php - [L]
-
在某个按环境配置的某些地方添加连接到Web服务器的URL,例如:parameters.yml
parameters: opcache_purge_url: http://localhost/clearopcache.php
-
使用http:request命令,例如
php bin/ezp5installer.php http:request --key=parameters.opcache_purge_url
注意:仅当使用yml配置文件设置eZPublish时才有效
特性:获取配置值
为了允许您构建用于部署的复杂shell脚本,有一个小的助手可以提供配置值。例如
DBUSER=`php ./bin/ezp5installer.php config:get --key=doctrine.dbal.connections.my_project_repository_connection.user --env=uat`
特性:等等...
目前没有更多功能可用!
为了获得灵感,请查看doc/reference文件夹,特别是其中的phing文件...
开发者须知
-
ezp5installer.php应用必须在eZP配置错误或根本未配置的情况下也能运行。因此,它不能仅仅钩接到内核上。理想情况下,即使在eZP外部或没有eZP的情况下(例如,只在有solr的服务器上),它也应该能够工作。
-
命令的核心逻辑必须位于Common命名空间中的类中,而不是绑定到SF命令。
-
未来,我们还可以将每个Sf命令暴露为Composer命令(通过具有良好API的PHP类)。优点:它们更容易独立于基础操作系统。
-
问题:如何使ezp5installer命令使用依赖于环境的配置选项?讨论
- 目前,正在部署的环境是通过使用SYMFONY_ENV环境变量定义的:简单易懂。
- 一些命令可能需要比几个cli开关/env变量更多的配置。在哪里存储它?我们不能在composer.json中硬编码当前环境!
- a1:在composer.json中,“extra”部分,有一个顶层键,例如'ez5ui',每个环境都有一个子值:ez5ui..this.that。这很容易做到,但有点杂乱。此外,如果我们保持专用命令行工具方法,它可能不会很好地工作。
- a2:我们将在一个专门的yaml文件中保留安装程序的设置,该文件有一个已知的路径,该路径依赖于环境。我们甚至可以使用“extra”部分中的键来定义文件的路径(当然,有一个默认值),使其非常灵活...(问题:专用命令行工具将不知道额外的值,但我们可以为它添加cli开关)
待办事项
-
当此项目独立使用时,使自动加载工作
-
使我们的命令能够输出某些内容:默认注入一个简单的记录器(例如https://bitbucket.org/fool/echolog),以及当在composer命令模式下工作时,使用适当的记录器
-
添加一个命令,用于清理var目录中不再存在于ezimage表中的图像(二进制文件也是如此)
-
不要依赖于composer自动加载进行yml解析器,将其复制到这个项目中