magento中的pipeline部署技术实现

7天成为Magento系统架构师,现在开始学习Magento全栈开发!

《Magento2.X企业级开发实战》

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

配置管理

管理系统中的更改

cron的安装和删除

本主题还讨论了推荐的管道部署工作流,并提供了一些示例,帮助您了解其工作原理。

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

配置管理

为了使您能够同步和维护开发和生产系统的配置,我们使用以下覆盖方案。

如图所示,我们按以下顺序获取配置值:

环境变量(如果存在)将覆盖所有其他值。

从共享配置文件env.php和config.php。env.php中的值覆盖config.php中的值。

来自存储在数据库中的值。

如果这些源中不存在任何值,则使用默认值或NULL。

管理共享配置

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

在开发(或Adobe Commerce on cloud infrastructure integration)系统的管理员中设置共享配置,并使用magento app:config:dump命令将配置写入config.php。

管理特定于系统的配置

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

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

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

管理敏感配置

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

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

环境变量

使用magento config:set:sensitive命令将敏感配置保存在生产系统的env.php中

配置设置锁定在管理员界面中

config.php或env.php中的任何配置设置都锁定在Admin中;也就是说,这些设置不能在管理中更改。使用magento config:set或magento config:set--lock命令更改config.php或env.php文件中的设置。

管理系统中的更改

我们在生产模式下的管理中更改了以下行为:

您不能在管理中启用或禁用缓存类型

开发人员设置不可用(存储>设置>配置>高级>开发人员),包括:

缩小CSS、JavaScript和HTML

合并CSS和JavaScript

服务器端或客户端较少的编译

内联翻译

如前所述,config.php或env.php中的任何配置设置都是锁定的,无法在管理员界面中编辑。

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

下图显示了管理员中Account Setting>Interface Locale列表的示例,该列表仅显示两个已部署的区域设置:

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

您不能使用管理面板更改任何作用域的区域设置配置。

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

您仍然可以使用环境变量或路径为general/locale/code的[config:set][config cli config set]cli命令来配置区域设置。

cron的安装和删除

在2.2版中,我们首次通过提供Magento-cron:install命令来帮助您设置Magento-cron作业。此命令将Magento crontab设置为运行该命令的用户。

我们还允许您使用Magento-cron:remove命令删除Magento-crontab。

建议的管道部署工作流

下图显示了我们建议您如何使用管道部署来管理配置。

如图所示,我们按以下顺序获取配置值:

环境变量(如果存在)会覆盖所有其他值。
来自共享配置文件 env.php 和 config.php。 env.php 中的值覆盖 config.php 中的值。
来自存储在数据库中的值。
如果任何这些源中都不存在任何值,我们将使用默认值或 NULL。
管理共享配置
共享配置存储在 app/etc/config.php 中,它应该在源代码管理中。

在您的开发(或 Adob​​e Commerce 云基础架构集成)系统中的 Admin 中设置共享配置,并使用 magento app:config:dump 命令将配置写入 config.php。

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

在您的开发(或 Adob​​e Commerce 云基础设施集成)系统中的 Admin 中设置系统特定的配置,并使用 magento app:config:dump 命令将配置写入 env.php。

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

管理敏感配置
敏感配置也存储在 app/etc/env.php 中。

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

环境变量
使用 magento config:set:sensitive 命令将敏感配置保存在生产系统上的 env.php 中
在管理员中锁定的配置设置
config.php 或 env.php 中的任何配置设置都在 Admin 中被锁定;也就是说,这些设置不能在 Admin 中更改。使用 magento config:set 或 magento config:set --lock 命令更改 config.php 或 env.php 文件中的设置。

管理员的变化
我们在生产模式的 Admin 中更改了以下行为:

您不能在 Admin 中启用或禁用缓存类型
开发者设置不可用(商店 > 设置 > 配置 > 高级 > 开发者),包括:

缩小 CSS、JavaScript 和 HTML
合并 CSS 和 JavaScript
服务器端或客户端 LESS 编译
内联翻译
如前所述,config.php 或 env.php 中的任何配置设置都被锁定,无法在 Admin 中进行编辑。
您只能将管理区域设置更改为已部署主题使用的语言
下图显示了 Admin 中的 Account Setting> Interface Locale 列表的示例,仅显示了两个已部署的语言环境:

您只能将管理语言环境更改为已部署的语言环境

您不能使用管理面板更改任何范围的区域设置。

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

您仍然可以使用环境变量或 [config:set][config-cli-config-set] CLI 命令与路径 general/locale/code 配置区域设置。

cron 安装和移除
在 2.2 版本中,我们首次通过提供 magento cron:install 命令来帮助您设置 Magento cron 作业。此命令将 Magento crontab 设置为运行该命令的用户。

我们还允许您使用 magento cron:remove 命令删除 Magento crontab。

推荐的管道部署工作流程
下图显示了我们建议您如何使用管道部署来管理配置。

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

您还应该在开发系统上安装扩展和自定义 Magento 代码。

在您的开发系统上:

在 Admin 中设置配置。

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

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

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

rm -r var/view_preprocessed/*
rm -r 发布/静态//
rm -r 生成//
运行命令清除资产后,Magento 将生成工作文件。

小心上面的方法。删除生成的或 pub 文件夹中的 .htaccess 文件可能会导致问题。
构建系统
构建系统编译代码并为 Magento 中注册的主题生成静态视图文件。它不需要连接到 Magento 数据库;它只需要 Magento 代码库。

在您的构建系统上:

从源代码管理中提取共享配置文件。
使用 magento setup:di:compile 命令编译代码。
使用 magento setup:static-content:deploy -f 命令更新静态文件视图文件。
将更新签入源代码管理。
在此处阅读有关部署静态视图文件的更多信息
生产系统
在您的生产系统(即您的实时商店)上,您从源代码管理中提取生成的资产和代码更新,并使用命令行或环境变量设置特定于系统的敏感配置设置。

在您的生产系统上:

启动维护模式。
从源代码管理中提取代码和配置更新。
如果您使用 Adob​​e Commerce,请停止排队工作人员。
使用 magento app:config:import 命令导入生产系统中的配置更改。
如果您安装了更改数据库架构的组件,请运行 magento setup:upgrade --keep-generated 更新数据库架构和数据,保留生成的静态文件。
要设置特定于系统的设置,请使用 magento config:set 命令或环境变量。
要设置敏感设置,请使用 magento config:sensitive:set 命令或环境变量。
清理(​​也称为刷新)Magento 缓存。
结束维护模式。
配置管理命令
我们提供以下命令来帮助您管理配置:

magento app:config:dump 将管理配置设置写入 config.php 和 env.php(敏感设置除外)
magento config:set 在生产系统上设置系统特定设置的值。

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

magento config:sensitive:set 设置生产系统上敏感设置的值。
magento app:config:import 将配置更改从 config.php 和 env.php 导入生产系统。
配置管理示例
本节显示管理配置的示例,以便您可以了解如何对 config.php 和 env.php 进行更改。

更改默认语言环境
本部分显示了当您使用 Admin(商店 > 设置 > 配置 > 常规 > 常规 > 区域设置选项)更改默认重量单位时对 config.php 所做的更改。

在管理中进行更改后,运行 bin/magento app:config:dump 将值写入 config.php。该值被写入 locale 下的通用数组,如 config.php 中的以下片段所示:

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

更改多个配置设置
本节讨论进行以下配置更改:

添加网站、商店和商店视图(商店 > 设置 > 所有商店)
更改默认电子邮件域(商店 > 设置 > 配置 > 客户 > 客户配置)
设置 PayPal API 用户名和 API 密码(商店 > 设置 > 配置 > 销售 > 付款方式 > PayPal > 所需的 PayPal 设置)
在 Admin 中进行更改后,在您的开发系统上运行 bin/magento app:config:dump。这一次,不是所有的更改都写入 config.php;事实上,只有网站、商店和商店视图会写入该文件,如下面的片段所示。

配置文件
config.php 包含:

更改网站、商店和商店视图。
非系统特定的 Elasticsearch 设置
非敏感贝宝设置
通知您从 config.php 中省略的敏感设置的注释
显示 config.php 片段:
环境.php:

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

PayPal 设置不会写入这两个文件,因为 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>

开发、构建和生产系统的先决条件
文件权限和所有权必须在开发、构建和生产系统中保持一致。 要完成这项工作,您必须:

以下所有内容:

在所有系统上设置相同的文件系统所有者用户名
确保 Web 服务器在所有系统上以相同用户身份运行
确保文件系统所有者在所有系统上的 Web 服务器组中
使用以下指南根据需要更改每个系统上的 Magento 文件系统权限和所有权:

开发和构建:设置预安装所有权和权限(两个用户)
生产:开发和生产中的 Magento 所有权和权限
如果选择这种方法,则每次从构建系统中提取代码时都必须设置文件系统权限和所有权(如果构建系统上的文件系统所有者或 Web 服务器用户不同)。

如无特殊说明或标注,任何个人或组织,复制、转载、采集本站内容请注明:
本文来源于:【Magento中文网】,并添加本文地址链接。
如未按上述操作复制或转载,本站有权追究法律责任。
若本站内容侵犯了原著者的合法权益,可联系我们进行处理。