完成升級必要條件

請務必瞭解執行Adobe Commerce的必要條件。 您必須先檢閱 系統需求 針對您計畫升級至的版本。

檢閱系統需求後,您必須先完成下列必要條件,才能升級系統:

  • 更新所有軟體
  • 確認已安裝支援的搜尋引擎
  • 轉換資料庫表格格式
  • 設定開啟檔案限制
  • 確認cron工作正在執行
  • 設定 DATA_CONVERTER_BATCH_SIZE
  • 驗證檔案系統許可權
  • 設定 pub/ 目錄根目錄
  • 安裝撰寫器更新外掛程式

更新所有軟體

系統需求 準確說明哪些協力廠商軟體版本已通過Adobe Commerce版本測試。

請確定您更新了環境中的所有系統需求和相依性。 請參閱PHP 7.4, PHP 8.0, PHP 8.1、和 必要的PHP設定.

NOTE
針對雲端基礎結構專業版專案上的Adobe Commerce,您必須建立 支援 用於在中繼和生產環境中安裝或更新服務的票證。 指出所需的服務變更,並包含您更新的服務 .magento.app.yamlservices.yaml 票證中的檔案和PHP版本。 雲端基礎結構團隊更新您的專案最多可能需要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或OpenSearch引擎的值。 若為2.4.6版或更新版本,請使用 opensearch OpenSearch引擎的值。

  • 從Admin,檢查 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不再支援Elasticsearch 2.x、5.x和6.x。 搜尋引擎設定設定指南 說明將Elasticsearch升級至支援的版本後,您必須執行的工作。

請參閱 升級Elasticsearch 有關備份資料、偵測潛在移轉問題,以及在部署到生產環境之前測試升級的完整指示。 根據您目前的Elasticsearch版本,可能不需要完全重新啟動叢集。

Elasticsearch需要Java Development Kit (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已匯入對Elasticsearch 8.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
    為了支援Elasticsearch 8.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殼層是不同的。 如需詳細資訊,請參閱您的個人風格 ulimit 命令。

Adobe建議設定開啟的檔案 ulimit 至值 65536 也可能更多,但如有需要,您可以使用較大的值。 您可以在命令列上設定限制,也可以將其設為使用者殼層的永久設定。

若要從命令列設定限制:

  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