完成升级先决条件

了解运行Adobe Commerce所需的内容很重要。 您必须首先查看 系统要求 适用于您计划升级到的版本。

查看系统要求后,必须在升级系统之前完成以下先决条件:

  • 更新所有软件
  • 验证是否安装了受支持的搜索引擎
  • 转换数据库表格式
  • 设置打开文件限制
  • 验证cron作业是否正在运行
  • 设置 DATA_CONVERTER_BATCH_SIZE
  • 验证文件系统权限
  • 设置 pub/ 目录根目录
  • 安装编辑器更新插件

更新所有软件

系统要求 准确描述哪些第三方软件版本已通过Adobe Commerce版本测试。

确保更新了环境中的所有系统要求和依赖项。 参见PHP 7.4, PHP 8.0, PHP 8.1、和 所需的PHP设置.

NOTE
对于Adobe Commerce on cloud infrastructure Pro项目,您必须创建 支持 用于在“暂存”和“生产”环境中安装或更新服务的票证。 指明所需的服务更改并包含更新后的服务 .magento.app.yamlservices.yaml 文件和PHP版本。 Cloud Infrastructure团队更新项目最多可能需要48小时。 请参阅 支持的软件和服务.

验证是否安装了受支持的搜索引擎

Adobe Commerce需要安装Elasticsearch或OpenSearch才能使用该软件。

如果您要从2.3.x升级到2.4 ​中,您必须检查您是否将MySQL、Elasticsearch或第三方扩展用作2.3.x实例中的目录搜索引擎。 结果决定了您必须执行的操作 早于 升级到2.4。

如果要在2.3.x或2.4.x版本行中升级补丁版本,如果已安装Elasticsearch7.x,则可以选择 迁移到OpenSearch.

您可以使用命令行或管理员来确定目录搜索引擎:

  • 输入 bin/magento config:show catalog/search/engine 命令。 该命令返回值 mysqlelasticsearch (表示已配置Elasticsearch2), elasticsearch5elasticsearch6elasticsearch7或自定义值,指示您已安装第三方搜索引擎。 对于低于2.4.6的版本,请使用 elasticsearch7 Elasticsearch7或开放搜索引擎的值。 对于版本2.4.6及更高版本,请使用 opensearch 值。

  • 从管理员中,检查 Stores > Settings > Configuration > Catalog > Catalog > Catalog Search > Search Engine 字段。

以下部分介绍在升级到2.4.0之前必须执行的操作。

MySQL

从2.4开始,MySQL不再是一个受支持的目录搜索引擎。 在升级之前,必须安装和配置Elasticsearch或OpenSearch。 请使用以下资源来帮助您完成此过程:

一些第三方目录搜索引擎在Adobe Commerce搜索引擎上运行。 请与供应商联系以确定是否必须更新扩展。

MariaDB

与以前的MariaDB或MySQL版本相比,对MariaDB 10.4和10.6重新编制索引需要更多时间。 要加快重新索引速度,我们建议设置以下MariaDB配置参数:

如果您在升级到MariaDB 10.6后遇到与索引无关的性能下降,请考虑启用 --query-cache-type 设置。 例如, --query-cache-type=ON.

在升级云基础架构项目上的Adobe Commerce之前,您可能还需要升级MariaDB (请参阅MariaDB升级最佳实践)。

例如:

  • Adobe Commerce 2.4.6适用于MariaDB 10.5.1或更高版本
  • Adobe Commerce 2.3.5与MariaDB版本10.3或更低版本

除了这些建议之外,您还应咨询数据库管理员配置以下参数:

NOTE
这些设置仅适用于内部部署。 云基础架构上的Adobe Commerce客户无权访问这些设置。

搜索引擎

在升级到2.4.0之前,必须安装和配置Elasticsearch7.6或更高版本或OpenSearch 1.2。Adobe不再支持Elasticsearch2.x、5.x和6.x。 搜索引擎配置配置指南 描述将Elasticsearch升级到支持的版本后必须执行的任务。

请参阅 升级Elasticsearch 有关备份数据、检测潜在迁移问题以及测试升级以便部署到生产环境之前的完整说明。 根据您当前的Elasticsearch版本,可能需要也可能不需要完全重新启动群集。

Elasticsearch需要Java开发工具包(JDK) 1.8或更高版本。 请参阅 安装Java软件开发工具包(JDK) 以检查已安装的JDK版本。

OpenSearch

OpenSearch是Elasticsearch许可更改后Elasticsearch7.10.2的开源分支。 以下版本的Adobe Commerce引入了对OpenSearch的支持:

  • 2.4.6(OpenSearch具有单独的模块和设置)
  • 2.4.5
  • 2.4.4
  • 2.4.3-p2
  • 2.3.7 - p3

您可以 从Elasticsearch迁移到OpenSearch 仅当您升级到上述(或更高版本)列出的Adobe Commerce版本时。

OpenSearch需要JDK 1.8或更高版本。 请参阅 安装Java软件开发工具包(JDK) 以检查已安装的JDK版本。

搜索引擎配置 描述在更改搜索引擎后必须执行的任务。

升级Elasticsearch

Adobe Commerce 2.4.6引入了对Elasticsearch8.x的支持。以下说明显示了Elasticsearch从7.x升级到8.x的示例:

  1. 将Elasticsearch7.x服务器升级到8.x ,并确保已启动并正在运行。 请参阅 Elasticsearch文档.

  2. 启用 id_field_data 通过以下配置添加到 elasticsearch.yml 并重新启动Elasticsearch8.x服务。

    code language-yaml
    indices:
      id_field_data:
        enabled: true
    
    note info
    INFO
    为了支持Elasticsearch8.x,Adobe Commerce 2.4.6不允许使用 indices.id_field_data 属性并使用 _id 中的字段 docvalue_fields 属性。
  3. 在Adobe Commerce项目的根目录中,更新您的编辑器依赖项以删除 Magento_Elasticsearch7 模块并安装 Magento_Elasticsearch8 模块。

    code language-bash
    composer require magento/module-elasticsearch-8 --update-with-all-dependencies
    
  4. 更新项目组件。

    code language-bash
    bin/magento setup:upgrade
    
  5. 配置Elasticsearch 在 Admin.

  6. 重新索引目录索引。

    code language-bash
    bin/magento indexer:reindex catalogsearch_fulltext
    
  7. 从启用的缓存类型中删除所有项目。

    code language-bash
    bin/magento cache:clean
    

降级Elasticsearch

如果您无意中升级了服务器上的Elasticsearch版本,或确定由于任何其他原因需要降级,则还必须更新Adobe Commerce项目依赖项。 例如,从Elasticsearch8.x降级到7.x

  1. 将Elasticsearch8.x服务器降级为7.x ,并确保已启动并正在运行。 请参阅 Elasticsearch文档.

  2. 在Adobe Commerce项目的根目录中,更新您的编辑器依赖项以删除 Magento_Elasticsearch8 模块及其编辑器依赖项,并安装 Magento_Elasticsearch7 模块。

    code language-bash
    composer remove magento/module-elasticsearch-8
    
  3. 更新项目组件。

    code language-bash
    bin/magento setup:upgrade
    
  4. 配置Elasticsearch 在 Admin.

  5. 重新索引目录索引。

    code language-bash
    bin/magento indexer:reindex catalogsearch_fulltext
    
  6. 从启用的缓存类型中删除所有项目。

    code language-bash
    bin/magento cache:clean
    

第三方扩展

我们建议您联系搜索引擎供应商,以确定您的扩展是否与Adobe Commerce版本完全兼容。

转换数据库表格式

必须将所有数据库表的格式从 COMPACTDYNAMIC. 您还必须将存储引擎类型从 MyISAMInnoDB. 请参阅 最佳实践.

设置打开文件限制

设置打开文件限制(ulimit)有助于避免因多次递归调用长查询字符串而失败或在使用时出现问题 bin/magento setup:rollback 命令。 此命令对于不同的UNIX shell是不同的。 请咨询您的个人口味,了解有关 ulimit 命令。

Adobe建议设置打开的文件 ulimit 到值 65536 或者更多,但如有必要,您可以使用更大的值。 您可以在命令行上设置限制,也可以将其设置为用户shell的永久设置。

要从命令行设置限制,请执行以下操作:

  1. 切换到 文件系统所有者.

  2. 将限制设置为 65536.

    code language-bash
    ulimit -n 65536
    

要在Bash shell中设置值,请执行以下操作:

  1. 切换到 文件系统所有者.

  2. 打开 /home/<username>/.bashrc 在文本编辑器中。

  3. 添加以下行:

    code language-bash
    ulimit -n 65536
    
  4. 将更改保存到 .bashrc 并退出文本编辑器。

IMPORTANT
我们建议您避免为 pcre.recursion_limit 中的属性 php.ini 文件,因为它可能会导致不完整的回滚,并且不会出现失败通知。

验证cron作业是否正在运行

UNIX任务计划程序 cron 对于Adobe Commerce的日常运营至关重要。 它计划重新索引、新闻稿、电子邮件和站点地图等内容。 多个功能要求至少有一个cron作业作为文件系统所有者运行。

要验证您的cron作业是否设置正确,请通过输入以下命令作为文件系统所有者检查crontab:

NOTE
crontab是负责运行cron作业的配置文件。
crontab -l

应显示类似于以下内容的结果:

#~ MAGENTO START c5f9e5ed71cceaabc4d4fd9b3e827a2b
* * * * * /usr/bin/php /var/www/html/magento2/bin/magento cron:run 2>&1 | grep -v "Ran jobs by schedule" >> /var/www/html/magento2/var/log/magento.cron.log
#~ MAGENTO END c5f9e5ed71cceaabc4d4fd9b3e827a2b

cron未运行的另一个症状是管理员中出现以下错误:

要查看错误,请单击 系统消息 ,如下所示:

请参阅 配置和运行cron 以了解更多信息。

设置DATA_CONVERTER_BATCH_SIZE

Adobe Commerce 2.4包含安全增强功能,这些功能要求将某些数据从序列化转换为JSON。 此转换在升级期间发生,并且可能需要很长时间,具体取决于数据库中的数据量。

以下表格受到的影响最大:

  • catalogrule
  • core_config_data
  • magento_reward_history
  • quote_payment
  • quote
  • sales_order_payment
  • sales_order
  • salesrule
  • url_rewrite

如果您有大量数据,可以通过设置环境变量的值来提高性能, DATA_CONVERTER_BATCH_SIZE. 默认情况下,该值设置为 50,000.

要设置环境变量,请执行以下操作:

  1. 切换到 文件系统所有者.

  2. 设置变量:

    code language-bash
    export DATA_CONVERTER_BATCH_SIZE=100000
    
    note note
    NOTE
    DATA_CONVERTER_BATCH_SIZE 需要内存;如果不先测试内存,请避免将其设置为较大的值(约1 GB)。
  3. 升级完成后,您可以取消设置变量:

    code language-bash
    unset DATA_CONVERTER_BATCH_SIZE
    

验证文件系统权限

出于安全原因,Adobe Commerce要求对文件系统具有某些权限。 权限与不同 所有权. 所有权决定了谁可以对文件系统执行操作;权限决定了用户可以执行哪些操作。

文件系统中的目录必须可由 文件系统所有者的 组。

要验证您的文件系统权限是否设置正确,请登录到应用程序服务器或使用托管提供商的文件管理器应用程序。

例如,如果应用程序安装在 /var/www/html/magento2

ls -l /var/www/html/magento2

示例输出:

total 1028
drwxrwx---. 12 magento_user apache   4096 Jun  7 07:55 .
drwxr-xr-x.  3 root         root     4096 May 11 14:29 ..
drwxrwx---.  4 magento_user apache   4096 Jun  7 07:53 app
drwxrwx---.  2 magento_user apache   4096 Jun  7 07:53 bin
-rw-rw----.  1 magento_user apache 439792 Apr 27 21:23 CHANGELOG.md
-rw-rw----.  1 magento_user apache   3422 Apr 27 21:23 composer.json
-rw-rw----.  1 magento_user apache 425214 Apr 27 21:27 composer.lock
-rw-rw----.  1 magento_user apache   3425 Apr 27 21:23 CONTRIBUTING.md
-rw-rw----.  1 magento_user apache  10011 Apr 27 21:23 CONTRIBUTOR_LICENSE_AGREEMENT.html
-rw-rw----.  1 magento_user apache    631 Apr 27 21:23 COPYING.txt
drwxrwx---.  4 magento_user apache   4096 Jun  7 07:53 dev
-rw-rw----.  1 magento_user apache   2926 Apr 27 21:23 Gruntfile.js
-rw-rw----.  1 magento_user apache   7592 Apr 27 21:23 .htaccess
-rw-rw----.  1 magento_user apache   6419 Apr 27 21:23 .htaccess.sample
drwxrwx---.  4 magento_user apache   4096 Jun  7 07:53 lib
-rw-rw----.  1 magento_user apache  10376 Apr 27 21:23 LICENSE_AFL.txt
-rw-rw----.  1 magento_user apache  30634 Apr 27 21:23 LICENSE_EE.txt
-rw-rw----.  1 magento_user apache  10364 Apr 27 21:23 LICENSE.txt
-rw-rw----.  1 magento_user apache   4108 Apr 27 21:23 nginx.conf.sample
-rw-rw----.  1 magento_user apache   1427 Apr 27 21:23 package.json
-rw-rw----.  1 magento_user apache   1659 Apr 27 21:23 .php_cs
-rw-rw----.  1 magento_user apache    804 Apr 27 21:23 php.ini.sample
drwxrwx---.  2 magento_user apache   4096 Jun  7 07:53 phpserver
drwxrwx---.  6 magento_user apache   4096 Jun  7 07:53 pub
-rw-rw----.  1 magento_user apache   2207 Apr 27 21:23 README_EE.md
drwxrwx---.  7 magento_user apache   4096 Jun  7 07:53 setup
-rw-rw----.  1 magento_user apache   3731 Apr 27 21:23 .travis.yml
drwxrwx---.  7 magento_user apache   4096 Jun  7 07:53 update
drwxrws---. 11 magento_user apache   4096 Jun 13 16:05 var
drwxrws---. 29 magento_user apache   4096 Jun  7 07:53 vendor

有关示例输出的说明,请参阅以下内容:

  • 大多数文件是 -rw-rw----,即 660
  • drwxrwx--- = 770
  • -rw-rw-rw- = 666
  • 文件系统所有者是 magento_user

要获取更多详细信息,可以输入以下命令:

ls -la /var/www/html/magento2/pub

因为Adobe Commerce会将静态文件资产部署到的 pub,最好也验证其权限和所有权。

有关更多信息,请参阅 文件系统权限和所有权.

设置 pub/ 目录根目录

请参阅 修改docroot以提高安全性 以了解更多详细信息。

安装编辑器更新插件

magento/composer-root-update-plugin Composer插件解析必须对根项目进行的更改 composer.json 文件,然后再更新为新产品要求。

该插件通过识别和帮助您解决相关性冲突,而不是要求您手动识别和修复这些冲突,从而部分自动化了手动升级。

要安装插件,请执行以下操作:

  1. 将包添加到您的 composer.json 文件。

    code language-bash
    composer require magento/composer-root-update-plugin ~2.0 --no-update
    
  2. 更新依赖关系:

    code language-bash
    composer update
    
recommendation-more-help
83a60e0e-8849-4685-a8cd-c129ecd795ea