完成升級必要條件

請務必瞭解執行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或OpenSearch引擎的elasticsearch7值。 若是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 Software Development Kit (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

您必須升級至上述(或更新版本)的Adobe Commerce,才能從Elasticsearch移轉至OpenSearch

OpenSearch需要JDK 1.8或更新版本。 請參閱安裝Java Software Development Kit (JDK)以檢查已安裝的JDK版本。

搜尋引擎組態說明您在變更搜尋引擎後必須執行的工作。

升級Elasticsearch

Adobe Commerce 2.4.6已匯入對Elasticsearch 8.x的支援。下列指示顯示Elasticsearch從7.x升級至8.x的範例:

  1. 將Elasticsearch7.x伺服器升級至8.x,並確定已啟動且執行中。 請參閱Elasticsearch檔案

  2. 將下列設定新增至您的elasticsearch.yml檔案並重新啟動Elasticsearch8.x服務,以啟用id_field_data欄位。

    code language-yaml
    indices:
      id_field_data:
        enabled: true
    
    note info
    INFO
    為了支援Elasticsearch8.x,Adobe Commerce 2.4.6預設不允許使用indices.id_field_data屬性,並使用docvalue_fields屬性中的_id欄位。
  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. 在Admin中設定Elasticsearch

  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. 在Admin中設定Elasticsearch

  5. 重新索引目錄索引。

    code language-bash
    bin/magento indexer:reindex catalogsearch_fulltext
    
  6. 從啟用的快取型別中刪除所有專案。

    code language-bash
    bin/magento cache:clean
    

協力廠商擴充功能

建議您連絡搜尋引擎廠商,判斷擴充功能是否與Adobe Commerce版本完全相容。

轉換資料庫表格格式

您必須將所有資料庫表格的格式從COMPACT轉換為DYNAMIC。 您也必須將儲存引擎型別從MyISAM轉換為InnoDB。 請參閱最佳實務

設定開啟檔案限制

設定開啟檔案限制(ulimit)可協助避免多次遞回呼叫長查詢字串失敗,或避免使用bin/magento setup:rollback命令時發生問題。 這個指令對於不同的UNIX殼層是不同的。 如需有關ulimit命令的具體資訊,請諮詢您的個人風格。

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

若要從命令列設定限制:

  1. 切換至檔案系統擁有者

  2. 將ulimit設為65536

    code language-bash
    ulimit -n 65536
    

若要在Bash shell中設定值:

  1. 切換至檔案系統擁有者

  2. 在文字編輯器中開啟/home/<username>/.bashrc

  3. 新增下列行:

    code language-bash
    ulimit -n 65536
    
  4. 儲存您對.bashrc檔案所做的變更,並結束文字編輯器。

IMPORTANT
建議您避免在php.ini檔案中設定pcre.recursion_limit屬性的值,因為這會產生未完成且無失敗通知的回覆。

確認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