技术详细信息

本主题讨论有关Commerce 2.2及更高版本中管道部署的技术实施详细信息。 改进可以分为以下几个方面:

本主题还将讨论 推荐的工作流 ,并提供了一些示例来帮助您了解它的工作方式。

在开始之前,请查看 开发、构建和生产系统的先决条件.

配置管理

要让您同步和维护开发和生产系统的配置,请使用以下覆盖方案。

如何确定配置变量值

如图所示,配置值的使用顺序如下:

  1. 环境变量(如果存在)将覆盖所有其他值。
  2. 从共享配置文件 env.phpconfig.php. 中的值 env.php 覆盖中的值 config.php.
  3. 从存储在数据库中的值。
  4. 如果这些源中的任何一个都不存在值,则使用默认值或NULL。

管理共享配置

共享配置存储在中 app/etc/config.php,它应该在源代码控制中。

在开发环境的管理员(或云基础架构上的Adobe Commerce)中设置共享配置 集成)系统并将配置写入 config.php 使用 magento app:config:dump 命令.

管理特定于系统的配置

特定于系统的配置存储在中 app/etc/env.php,应该 在源代码管理中。

在开发系统(或Adobe Commerce on cloud infrastructure集成)的管理系统中设置特定于系统的配置,并将配置写入 env.php 使用 magento app:config:dump 命令.

此命令还会将敏感设置写入 env.php.

管理敏感配置

敏感配置还存储在中 app/etc/env.php.

您可以通过以下任意方式管理敏感配置:

已在Admin中锁定配置设置

中的任何配置设置 config.phpenv.php 在管理员中锁定;也就是说,无法在管理员中更改这些设置。
使用 magento config:setmagento config:set --lock 命令以更改 config.phpenv.php 文件。

商务管理员

在生产模式下,管理员会显示以下行为:

  • 您不能在“管理员”中启用或禁用缓存类型

  • 开发人员设置不可用(商店 >设置> 配置 >高级> 开发人员),包括:

    • 缩小CSS、JavaScript和HTML

    • 合并CSS和JavaScript

    • 服务器端或客户端LESS编译

    • 内联翻译

    • 如前所述,中的任意配置设置 config.phpenv.php 已锁定,无法在管理员中编辑。

    • 您只能将管理员区域设置更改为已部署主题使用的语言

      下图显示了 帐户设置 > 界面区域设置 管理员中的列表只显示两个已部署的区域设置:

      您只能将管理员区域设置更改为已部署的区域设置

  • 无法使用“管理员”更改任何范围的区域设置配置。

    我们建议在切换到生产模式之前进行这些更改。

    您仍然可以使用环境变量或 config:set 带有路径的CLI命令 general/locale/code.

安装和删除cron

在版本2.2中,我们首次通过提供 magento cron:install 命令. 此命令将crontab设置为运行该命令的用户。

此外,您还可以使用 magento cron:remove 命令。

建议的管道部署工作流

下图显示了我们建议您使用管道部署管理配置的方式。

建议的管道部署工作流

开发系统

在开发系统上,您在管理员中进行配置更改并生成共享配置, app/etc/config.php 以及系统特定的配置, app/etc/env.php. 将Commerce代码和共享配置检查到源控件中,并将其推送到构建服务器。

您还应在开发系统上安装扩展并自定义Commerce代码。

在您的开发系统上:

  1. 在“管理员”中设置配置。

  2. 使用 magento app:config:dump 命令将配置写入文件系统。

    • app/etc/config.php 是共享配置,包含所有设置 排除 敏感和特定于系统的设置。 此文件应在源代码管理中。
    • app/etc/env.php 是特定于系统的配置,其中包含特定系统特有的设置(例如,主机名和端口号)。 此文件应 在源代码管理中。
  3. 将修改后的代码和共享配置添加到源代码管理。

  4. 要在开发过程中删除生成的php代码和静态资源文件,请运行以下命令:

    code language-bash
    rm -r var/view_preprocessed/*
    rm -r pub/static/*/*
    rm -r generated/*/*
    

运行命令清除资产后,Commerce会生成工作文件。

WARNING
要小心上述方法。 删除 .htaccess文件位于 generatedpub 文件夹可能会导致问题。

构建系统

构建系统编译代码并为在Commerce中注册的主题生成静态视图文件。 它不需要连接到Commerce数据库;它只需要Commerce代码库。

在您的构建系统上:

  1. 从源代码管理中提取共享配置文件。
  2. 使用 magento setup:di:compile 命令编译代码。
  3. 使用 magento setup:static-content:deploy -f 用于更新静态文件视图文件的命令。
  4. 将更新签入源代码管理。

生产系统

在生产系统(即实时商店)中,您可以从源代码管理中提取生成的资源和代码更新,并使用命令行或环境变量设置特定于系统的敏感配置设置。

在生产系统上:

  1. 启动维护模式。
  2. 从源代码管理中获取代码和配置更新。
  3. 如果您使用Adobe Commerce,请停止队列工作程序。
  4. 使用 magento app:config:import 命令导入生产系统中的配置更改。
  5. 如果安装了更改数据库模式的组件,请运行 magento setup:upgrade --keep-generated 更新数据库架构和数据,保留生成的静态文件。
  6. 要设置系统特定的设置,请使用 magento config:set 命令或环境变量。
  7. 要设置敏感设置,请使用 magento config:sensitive:set 命令或环境变量。
  8. 清理(也称为 刷新)缓存。
  9. 结束维护模式。

配置管理命令

我们提供以下命令帮助您管理配置:

  • magento app:config:dump 将管理员配置设置写入 config.phpenv.php (敏感设置除外)

  • magento config:set 在生产系统上设置系统特定设置的值。

    使用可选 --lock 选项,以在Admin中锁定该选项(即使该设置不可编辑)。 如果设置已被锁定,请使用 --lock 选项更改设置。

  • magento config:sensitive:set 在生产系统上设置敏感设置的值。

  • magento app:config:import 从导入配置更改 config.phpenv.php 到生产系统。

配置管理示例

此部分显示了管理配置的示例,以便您查看如何对进行更改 config.phpenv.php.

更改默认区域设置

此部分显示对所做的更改 config.php 当您使用管理员(商店 >设置> 配置 >常规> 常规 > 区域设置选项)。

在管理员中进行更改后,运行 bin/magento app:config:dump 将值写入 config.php. 该值会写入 general 数组位于 locale 作为以下代码片段 config.php 显示:

'general' =>
    array (
        'locale' =>
        array (
            'code' => 'en_US',
            'timezone' => 'America/Chicago',
            'weight_unit' => 'kgs'
        )
    )

更改多个配置设置

本节讨论如何进行以下配置更改:

  • 添加网站、商店和商店视图(商店 >设置> 所有商店)
  • 更改默认电子邮件域(商店 >设置> 配置 >客户> 客户配置)
  • 设置PayPal API用户名和API密码(商店 >设置> 配置 >销售> 支付方式 > PayPal > 必需的PayPal设置)

在管理员中进行更改后,运行 bin/magento app:config:dump 在开发系统上。 这一次,您所做的更改并非全部写入 config.php;实际上,只有网站、商店和商店视图会写入该文件,如以下代码片段所示。

config.php

config.php 包含:

  • 对网站、商店和商店视图的更改。
  • 非系统特定的搜索引擎设置
  • 不敏感的PayPal设置
  • 通知您从中省略的敏感设置的注释 config.php

websites 数组:

      'new' =>
      array (
        'website_id' => '2',
        'code' => 'new',
        'name' => 'New website',
        'sort_order' => '0',
        'default_group_id' => '2',
        'is_default' => '0',
      ),

groups 数组:

      2 =>
      array (
        'group_id' => '2',
        'website_id' => '2',
        'code' => 'newstore',
        'name' => 'New store',
        'root_category_id' => '2',
        'default_store_id' => '2',
      ),

stores 数组:

     'newview' =>
      array (
        'store_id' => '2',
        'code' => 'newview',
        'website_id' => '2',
        'group_id' => '2',
        'name' => 'New store view',
        'sort_order' => '0',
        'is_active' => '1',
      ),

payment 数组:

      'payment' =>
      array (
        'paypal_express' =>
        array (
          'active' => '0',
          'in_context' => '0',
          'title' => 'PayPal Express Checkout',
          'sort_order' => NULL,
          'payment_action' => 'Authorization',
          'visible_on_product' => '1',
          'visible_on_cart' => '1',
          'allowspecific' => '0',
          'verify_peer' => '1',
          'line_items_enabled' => '1',
          'transfer_shipping_options' => '0',
          'solution_type' => 'Mark',
          'require_billing_address' => '0',
          'allow_ba_signup' => 'never',
          'skip_order_review_step' => '1',
        ),

env.php

系统特定的默认电子邮件域配置设置会写入 app/etc/env.php.

PayPal设置不会写入这两个文件,因为 bin/magento app:config:dump 命令不写入敏感设置。 您必须使用以下命令在生产系统上设置PayPal设置:

bin/magento config:sensitive:set paypal/wpp/api_username <username>
bin/magento config:sensitive:set paypal/wpp/api_password <password>
recommendation-more-help
386822bd-e32c-40a8-81c2-ed90ad1e198c