kaliop/ezpublish5universalinstaller

ez5通用安装工具集

2.9.1 2021-12-03 13:28 UTC

This package is auto-updated.

Last update: 2024-08-29 03:26:10 UTC


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请求。一种方法是

  1. 在Web根目录设置一个清除opcache的脚本

     <?php
    
     if (function_exists('opcache_reset')) {
         opcache_reset();
         echo 'OK';
     } else {
         echo 'KO';
     }
    
  2. 保护对它的访问,使其只能由部署脚本来请求。例如Apache htaccess配置

     # Allow ONLY TRUSTED IPS to send calls to clean the OPCache
     RewriteCond %{REMOTE_ADDR} ^127\.0\.0\.1
     RewriteRule ^clearopcache.php - [L]
    
  3. 在某个按环境配置的某些地方添加连接到Web服务器的URL,例如:parameters.yml

     parameters:
         opcache_purge_url: http://localhost/clearopcache.php
    
  4. 使用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解析器,将其复制到这个项目中

License Latest Stable Version Total Downloads