完成升級必要條件
請務必瞭解執行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或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,才能進行升級。 請使用下列資源來協助引導您完成此程式:
- 安裝及設定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 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的範例:
-
將Elasticsearch7.x伺服器升級至8.x,並確定已啟動且執行中。 請參閱Elasticsearch檔案。
-
將下列設定新增至您的
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
欄位。 -
在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
-
在Admin中設定Elasticsearch。
-
重新索引目錄索引。
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
-
在Admin中設定Elasticsearch。
-
重新索引目錄索引。
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
的值,但您可以視需要使用較大的值。 您可以在命令列上設定限制,也可以將其設為使用者殼層的永久設定。
若要從命令列設定限制:
-
切換至檔案系統擁有者。
-
將ulimit設為
65536
。code language-bash ulimit -n 65536
若要在Bash shell中設定值:
-
切換至檔案系統擁有者。
-
在文字編輯器中開啟
/home/<username>/.bashrc
。 -
新增下列行:
code language-bash ulimit -n 65536
-
儲存您對
.bashrc
檔案所做的變更,並結束文字編輯器。
php.ini
檔案中設定pcre.recursion_limit
屬性的值,因為這會產生未完成且無失敗通知的回覆。確認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