存储配置管理
存储区的默认配置存储在相应模块的config.xml
中。 当您在Commerce Admin或CLI bin/magento config:set
命令中更改设置时,这些更改将反映在核心数据库中,特别是core_config_data
表中。 这些设置将覆盖config.xml
文件中存储的默认配置。
存储设置(引用管理员 存储 > 设置 > 配置 节中的配置)基于配置类型存储在部署配置文件中:
app/etc/config.php
— 与静态内容部署相关的商店、网站、模块或扩展名的配置设置、静态文件优化和系统值。 请参阅 配置指南 中的config.php引用。app/etc/env.php
— 系统特定覆盖和敏感设置的值,这些值应该 NOT 存储在源代码管理中。 请参阅 配置指南 中的env.php引用。
配置管理提供了一种使用Pipeline部署以最小的停机时间跨环境部署一致存储设置的方法。 云基础架构项目上的Adobe Commerce包括构建服务器、生成和部署脚本,以及设计有管道部署策略的部署环境。
配置覆盖方案
所有系统配置都根据以下覆盖方案在构建和部署阶段进行设置:
- 如果存在环境变量,请使用自定义配置并忽略默认配置。
- 如果环境变量不存在,请使用
.magento.app.yaml
文件中MAGENTO_CLOUD_RELATIONSHIPS
名称 — 值对的配置。 忽略默认配置。 - 如果环境变量不存在,
MAGENTO_CLOUD_RELATIONSHIPS
不包含名称 — 值对,请删除所有自定义配置并使用默认配置中的值。
总之,环境变量将覆盖所有其他值。
如果在多个位置配置了相同的设置,则应用程序将依靠以下配置层次结构来确定将哪个值应用于环境:
方法
环境变量
.magento.app.yaml
.magento.app.yaml
文件的variables
部分中添加的值。 在此处指定值可确保在所有环境中进行一致的配置。 请勿在.magento.app.yaml
文件中指定敏感值。 查看应用程序设置。app/etc/env.php
app/etc/config.php
app:config:dump
命令添加此处存储的值。 共享配置值已添加到config.php
。 从管理员或使用CLI设置共享配置。 config.php
文件包含在源代码管理中。config.xml
config.xml
文件中为模块设置了默认值。 如果Adobe Commerce找不到通过以上任何方法设置的任何值,则会回退到默认值(如果已设置)。配置转储
您可以使用以下ece-tools
命令生成包含所有当前存储配置的config.php
文件:
./vendor/bin/ece-tools config:dump
“转储”到app/etc/config.php
文件的数据变为 锁定,这意味着Commerce管理员中的相应字段变为 只读。 config.php
文件仅包含您配置的设置。 它不会锁定默认值。 仅锁定您更新的值还可以确保暂存环境和生产环境中使用的所有扩展不会由于只读配置(尤其是Fastly)而中断。
ece-tools config:dump
命令不会检索模块的详细配置,如B2B。 如果需要完整的配置转储,请使用app:config:dump
命令,但此命令将配置值锁定在只读状态。敏感数据
使用bin/magento app:config:dump
命令时将任何敏感配置导出到app/etc/env.php
文件。 您可以使用CLI命令设置敏感值: bin/magento config:sensitive:set
。 请参阅 Commerce PHP扩展 指南中的敏感设置和特定于环境的设置,了解如何将配置设置指定为敏感设置或特定于系统。
请参阅 配置指南 中的敏感或系统特定的设置列表。
SCD性能
根据存储的大小,您可能要部署大量静态内容文件。 通常,当应用程序处于维护模式时,静态内容会在部署阶段进行部署。 最佳配置是在构建阶段生成静态内容。 请参阅选择部署策略。
如果在转储配置后启用了配置管理,则应将SCD_*变量从部署阶段移动到构建阶段,以便在构建阶段正确启用静态内容生成。 查看环境变量。
配置管理前 :
deploy:
CRON_CONSUMERS_RUNNER:
cron_run: true
consumers: []
SCD_STRATEGY: compact
SCD_MATRIX:
...
REDIS_USE_SLAVE_CONNECTION: 1
启用配置管理后:
将SCD_*变量移至构建阶段:
deploy:
CRON_CONSUMERS_RUNNER:
cron_run: true
consumers: []
REDIS_USE_SLAVE_CONNECTION: 1
build:
SCD_STRATEGY: compact
SCD_MATRIX:
...
管理设置的过程
下面说明了此过程的高级概述:
要配置存储并生成配置文件:
-
在管理员中为您的商店完成以下环境之一的所有配置:
- 入门:活跃的开发分支
- Pro:集成环境中的活动分支
除非您计划将数据库从此环境转储到暂存环境和生产环境,否则这些配置不包括实际产品。 通常,开发数据库不包含您的完整存储数据。
-
在本地工作站上,转到您的项目目录。
-
创建远程数据库的本地转储。
code language-bash magento-cloud db:dump
-
添加、提交和推送代码更改以更新远程环境。
code language-bash git add app/etc/config.php
code language-bash git commit -m "Add system-specific configuration"
code language-bash git push origin <branch-name>
部署完成后,登录到已更新环境的管理员以验证设置。 根据需要继续将任何其他配置合并到暂存环境和生产环境。
更新配置
当您通过管理员修改环境并再次运行命令时,新配置将附加到config.php
文件中的代码中。
config.php
文件,但建议 不要。 该文件有助于使所有环境中的所有配置保持一致。 永远不要删除config.php
文件以对其进行重建。 删除文件可能会删除生成和部署过程所需的特定配置和设置。还原配置文件
在部署过程中创建了原始app/etc/env.php
和app/etc/config.php
文件的副本,并将其存储在同一文件夹中。 下面显示了同一app/etc
文件夹中的BAK(备份文件)和PHP(原始文件):
...
config.php.bak
di.xml
env.php.bak
vendor_path.php
config.php
db_schema.xml
env.php
...
较旧的配置使用了app/etc/config.local.php
文件。 请参阅迁移旧配置。
要还原配置文件:
-
在本地工作站上,使用SSH登录到远程项目和环境。
code language-bash magento-cloud ssh
-
验证备份文件的位置和可用性。
code language-bash ./vendor/bin/ece-tools backup:list
示例响应:
code language-none The list of backup files: app/etc/env.php app/etc/config.php
-
还原备份文件。
code language-bash ./vendor/bin/ece-tools backup:restore
迁移旧配置
如果您在云基础架构2.2或更高版本上升级到Adobe Commerce,则可能需要将设置从config.local.php
文件迁移到新的config.php
文件。 如果管理员中的配置设置与文件的内容匹配,请按照说明生成并添加config.php
文件。
如果两者不同,则可以将来自config.local.php
文件的内容附加到新的config.php
文件:
-
按照说明生成
config.php
文件。 -
打开
config.php
文件并删除最后一行。 -
打开
config.local.php
文件并复制其内容。 -
将内容粘贴到
config.php
文件中,保存并完成将其添加到Git中。 -
跨环境部署。
您只需完成一次此迁移。 迁移后,使用config.php
文件。
更改区域设置
您无需遵循复杂的配置导入和导出过程即可更改商店区域设置,如果 您启用了SCD_ON_DEMAND。 您可以使用管理员更新区域设置。
通过在集成分支中启用SCD_ON_DEMAND
,可以向暂存或生产环境添加其他区域设置,生成具有新区域设置信息的更新config.php
文件,并将配置文件复制到目标环境。
-
在集成环境中,使用
.magento.env.yaml
文件启用SCD_ON_DEMAND
变量。 -
使用您的管理员添加必要的区域设置。
-
使用SSH登录到远程环境并生成包含所有区域设置的
/app/etc/config.php
文件。code language-bash ssh <SSH-URL> "./vendor/bin/ece-tools config:dump"
-
将新的配置文件从远程集成环境复制到本地环境目录。
code language-bash rsync <SSH-URL>:app/etc/config.php ./app/etc/config.php
-
添加、提交和推送代码更改以更新远程环境。