完成升級必要條件
請務必瞭解執行Adobe Commerce的必要條件。 您必須先檢閱 系統需求 針對您計畫升級至的版本。
檢閱系統需求後,您必須先完成下列必要條件,才能升級系統:
- 更新所有軟體
- 確認已安裝支援的搜尋引擎
- 轉換資料庫表格格式
- 設定開啟檔案限制
- 確認cron工作正在執行
- 設定
DATA_CONVERTER_BATCH_SIZE
- 驗證檔案系統許可權
- 設定
pub/
目錄根目錄 - 安裝撰寫器更新外掛程式
更新所有軟體
此 系統需求 準確說明哪些協力廠商軟體版本已通過Adobe Commerce版本測試。
請確定您更新了環境中的所有系統需求和相依性。 請參閱PHP 7.4, PHP 8.0, PHP 8.1、和 必要的PHP設定.
確認已安裝支援的搜尋引擎
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
命令。 該命令會傳回值mysql
,elasticsearch
(表示已設定Elasticsearch2),elasticsearch5
,elasticsearch6
,elasticsearch7
或自訂值,表示您已安裝協力廠商搜尋引擎。 對於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,才能進行升級。 請使用下列資源來協助引導您完成此程式:
- 安裝及設定Elasticsearch
- 安裝Elasticsearch
- 設定 nginx 或 Apache 使用您的搜尋引擎
- 設定Commerce使用Elasticsearch 並重新索引
部分協力廠商目錄搜尋引擎會在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版或更舊版本
除了這些建議之外,您應該洽詢資料庫管理員設定下列引數:
搜尋引擎
在升級至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的範例:
-
將Elasticsearch7.x伺服器升級至8.x,並確定已啟動且執行中。 請參閱 Elasticsearch檔案.
-
啟用
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
屬性。 -
在Adobe Commerce專案的根目錄中,更新您的撰寫器相依性以移除
Magento_Elasticsearch7
模組並安裝Magento_Elasticsearch8
模組。code language-bash composer require magento/module-elasticsearch-8 --update-with-all-dependencies
-
更新您的專案元件。
code language-bash bin/magento setup:upgrade
-
設定Elasticsearch 在 Admin.
-
重新索引目錄索引。
code language-bash bin/magento indexer:reindex catalogsearch_fulltext
-
從啟用的快取型別中刪除所有專案。
code language-bash bin/magento cache:clean
降級Elasticsearch
如果您不小心升級伺服器上的Elasticsearch版本,或因任何其他原因而決定需要降級,您也必須更新Adobe Commerce專案相依性。 例如,從Elasticsearch8.x降級為7.x
-
將Elasticsearch8.x伺服器降級為7.x,並確定已啟動且執行中。 請參閱 Elasticsearch檔案.
-
在Adobe Commerce專案的根目錄中,更新您的撰寫器相依性以移除
Magento_Elasticsearch8
模組及其撰寫器相依性,並安裝Magento_Elasticsearch7
模組。code language-bash composer remove magento/module-elasticsearch-8
-
更新您的專案元件。
code language-bash bin/magento setup:upgrade
-
設定Elasticsearch 在 Admin.
-
重新索引目錄索引。
code language-bash bin/magento indexer:reindex catalogsearch_fulltext
-
從啟用的快取型別中刪除所有專案。
code language-bash bin/magento cache:clean
協力廠商擴充功能
建議您連絡搜尋引擎廠商,判斷擴充功能是否與Adobe Commerce版本完全相容。
轉換資料庫表格格式
您必須將所有資料庫表格的格式從 COMPACT
至 DYNAMIC
. 您也必須轉換儲存引擎型別 MyISAM
至 InnoDB
. 另請參閱 最佳實務.
設定開啟檔案限制
設定開啟檔案限制(ulimit)可協助避免多次遞回呼叫長查詢字串失敗,或避免使用時發生問題。 bin/magento setup:rollback
命令。 這個指令對於不同的UNIX殼層是不同的。 如需詳細資訊,請參閱您的個人風格 ulimit
命令。
Adobe建議設定開啟的檔案 ulimit 至值 65536
也可能更多,但如有需要,您可以使用較大的值。 您可以在命令列上設定限制,也可以將其設為使用者殼層的永久設定。
若要從命令列設定限制:
-
切換至 檔案系統擁有者.
-
將限制設為
65536
.code language-bash ulimit -n 65536
若要在Bash shell中設定值:
-
切換至 檔案系統擁有者.
-
開啟
/home/<username>/.bashrc
在文字編輯器中。 -
新增下列行:
code language-bash ulimit -n 65536
-
將變更儲存至
.bashrc
檔案並退出文字編輯器。
pcre.recursion_limit
中的屬性 php.ini
檔案的倒回可能會不完整,且不會出現失敗通知。確認cron工作正在執行
UNIX工作排程器 cron
對Adobe Commerce的日常運作至關重要。 它會排程重新索引、電子報、電子郵件和網站地圖。 數個功能至少需要一個cron工作以檔案系統擁有者的身分執行。
若要驗證您的cron作業是否已正確設定,請輸入以下命令作為檔案系統擁有者來檢查crontab:
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
.
若要設定環境變數:
-
切換至 檔案系統擁有者.
-
設定變數:
code language-bash export DATA_CONVERTER_BATCH_SIZE=100000
note note NOTE DATA_CONVERTER_BATCH_SIZE
需要記憶體;請避免在未先測試的情況下將其設定為較大的值(約1 GB)。 -
升級完成後,您可以取消設定變數:
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
更新為新產品需求之前的檔案。
外掛程式會識別並協助您解決相依性衝突,而非要求您手動識別及修正衝突,進而部分自動化手動升級。
若要安裝外掛程式:
-
將套件新增至
composer.json
檔案。code language-bash composer require magento/composer-root-update-plugin ~2.0 --no-update
-
更新相依性:
code language-bash composer update