部署变量

以下​ 部署 ​变量在部署阶段控制操作,可以继承和覆盖来自全局变量的值。 在.magento.env.yaml文件的deploy阶段中插入这些变量:

stage:
  deploy:
    DEPLOY_VARIABLE_NAME: value

有关自定义生成和部署过程的详细信息:

CACHE_CONFIGURATION

  • 默认值未设置
  • 版本—Adobe Commerce 2.1.4及更高版本

配置Redis页和默认缓存。 在设置cm_cache_backend_redis参数时,必须指定serverportdatabase选项。

stage:
  deploy:
    CACHE_CONFIGURATION:
      frontend:
        default:
          backend: file
        page_cache:
          backend: file

默认情况下,部署进程将覆盖env.php文件中的所有设置;但是,您可以选择为服务配置合并一个或多个值而不覆盖所有值。

_merge选项设置为以下选项之一:

  • true将配置的服务值与环境变量值合并
  • false使用环境变量值覆盖配置的服务值

以下示例将新值合并到现有配置:

stage:
  deploy:
    CACHE_CONFIGURATION:
      _merge: true
      frontend:
        default:
          backend_options:
            database: 10
        page_cache:
          backend_options:
            database: 11

以下示例使用​ 配置指南 ​中定义的Redis预加载功能

stage:
  deploy:
    CACHE_CONFIGURATION:
      _merge: true
      frontend:
        default:
          id_prefix: '061_'
          backend_options:
            preload_keys:
              - '061_EAV_ENTITY_TYPES:hash'
              - '061_GLOBAL_PLUGIN_LIST:hash'
              - '061_DB_IS_UP_TO_DATE:hash'
              - '061_SYSTEM_DEFAULT:hash'

要使用自定义REDIS_BACKEND模型(不仅来自允许列表),请将_custom_redis_backend选项设置为true以启用正确的验证,如以下示例所示:

stage:
  deploy:
    CACHE_CONFIGURATION:
      frontend:
        default:
          _custom_redis_backend: true
          backend: '\CustomRedisModel'

CLEAN_STATIC_FILES

  • 默认true
  • 版本—Adobe Commerce 2.1.4及更高版本

启用或禁用清理在生成或部署阶段生成的静态内容文件。 在开发中使用默认值​ true ​作为最佳实践。

  • true — 在部署更新的静态内容之前删除所有现有的静态内容。
  • false — 仅当生成的内容包含较新版本时,部署才会覆盖现有的静态内容文件。

如果您通过单独的进程修改静态内容,则将值设置为​ false

stage:
  deploy:
    CLEAN_STATIC_FILES: false

如果在部署之前未能清除静态视图文件,则在未删除先前版本的情况下将更新部署到现有文件时,可能会导致出现问题。 由于静态文件回退规则,如果目录包含同一文件的多个版本,则回退操作可能会显示错误的文件。

CRON_CONSUMERS_RUNNER

  • 默认cron_run = falsemax_messages = 1000
  • 版本—Adobe Commerce 2.2.0及更高版本

使用此环境变量可确认消息队列在部署后正在运行。

  • cron_run — 一个布尔值,用于启用或禁用consumers_runner cron作业(默认值= false)。

  • max_messages — 指定每个使用者在终止前必须处理的最大消息数(默认值= 1000)的数字。 您可以将值设置为0以防止使用者终止。

  • consumers — 一个字符串数组,指定要运行的使用者。 空数组运行​ 所有 ​使用者。

  • multiple_processes — 指定每个使用者要衍生的进程数的数字。 在Commerce 2.4.4 ​或更高版本中支持。

NOTE
要返回消息队列consumers的列表,请在远程环境中运行./bin/magento queue:consumers:list命令。

运行特定consumers且为每个使用者派生multiple_processes的示例数组:

stage:
  deploy:
    CRON_CONSUMERS_RUNNER:
      cron_run: true
      max_messages: 1000
      consumers:
        - example_consumer_1
        - example_consumer_2
-     multiple_processes:
        example_consumer_1: 4
        example_consumer_2: 3

运行所有consumers的空数组的示例:

stage:
  deploy:
    CRON_CONSUMERS_RUNNER:
      cron_run: true
      max_messages: 1000
      consumers: []

默认情况下,部署进程将覆盖env.php文件中的所有设置。 请参阅本地Adobe Commerce的​ Commerce配置指南 ​中的管理消息队列

CONSUMERS_WAIT_FOR_MAX_MESSAGES

  • 默认false
  • 版本—Adobe Commerce 2.2.0及更高版本

通过选择以下选项之一,配置consumers处理消息队列中的消息的方式:

  • falseConsumers处理队列中的可用消息,关闭TCP连接并终止。 即使已处理的消息数小于CRON_CONSUMERS_RUNNER部署变量中指定的max_messages值,Consumers也不等待其他消息进入队列。

  • trueConsumers继续处理来自消息队列的消息,直到达到CRON_CONSUMERS_RUNNER部署变量中指定的最大消息数(max_messages),然后关闭TCP连接并终止使用者进程。 如果队列在到达max_messages之前排空,则使用者将等待更多消息到达。

WARNING
如果使用工作程序运行consumers而不是使用cron作业,则将此变量设置为true。
stage:
  deploy:
    CONSUMERS_WAIT_FOR_MAX_MESSAGES: false

CRYPT_KEY

  • 默认值未设置
  • 版本—Adobe Commerce 2.1.4及更高版本
WARNING
通过Cloud Console而不是.magento.env.yaml文件设置CRYPT_KEY值,以避免在您的环境的源代码存储库中公开密钥。 请参阅设置环境和项目变量

在没有安装过程的情况下将数据库从一个环境移动到另一个环境时,需要相应的加密信息。 Adobe Commerce使用Cloud Console中设置的加密密钥值作为env.php文件中的crypt/key值。

DATABASE_CONFIGURATION

  • 默认值未设置
  • 版本—Adobe Commerce 2.1.4及更高版本

如果在.magento.app.yaml文件的关系属性中定义了数据库,则可以自定义数据库连接以进行部署。

stage:
  deploy:
    DATABASE_CONFIGURATION:
      some_config: 'some_value'

默认情况下,部署进程将覆盖env.php文件中的所有设置;但是,您可以选择为服务配置合并一个或多个值而不覆盖所有值。

_merge选项设置为以下选项之一:

  • true将配置的服务值与环境变量值合并
  • false使用环境变量值覆盖配置的服务值

以下示例将新值合并到现有配置:

stage:
  deploy:
    DATABASE_CONFIGURATION:
      some_config: 'some_new_value'
      _merge: true

此外,您还可以配置表前缀。

WARNING
如果不将合并选项与表前缀一起使用,则必须提供默认连接设置或部署验证失败。

以下示例使用带有默认连接设置的ece_表前缀,而不是使用_merge选项:

stage:
  deploy:
    DATABASE_CONFIGURATION:
      connection:
        default:
          username: user
          host: host
          dbname: magento
          password: password
      table_prefix: 'ece_'

示例输出:

MariaDB [main]> SHOW TABLES;
+-------------------------------------+
| Tables_in_main                      |
+-------------------------------------+
| ece_admin_passwords                 |
| ece_admin_system_messages           |
| ece_admin_user                      |
| ece_admin_user_session              |
| ece_adminnotification_inbox         |
| ece_amazon_customer                 |
| ece_authorization_rule              |
| ece_cache                           |
| ece_cache_tag                       |
| ece_captcha_log                     |
...

ELASTICSUITE_CONFIGURATION

  • 默认值未设置
  • 版本—Adobe Commerce 2.2.0及更高版本

在部署之间保留自定义的Elastic Suite服务设置,并在主Elastic Suite配置的“system/default/smile_elasticsuite_core_base_settings”部分使用它。 如果已安装Elastic Suite编辑器包,则会自动对其进行配置。

stage:
  deploy:
    ELASTICSUITE_CONFIGURATION:
      es_client:
        servers: 'remote-host:9200'
      indices_settings:
        number_of_shards: 1
        number_of_replicas: 0

默认情况下,部署进程将覆盖env.php文件中的所有设置;但是,您可以选择为服务配置合并一个或多个值而不覆盖所有值。

_merge选项设置为以下选项之一:

  • true将配置的服务值与环境变量值合并
  • false使用环境变量值覆盖配置的服务值

以下示例将新值合并到现有配置:

stage:
  deploy:
    ELASTICSUITE_CONFIGURATION:
      indices_settings:
        number_of_shards: 3
        number_of_replicas: 2
      _merge: true

已知限制

  • 将搜索引擎更改为elasticsuite以外的任何类型会导致部署失败并出现相应的验证错误
  • 删除Elasticsearch服务会导致部署失败并出现相应的验证错误
NOTE
有关在Adobe Commerce中使用或对Elastic Suite插件进行故障排除的详细信息,请参阅Elastic Suite 文档

ENABLE_GOOGLE_ANALYTICS

  • 默认false
  • 版本—Adobe Commerce 2.1.4及更高版本

在部署到暂存和集成环境时启用和禁用Google Analytics。 默认情况下,Google Analytics仅适用于生产环境。 将此值设置为true以启用暂存环境和集成环境中的Google Analytics。

  • true — 在暂存环境和集成环境中启用Google Analytics。
  • false — 在暂存环境和集成环境中禁用Google Analytics。

ENABLE_GOOGLE_ANALYTICS环境变量添加到.magento.env.yaml文件中的deploy阶段:

stage:
  deploy:
    ENABLE_GOOGLE_ANALYTICS: true
NOTE
部署过程始终支持在生产环境上进行Google Analytics。

FORCE_UPDATE_URLS

  • 默认true
  • 版本—Adobe Commerce 2.1.4及更高版本

在部署到Pro或Starter Staging and Production环境时,此变量将数据库中的Adobe Commerce基本URL替换为由MAGENTO_CLOUD_ROUTES变量指定的项目URL。 使用此设置可覆盖UPDATE_URLS部署变量的默认行为,在部署到暂存或生产环境时会忽略该行为。

stage:
  deploy:
    FORCE_UPDATE_URLS: true

LOCK_PROVIDER

  • 默认file
  • 版本—Adobe Commerce 2.2.5及更高版本

锁定提供程序阻止启动重复的cron作业和cron组。 在生产环境中使用file锁定提供程序。 入门环境和Pro集成环境不使用MAGENTO_CLOUD_LOCKS_DIR变量,因此ece-tools自动应用db锁定提供程序。

stage:
  deploy:
    LOCK_PROVIDER: "db"

请参阅​ 安装指南 ​中的配置锁定

MYSQL_USE_SLAVE_CONNECTION

  • 默认false
  • 版本—Adobe Commerce 2.1.4及更高版本
TIP
MYSQL_USE_SLAVE_CONNECTION变量仅在Adobe Commerce上受云基础架构暂存和Production Pro群集环境支持,在入门项目上不受支持。

Adobe Commerce可以异步读取多个数据库。 设置为true可自动使用到数据库的​ 只读 ​连接来接收非主节点上的只读通信。 此连接通过负载平衡提高了性能,因为只有一个节点处理读写通信。 设置为false可从env.php文件中删除任何现有的只读连接数组。

stage:
  deploy:
    MYSQL_USE_SLAVE_CONNECTION: true

MYSQL_USE_SLAVE_CONNECTION变量设置为true时,在Pro暂存和生产环境的env.php文件中,synchronous_replication参数默认设置为true。 当MYSQL_USE_SLAVE_CONNECTION设置为false时,未配置synchronous_replication参数。

QUEUE_CONFIGURATION

  • 默认值未设置
  • 版本—Adobe Commerce 2.1.4及更高版本

使用此环境变量可在部署之间保留自定义的AMQP服务设置。 例如,如果您希望使用现有的消息队列服务而不是依赖云基础架构为您创建它,请使用QUEUE_CONFIGURATION环境变量将其连接到您的站点:

stage:
  deploy:
    QUEUE_CONFIGURATION:
      amqp:
        host: test.host
        port: 1234
      amqp2:
        host: test.host2
        port: 12345
      mq:
        host: mq.host
        port: 1234

默认情况下,部署进程将覆盖env.php文件中的所有设置;但是,您可以选择为服务配置合并一个或多个值而不覆盖所有值。

_merge选项设置为以下选项之一:

  • true将配置的服务值与环境变量值合并
  • false使用环境变量值覆盖配置的服务值

以下示例将新值合并到现有配置:

stage:
  deploy:
    QUEUE_CONFIGURATION:
      _merge: true
      amqp:
        host: changed1.host
        port: 5672
      amqp2:
        host: changed2.host2
        port: 12345
      mq:
        host: changedmq.host
        port: 1234

REDIS_BACKEND

  • 默认Cm_Cache_Backend_Redis
  • 版本—Adobe Commerce 2.3.0及更高版本

指定Redis缓存的后端模型配置。

Adobe Commerce版本2.3.0及更高版本包括以下后端模型:

  • Cm_Cache_Backend_Redis
  • \Magento\Framework\Cache\Backend\Redis
  • \Magento\Framework\Cache\Backend\RemoteSynchronizedCache

如何设置REDIS_BACKEND的示例

stage:
  deploy:
    REDIS_BACKEND: '\Magento\Framework\Cache\Backend\RemoteSynchronizedCache'
NOTE
如果将\Magento\Framework\Cache\Backend\RemoteSynchronizedCache指定为Redis后端模型以启用二级缓存ece-tools将自动生成缓存配置。 请参阅​_Adobe Commerce配置指南_​中的示例配置文件。 要覆盖生成的缓存配置,请使用CACHE_CONFIGURATION部署变量。

REDIS_USE_SLAVE_CONNECTION

  • 默认false
  • 版本—Adobe Commerce 2.1.16及更高版本
WARNING
请​_不_​在缩放的架构项目中启用此变量。 它导致Redis连接错误。 Redis奴隶仍在活动,但不用于Redis读取。 作为替代方法,Adobe建议使用Adobe Commerce 2.3.5或更高版本,实施新的Redis后端配置,并为Redis实施L2缓存。
TIP
REDIS_USE_SLAVE_CONNECTION变量仅在Adobe Commerce上受云基础架构暂存和Production Pro群集环境支持,在入门项目上不受支持。

Adobe Commerce可以异步读取多个Redis实例。 设置为true可自动使用到Redis实例的​ 只读 ​连接来接收非主节点上的只读流量。 此连接通过负载平衡提高了性能,因为只有一个节点处理读写通信。 设置为false可从env.php文件中删除任何现有的只读连接数组。

stage:
  deploy:
    REDIS_USE_SLAVE_CONNECTION: true

您必须在.magento.app.yaml文件和services.yaml文件中配置Redis服务。

ECE-Tools版本2002.0.18及更高版本使用更多容错设置。 如果Adobe Commerce无法从Redis ​实例读取数据,则会从Redis ​实例读取数据。

只读连接不可用于集成环境或使用CACHE_CONFIGURATION变量

RESOURCE_CONFIGURATION

  • 默认值 — 未设置
  • 版本—Adobe Commerce 2.1.4及更高版本

将资源名称映射到数据库连接。 此配置对应于env.php文件的resource部分。

默认情况下,部署进程将覆盖env.php文件中的所有设置;但是,您可以选择为服务配置合并一个或多个值而不覆盖所有值。

_merge选项设置为以下选项之一:

  • true将配置的服务值与环境变量值合并
  • false使用环境变量值覆盖配置的服务值

以下示例将新值合并到现有配置:

stage:
  deploy:
    RESOURCE_CONFIGURATION:
      _merge: true
      default_setup:
        connection: default

SCD_COMPRESSION_LEVEL

  • 默认4
  • 版本—Adobe Commerce 2.1.4及更高版本

指定压缩静态内容时要使用的gzip压缩级别(09);0禁用压缩。

stage:
  deploy:
    SCD_COMPRESSION_LEVEL: 5

SCD_COMPRESSION_TIMEOUT

  • 默认600
  • 版本—Adobe Commerce 2.1.4及更高版本

当压缩静态资源所花费的时间超过压缩超时限制时,将中断部署过程。 设置静态内容压缩命令的最长执行时间(秒)。

stage:
  deploy:
    SCD_COMPRESSION_TIMEOUT: 800

SCD_MATRIX

  • 默认值未设置
  • 版本—Adobe Commerce 2.1.4及更高版本

您可以为每个主题配置多个区域设置。 此自定义通过减少不必要的主题文件来加快部署过程。 例如,您可以部署英语版的​ magento/backend ​主题以及其他语言的自定义主题。

以下示例使用三种区域设置部署Magento/backend主题:

stage:
  deploy:
    SCD_MATRIX:
      "magento/backend":
        language:
          - en_US
          - fr_FR
          - af_ZA

此外,您可以选择​ ​部署主题:

stage:
  deploy:
    SCD_MATRIX:
      "magento/backend": [ ]

SCD_MAX_EXECUTION_TIME

  • 默认值未设置
  • 版本—Adobe Commerce 2.2.0及更高版本

允许您增加静态内容部署的最大预期执行时间。

默认情况下,Adobe Commerce将最大预期执行时间设置为900秒,但在某些情况下,您可能需要更多时间来完成Cloud项目的静态内容部署。

stage:
  deploy:
    SCD_MAX_EXECUTION_TIME: 3600
WARNING
如果在部署后应用程序中遇到静态内容文件问题(例如缺少自定义主题文件),请将最大预期执行时间增加到900秒或更高。

SCD_NO_PARENT

  • 默认false
  • 版本—Adobe Commerce 2.4.2及更高版本

在部署阶段,设置SCD_NO_PARENT: true,以便在部署阶段不生成父主题的静态内容。 此设置可最大限度地缩短部署时间,并防止在部署期间静态内容构建失败时可能发生的站点停机时间。 请参阅静态内容部署

stage:
  deploy:
    SCD_NO_PARENT: true

SCD_STRATEGY

  • 默认quick
  • 版本—Adobe Commerce 2.2.0及更高版本

允许您自定义静态内容的部署策略。 请参阅部署静态视图文件

如果您有多个区域设置,请仅使用这些选项​__:

  • standard — 为所有包部署所有静态视图文件。
  • quick — (默认值)可最大限度地缩短部署时间。
  • compact — 节省服务器上的磁盘空间。 在Adobe Commerce版本2.2.4及更早版本中,此设置将使用1的值覆盖scd_threads的值。
stage:
  deploy:
    SCD_STRATEGY: "compact"

SCD_THREADS

  • 默认 — 自动
  • 版本—Adobe Commerce 2.1.4及更高版本

设置静态内容部署的线程数。 默认值是根据检测到的CPU线程数设置的,不超过4的值。 增加线程数会加快静态内容部署;减少线程数会减慢部署速度。 您可以设置线程值,例如:

stage:
  deploy:
    SCD_THREADS: 2

要进一步缩短部署时间,请使用配置管理scd-dump命令将静态部署移动到生成阶段。

SEARCH_CONFIGURATION

  • 默认值未设置
  • 版本—Adobe Commerce 2.1.4及更高版本

使用此环境变量可在部署之间保留自定义的搜索服务设置。 例如:

Elasticsearch配置:

stage:
  deploy:
    SEARCH_CONFIGURATION:
      engine: elasticsearch
      elasticsearch_server_hostname: http://elasticsearch.internal
      elasticsearch_server_port: '9200'
      elasticsearch_index_prefix: magento2
      elasticsearch_server_timeout: '15'

OpenSearch配置(适用于Commerce 2.4.6及更高版本):

stage:
  deploy:
    SEARCH_CONFIGURATION:
      engine: opensearch
      opensearch_server_hostname: 'http://opensearch.internal'
      opensearch_server_port: '9200'
      opensearch_index_prefix: 'magento2'
      opensearch_server_timeout: '15'

默认情况下,部署进程将覆盖env.php文件中的所有设置;但是,您可以选择为服务配置合并一个或多个值而不覆盖所有值。

_merge选项设置为以下选项之一:

  • true将配置的服务值与环境变量值合并
  • false使用环境变量值覆盖配置的服务值

以下示例将新值合并到现有配置:

stage:
  deploy:
    SEARCH_CONFIGURATION:
      engine: elasticsearch
      elasticsearch_server_port: '9200'
      _merge: true

SESSION_CONFIGURATION

  • 默认值未设置
  • 版本—Adobe Commerce 2.1.4及更高版本

配置Redis会话存储 需要会话存储变量的saveredishostportdatabase选项。 例如:

stage:
  deploy:
    SESSION_CONFIGURATION:
      redis:
        bot_first_lifetime: 100
        bot_lifetime: 10001
        database: 0
        disable_locking: 1
        host: redis.internal
        max_concurrency: 10
        max_lifetime: 10001
        min_lifetime: 100
        port: 6379
      save: redis

默认情况下,部署进程将覆盖env.php文件中的所有设置;但是,您可以选择为服务配置合并一个或多个值而不覆盖所有值。

_merge选项设置为以下选项之一:

  • true将配置的服务值与环境变量值合并
  • false使用环境变量值覆盖配置的服务值

以下示例将新值合并到现有配置:

stage:
  deploy:
    SESSION_CONFIGURATION:
      _merge: true
      redis:
        max_concurrency: 10

SKIP_SCD

  • 默认值未设置
  • 版本—Adobe Commerce 2.1.4及更高版本

设置为true可在部署阶段跳过静态内容部署。

在部署阶段,设置SKIP_SCD: true,以便在部署阶段不进行静态内容生成。 此设置可最大限度地缩短部署时间,并防止在部署期间静态内容构建失败时可能发生的站点停机时间。 请参阅静态内容部署

stage:
  deploy:
    SKIP_SCD: true

UPDATE_URLS

  • 默认true
  • 版本—Adobe Commerce 2.1.4及更高版本

在部署时,将数据库中的Adobe Commerce基本URL替换为MAGENTO_CLOUD_ROUTES变量指定的项目URL。 此配置对于本地开发非常有用,因为本地开发为本地环境设置了基本URL。 当您部署到云环境时,URL会更新,以便您可以使用项目URL访问店面和管理员。

如果您在部署到Pro或Starter暂存和生产环境时必须更新URL,请使用FORCE_UPDATE_URLS变量。

stage:
  deploy:
    UPDATE_URLS: false

VERBOSE_COMMANDS

  • 默认值未设置
  • 版本—Adobe Commerce 2.1.4及更高版本

为部署阶段执行的bin/magento个CLI命令启用或禁用Symfony调试详细级别。

NOTE
要使用VERBOSE_COMMANDS设置控制命令输出中成功和失败的bin/magento CLI命令的详细信息,必须设置MIN_LOGGING_LEVEL debug

选择日志中提供的详细信息级别:

  • -v=正常输出
  • -vv=更多详细输出
  • -vvv =详细输出,非常适用于调试
stage:
  deploy:
    VERBOSE_COMMANDS: "-vv"
recommendation-more-help
05f2f56e-ac5d-4931-8cdb-764e60e16f26