升级Commerce版本
您可以将Adobe Commerce代码库升级到较新版本。 在升级项目之前,请查看 安装 指南中的系统要求以了解最新的软件版本要求。
根据您的项目配置,升级任务可能包括以下内容:
- 更新服务(例如MariaDB (MySQL)、OpenSearch、RabbitMQ和Redis)以便与新的Adobe Commerce版本兼容。
- 转换旧版配置管理文件。
- 使用挂接和环境变量的新设置更新
.magento.app.yaml
文件。 - 将第三方扩展升级到支持的最新版本。
- 更新
.gitignore
文件。
.magento.app.yaml
和services.yaml
文件,并在票证中声明PHP版本。 有关对PHP版本、扩展或环境设置的自助更改,请参阅_应用程序配置_中的PHP设置。从旧版本升级
如果您开始从低于2.1的Commerce版本升级,Adobe Commerce代码库中的某些限制可能会影响您将 更新 到特定ECE-Tools版本或 升级 到下一个受支持的Commerce版本的能力。 使用下表确定最佳路径:
ece-tools
包的云基础架构上使用Adobe Commerce版本,则必须对云项目执行一次性升级以删除已弃用的包。 如果您当前使用的是ece-tools
程序包,需要对其进行更新,请参阅更新ECE-Tools程序包。配置管理
较旧版本的Adobe Commerce(如2.1.4或更高版本到2.2.x或更高版本)使用config.local.php
文件进行配置管理。 Adobe Commerce版本2.2.0及更高版本使用config.php
文件,该文件与config.local.php
文件完全相同,但其配置设置有所不同,其中包括已启用的模块的列表和其他配置选项。
从旧版本升级时,必须迁移config.local.php
文件以使用较新的config.php
文件。 使用以下步骤备份配置文件并创建一个。
要创建临时config.php
文件:
-
创建
config.local.php
文件的副本并将其命名为config.php
。 -
将此文件添加到您项目的
app/etc
文件夹中。 -
将文件添加并提交到分支。
-
将文件推送到集成分支。
-
继续升级过程。
验证Zend框架编辑器依赖关系
从2.2.x 升级到 2.3.x或更高版本时,请验证Zend Framework依赖项是否已添加到composer.json
文件的autoload
属性中以支持Laminas。 此插件支持Zend框架的新要求,该框架已迁移到Laminas项目。 请参阅 MagentoDevBlog 上的将Zend Framework迁移到Laminas项目。
检查auto-load:psr-4
配置:
-
在本地工作站上,转到您的项目目录。
-
请查看您的集成分支。
-
在文本编辑器中打开
composer.json
文件。 -
检查Zend插件管理器实施的
autoload:psr-4
部分以了解控制器依赖关系。code language-json "autoload": { "psr-4": { "Magento\\Framework\\": "lib/internal/Magento/Framework/", "Magento\\Setup\\": "setup/src/Magento/Setup/", "Magento\\": "app/code/Magento/", "Zend\\Mvc\\Controller\\": "setup/src/Zend/Mvc/Controller/" }, }
-
如果缺少Zend依赖项,请更新
composer.json
文件:-
将以下行添加到
autoload:psr-4
部分。code language-json "Zend\\Mvc\\Controller\\": "setup/src/Zend/Mvc/Controller/"
-
更新项目依赖关系。
code language-bash composer update
-
添加、提交和推送代码更改。
code language-bash git add -A
code language-bash git commit -m "Add Zend plugin manager implementation for controllers dependency for Laminas support"
code language-bash git push origin <branch-name>
-
先将更改合并到暂存环境,然后再合并到生产环境。
-
配置文件
在升级应用程序之前,必须更新项目配置文件,以便考虑对云基础架构或应用程序上Adobe Commerce的默认配置设置所做的更改。 可以在magento-cloud GitHub存储库中找到最新的默认值。
.magento.app.yaml
始终检查.magento.app.yaml文件中包含的值以确定您所安装的版本,因为它控制应用程序构建和部署到云基础架构的方式。 以下示例适用于版本2.4.7,并且使用编辑器2.7.2。build: flavor:
属性不用于Composer 2.x;请参阅安装和使用Composer 2。
要更新.magento.app.yaml
文件:
-
在本地工作站上,转到您的项目目录。
-
打开并编辑
magento.app.yaml
文件。 -
更新PHP选项。
code language-yaml type: php:8.3 build: flavor: none dependencies: php: composer/composer: '2.7.2'
-
修改
hooks
属性build
和deploy
命令code language-yaml hooks: # We run build hooks before your application has been packaged. build: | set -e composer install php ./vendor/bin/ece-tools run scenario/build/generate.xml php ./vendor/bin/ece-tools run scenario/build/transfer.xml # We run deploy hook after your application has been deployed and started. deploy: | php ./vendor/bin/ece-tools run scenario/deploy.xml # We run post deploy hook to clean and warm the cache. Available with ECE-Tools 2002.0.10. post_deploy: | php ./vendor/bin/ece-tools run scenario/post-deploy.xml
-
在文件末尾添加以下环境变量。
对于Adobe Commerce 2.2.x到2.3.x-
code language-yaml variables: env: CONFIG__DEFAULT__PAYPAL_ONBOARDING__MIDDLEMAN_DOMAIN: 'payment-broker.magento.com' CONFIG__STORES__DEFAULT__PAYMENT__BRAINTREE__CHANNEL: 'Magento_Enterprise_Cloud_BT' CONFIG__STORES__DEFAULT__PAYPAL__NOTATION_CODE: 'Magento_Enterprise_Cloud'
对于Adobe Commerce 2.4.x-
code language-yaml variables: env: CONFIG__DEFAULT__PAYPAL_ONBOARDING__MIDDLEMAN_DOMAIN: 'payment-broker.magento.com' CONFIG__STORES__DEFAULT__PAYPAL__NOTATION_CODE: 'Magento_Enterprise_Cloud'
-
保存文件。 不要将更改提交或推送到远程环境。
-
继续升级过程。
composer.json
升级之前,请始终检查composer.json
文件中的依赖项是否与Adobe Commerce版本兼容。
要更新Adobe Commerce版本2.4.4及更高版本的composer.json
文件:
-
将以下
allow-plugins
添加到config
部分:code language-json "config": { "allow-plugins": { "dealerdirect/phpcodesniffer-composer-installer": true, "laminas/laminas-dependency-plugin": true, "magento/*": true } },
-
将以下插件添加到
require
部分:code language-json "require": { "magento/composer-root-update-plugin": "^2.0.3" },
-
将以下组件添加到
extra:component_paths
部分:code language-json "extra": { "component_paths": { "tinymce/tinymce": "lib/web/tiny_mce_5" }, },
-
保存文件。 尚未提交更改或将更改推送到分支。
-
继续升级过程。
项目备份
我们建议在升级之前创建项目的备份。 使用以下步骤可备份集成、暂存和生产环境。
要备份集成环境数据库和代码:
-
创建远程数据库的本地备份。
code language-bash magento-cloud db:dump
note note NOTE magento-cloud db:dump
命令运行带有--single-transaction
标志的mysqldump命令,该标志允许您在不锁定表的情况下备份数据库。 -
备份代码和介质。
code language-bash php bin/magento setup:backup --code [--media]
或者,如果您有大量静态文件已在源代码管理中,则可以省略
[--media]
。
要在部署 之前备份暂存或生产环境数据库,请执行以下操作:
应用程序升级
在升级应用程序之前,请查看服务版本信息以了解最新的软件版本要求。
升级应用程序版本:
-
在本地工作站上,转到您的项目目录。
-
使用版本约束语法设置升级版本。
code language-bash composer require "magento/magento-cloud-metapackage":">=CURRENT_VERSION <NEXT_VERSION" --no-update
note note NOTE 您必须使用版本约束语法才能成功更新 ece-tools
包。 您可以在composer.json
文件中找到用于升级的应用程序模板的版本限制。 -
更新项目。
code language-bash composer update
-
查看当前应用的修补程序:
-
如果
m2-hotfixes
目录中安装了任何修补程序,请提交Adobe Commerce支持票证,并与Adobe Commerce支持部门合作,验证哪些修补程序仍可以应用于新版本。 从m2-hotfixes
目录中删除不适用的修补程序。 -
如果
.magento.env.yaml
文件中应用了任何[质量修补程序],请验证它们是否仍可应用于新版本。 从.magento.env.yaml
文件的QUALITY_PATCHES
部分删除不适用的修补程序。
方法1: 验证Quality Patches发行说明中的适用版本
方法2: 查看可用的修补程序和状态
方法3: 搜索修补程序
-
-
添加、提交和推送代码更改。
code language-bash git add -A
code language-bash git commit -m "Upgrade"
code language-bash git push origin <branch-name>
由于Composer封送基础包的方式,将所有更改的文件添加到源代码管理时需要
git add -A
。composer install
和composer update
将基包(magento/magento2-base
和magento/magento2-ee-base
)中的文件封送到包根中。Composer封送的文件属于新版本的Adobe Commerce,用于覆盖这些相同文件的过时版本。 目前,Adobe Commerce中已禁用封送处理,因此您必须将封送处理文件添加到源代码管理。
-
等待部署完成。
-
通过使用SSH登录并检查版本,在集成、暂存或生产环境中验证升级。
code language-bash php bin/magento --version
创建config.php文件
如配置管理中所述,升级后,您必须创建一个更新的config.php
文件。 通过集成环境中的管理员完成任何其他配置更改。
要创建系统特定的配置文件:
-
从终端,使用SSH命令为环境生成
/app/etc/config.php
文件。code language-bash ssh <SSH-URL> "<Command>"
例如,对于Pro,要在
integration
分支上运行scd-dump
,请执行以下操作:code language-bash ssh <project-id-integration>@ssh.us.magentosite.cloud "php vendor/bin/ece-tools config:dump"
-
使用
rsync
或scp
将config.php
文件传输到本地工作站。 您只能将此文件添加到本地分支中。code language-bash rsync <SSH-URL>:app/etc/config.php ./app/etc/config.php
-
添加、提交和推送代码更改。
code language-bash git add app/etc/config.php && git commit -m "Add system-specific configuration" && git push origin master
这将生成一个包含模块列表和配置设置的更新
/app/etc/config.php
文件。
config.php
文件。 将此文件添加到您的代码后,您应该 不 删除它。 如果必须删除或编辑设置,请手动编辑该文件。升级扩展
在Marketplace或其他公司站点中查看您的第三方扩展和模块页面,并验证在云基础架构上对Adobe Commerce和Adobe Commerce的支持。 如果必须升级任何第三方扩展和模块,Adobe建议在禁用扩展的情况下使用新的集成分支。
验证并升级扩展:
-
在本地工作站上创建分支。
-
根据需要禁用扩展。
-
可用时,下载扩展升级。
-
按照第三方文档的说明安装升级。
-
启用并测试扩展。
-
添加、提交代码更改并将其推送到远程。
-
推送到并在您的集成环境中测试。
-
推送到暂存环境以在预生产环境中测试。
Adobe强烈建议在 之前升级您的生产环境,包括在您的站点启动过程中升级的扩展。
升级疑难解答
如果升级失败,您会在浏览器中收到一条错误消息,指示您无法访问店面或管理面板:
There has been an error processing your request
Exception printing is disabled by default for security reasons.
Error log record number: <error-number>
要解决错误:
-
在本地工作站上,转到您的项目目录。
-
使用SSH登录到远程环境。
code language-bash magento-cloud ssh
-
打开
./app/var/report/<error number>
文件。 -
检查日志并确定问题的来源。
-
添加、提交和推送代码更改。
code language-bash git add -A && git commit -m "Fixed deployment failure" && git push origin <branch-name>