升級Commerce版本

您可以將Adobe Commerce程式碼基底升級至較新版本。 升級專案之前,請檢閱​ 安裝 ​指南中的系統需求,以取得最新的軟體版本需求。

根據您的專案組態,您的升級任務可能包括以下內容:

  • 更新服務(例如MariaDB (MySQL)、OpenSearch、RabbitMQ和Redis)以與新Adobe Commerce版本相容。
  • 轉換較舊的組態管理檔案。
  • 以掛接和環境變數的新設定更新.magento.app.yaml檔案。
  • 將協力廠商擴充功能升級至最新支援的版本。
  • 更新.gitignore檔案。
TIP
在開始升級或修補程式之前,請從整合環境建立使用中分支,並將新分支簽出至您的本機工作站。 將分支專用於升級或修補程式,有助於避免干擾您正在進行的工作。
TIP
對於Pro專案,您必須提交Adobe Commerce支援票證,才能僅在StagingProduction環境中安裝或更新服務
指示所需的服務變更,包括更新的.magento.app.yamlservices.yaml檔案,並在票證中說明PHP版本。 如需自行變更PHP版本、擴充功能或環境設定,請參閱​_應用程式組態_​中的PHP設定
若要變更即時生產環境(僅限Pro),至少需要48小時的通知。 這可讓雲端基礎結構團隊有充足的時間來調配資源並進行安全升級。 通知期間從基礎架構團隊認可請求並安排升級(不包括週末)開始。 例如,若要在星期一完成服務升級,必須在星期三收到排程升級的確認。 在需求尖峰期間,處理您的請求可能需要更多時間。

從舊版升級

如果您正在開始從2.1之前的Commerce版本升級,Adobe Commerce程式碼庫中的某些限制可能會影響您​ 更新 ​至特定ECE-Tools版本或​ 升級 ​至下一個支援的Commerce版本的能力。 請使用下表來決定最佳路徑:

目前版本
升級路徑
2.1.3和較舊版本
在繼續之前,請將Adobe Commerce升級至2.1.4版或更新版本。 然後執行單次升級以安裝ECE-Tools
2.1.4 - 2.1.14
更新ECE-Tools封裝。
請參閱2002.0.9和2002.0.x以上版本的發行說明。
2.1.15 - 2.1.16
更新ECE-Tools封裝。
請參閱2002.0.9和更新版本的發行說明。
2.2.x和更新版本
更新ECE-Tools封裝。
請參閱2002.0.8和更新版本的發行說明。
NOTE
如果您在不包含ece-tools套件的雲端基礎結構上使用Adobe Commerce版本,則您必須對您的雲端專案執行一次性升級以移除已棄用的套件。 如果您目前使用ece-tools套件,而且需要更新它,請參閱更新ECE-Tools套件

設定管理

舊版Adobe Commerce (例如2.1.4或更新版本至2.2.x或更新版本)使用config.local.php檔案進行組態管理。 Adobe Commerce 2.2.0版和更新版本使用config.php檔案,其運作方式與config.local.php檔案完全相同,但其組態設定不同,其中包含已啟用模組的清單和其他組態選項。

從舊版升級時,您必須移轉config.local.php檔案以使用較新的config.php檔案。 使用下列步驟來備份設定檔並建立設定檔。

若要建立暫存config.php檔案

  1. 建立config.local.php檔案的復本,並將其命名為config.php

  2. 將此檔案新增至專案的app/etc資料夾。

  3. 新增檔案並將其提交到您的分支。

  4. 將檔案推送至整合分支。

  5. 繼續進行升級程式。

WARNING
升級之後,您可以移除config.php檔案並產生新的完整檔案。 您只能刪除這個檔案來取代它一次。 產生新的、完整的config.php檔案後,您無法刪除該檔案以產生新的檔案。 請參閱設定管理和管道部署

驗證Zend Framework撰寫器相依性

從2.2.x 升級至 2.3.x或更新版本時,請確認Zend Framework相依性已新增至composer.json檔案的autoload屬性,以支援Laminas。 此外掛程式支援Zend Framework的新需求,此架構已移轉至Laminas專案。 請參閱​ MagentoDevBlog ​上的Zend Framework移轉至Laminas專案

若要檢查auto-load:psr-4組態

  1. 在本機工作站上,變更至專案目錄。

  2. 請檢視您的整合分支。

  3. 在文字編輯器中開啟composer.json檔案。

  4. 檢查Zend外掛程式管理員實作的autoload:psr-4區段以瞭解控制器相依性。

    code language-json
     "autoload": {
        "psr-4": {
           "Magento\\Framework\\": "lib/internal/Magento/Framework/",
           "Magento\\Setup\\": "setup/src/Magento/Setup/",
           "Magento\\": "app/code/Magento/",
           "Zend\\Mvc\\Controller\\": "setup/src/Zend/Mvc/Controller/"
        },
    }
    
  5. 如果缺少Zend相依性,請更新composer.json檔案:

    • 將下列行新增至autoload:psr-4區段。

      code language-json
      "Zend\\Mvc\\Controller\\": "setup/src/Zend/Mvc/Controller/"
      
    • 更新專案相依性。

      code language-bash
      composer update
      
    • 新增、提交和推送程式碼變更。

      code language-bash
      git add -A
      
      code language-bash
      git commit -m "Add Zend plugin manager implementation for controllers dependency for Laminas support"
      
      code language-bash
      git push origin <branch-name>
      
    • 先將變更合併到測試環境,然後再合併到生產環境。

組態檔

在升級應用程式之前,您必須更新專案設定檔,以考慮雲端基礎結構或應用程式上Adobe Commerce預設設定值的變更。 您可以在magento-cloud GitHub存放庫中找到最新的預設值。

.magento.app.yaml

請一律檢閱.magento.app.yaml檔案中包含的值以取得您安裝的版本,因為它會控制應用程式建置和部署到雲端基礎結構的方式。 以下範例適用於版本2.4.7,並使用撰寫器2.7.2。build: flavor:屬性不用於Composer 2.x;請參閱安裝及使用Composer 2

若要更新.magento.app.yaml檔案

  1. 在本機工作站上,變更至專案目錄。

  2. 開啟並編輯magento.app.yaml檔案。

  3. 更新PHP選項。

    code language-yaml
    type: php:8.3
    
    build:
        flavor: none
    dependencies:
        php:
            composer/composer: '2.7.2'
    
  4. 修改hooks屬性builddeploy命令。

    code language-yaml
    hooks:
        # We run build hooks before your application has been packaged.
        build: |
            set -e
            composer install
            php ./vendor/bin/ece-tools run scenario/build/generate.xml
            php ./vendor/bin/ece-tools run scenario/build/transfer.xml
        # We run deploy hook after your application has been deployed and started.
        deploy: |
            php ./vendor/bin/ece-tools run scenario/deploy.xml
        # We run post deploy hook to clean and warm the cache. Available with ECE-Tools 2002.0.10.
        post_deploy: |
            php ./vendor/bin/ece-tools run scenario/post-deploy.xml
    
  5. 將下列環境變數新增至檔案結尾。

    適用於Adobe Commerce 2.2.x至2.3.x-

    code language-yaml
    variables:
        env:
            CONFIG__DEFAULT__PAYPAL_ONBOARDING__MIDDLEMAN_DOMAIN: 'payment-broker.magento.com'
            CONFIG__STORES__DEFAULT__PAYMENT__BRAINTREE__CHANNEL: 'Magento_Enterprise_Cloud_BT'
            CONFIG__STORES__DEFAULT__PAYPAL__NOTATION_CODE: 'Magento_Enterprise_Cloud'
    

    適用於Adobe Commerce 2.4.x-

    code language-yaml
    variables:
        env:
            CONFIG__DEFAULT__PAYPAL_ONBOARDING__MIDDLEMAN_DOMAIN: 'payment-broker.magento.com'
            CONFIG__STORES__DEFAULT__PAYPAL__NOTATION_CODE: 'Magento_Enterprise_Cloud'
    
  6. 儲存檔案。 請勿認可或推送變更至遠端環境。

  7. 繼續進行升級程式。

composer.json

升級之前,請一律檢查composer.json檔案中的相依性是否與Adobe Commerce版本相容。

若要更新Adobe Commerce 2.4.4版和更新版本的composer.json檔案

  1. 將下列allow-plugins新增至config區段:

    code language-json
    "config": {
       "allow-plugins": {
          "dealerdirect/phpcodesniffer-composer-installer": true,
          "laminas/laminas-dependency-plugin": true,
          "magento/*": true
       }
    },
    
  2. 將下列外掛程式新增至require區段:

    code language-json
    "require": {
        "magento/composer-root-update-plugin": "^2.0.3"
    },
    
  3. 將下列元件新增至extra:component_paths區段:

    code language-json
    "extra": {
       "component_paths": {
          "tinymce/tinymce": "lib/web/tiny_mce_5"
       },
    },
    
  4. 儲存檔案。 尚未認可或推送變更至您的分支。

  5. 繼續進行升級程式。

專案備份

建議您先建立專案的備份,再進行升級。 使用下列步驟來備份您的整合、測試和生產環境。

若要備份您的整合環境資料庫和程式碼

  1. 建立遠端資料庫的本機備份。

    code language-bash
    magento-cloud db:dump
    
    note note
    NOTE
    magento-cloud db:dump命令執行帶有--single-transaction旗標的mysqldump命令,可讓您備份資料庫而不鎖定資料表。
  2. 備份程式碼和媒體。

    code language-bash
    php bin/magento setup:backup --code [--media]
    

    如果您有大量靜態檔案已經在原始檔控制中,您可以選擇忽略[--media]

若要在部署之前備份您的預備或生產環境資料庫

  1. 使用SSH登入遠端環境。

  2. 建立資料庫傾印。 若要選擇資料庫傾印的目標目錄,請使用--dump-directory選項。

    code language-bash
    vendor/bin/ece-tools db-dump
    

    傾印作業會在您的遠端專案目錄中建立dump-<timestamp>.sql.gz封存檔案。 請參閱備份資料庫

應用程式升級

請先檢閱服務版本資訊,瞭解最新的軟體版本需求,然後再升級您的應用程式。

若要升級應用程式版本

  1. 在本機工作站上,變更至專案目錄。

  2. 使用版本限制語法設定升級版本。

    code language-bash
    composer require "magento/magento-cloud-metapackage":">=CURRENT_VERSION <NEXT_VERSION" --no-update
    
    note note
    NOTE
    您必須使用版本限制語法才能成功更新ece-tools封裝。 您可以在用於升級的應用程式範本版本之composer.json檔案中找到版本限制。
  3. 更新專案。

    code language-bash
    composer update
    
  4. 檢閱目前套用的修正程式:

    • 如果m2-hotfixes目錄中有安裝任何修補程式,請提交Adobe Commerce支援票證,並與Adobe Commerce支援人員合作,確認哪些修補程式仍可套用至新版本。 從m2-hotfixes目錄移除不適用的修補程式。

    • 如果.magento.env.yaml檔案中套用了任何[品質修補程式],請確認它們是否仍可套用至新版本。 從.magento.env.yaml檔案的QUALITY_PATCHES區段中移除不適用的修補程式。

    方法1驗證Quality Patches發行說明中的適用版本

    方法2檢視可用的修補程式和狀態

    方法3搜尋修補程式

  5. 新增、提交和推送程式碼變更。

    code language-bash
    git add -A
    
    code language-bash
    git commit -m "Upgrade"
    
    code language-bash
    git push origin <branch-name>
    

    因為Composer封送基底套件的方式,所以需要git add -A才能將所有變更的檔案新增到原始檔控制中。 從基底封裝(magento/magento2-basemagento/magento2-ee-base)將composer installcomposer update封送檔案合併到封裝根目錄中。

    Composer封送處理的檔案屬於新版Adobe Commerce,以便覆寫這些相同檔案的過時版本。 目前,Adobe Commerce中已停用封送處理,因此您必須將封送處理檔案新增至原始檔控制。

  6. 等待部署完成。

  7. 使用SSH登入並檢查版本,在整合、測試或生產環境中驗證升級。

    code language-bash
    php bin/magento --version
    

建立config.php檔案

組態管理中所述,升級之後,您必須建立更新的config.php檔案。 透過您整合環境中的「管理員」完成任何其他設定變更。

若要建立系統特定的組態檔

  1. 從終端機,使用SSH命令產生環境的/app/etc/config.php檔案。

    code language-bash
    ssh <SSH-URL> "<Command>"
    

    例如,對於Pro,若要在integration分支上執行scd-dump

    code language-bash
    ssh <project-id-integration>@ssh.us.magentosite.cloud "php vendor/bin/ece-tools config:dump"
    
  2. 使用rsyncscpconfig.php檔案傳輸至您的本機工作站。 您只能將此檔案新增至本機分支。

    code language-bash
    rsync <SSH-URL>:app/etc/config.php ./app/etc/config.php
    
  3. 新增、提交和推送程式碼變更。

    code language-bash
    git add app/etc/config.php && git commit -m "Add system-specific configuration" && git push origin master
    

    這會產生具有模組清單和組態設定的更新/app/etc/config.php檔案。

WARNING
若要升級,請刪除config.php檔案。 將此檔案新增到您的程式碼後,您應該​ ​刪除它。 如果您必須移除或編輯設定,請手動編輯檔案。

升級擴充功能

檢閱Marketplace或其他公司網站中的協力廠商擴充功能和模組頁面,並確認對雲端基礎結構上的Adobe Commerce和Adobe Commerce的支援。 如果您必須升級任何協力廠商擴充功能和模組,Adobe建議您在停用擴充功能的情況下,使用新的整合分支。

若要驗證並升級您的擴充功能

  1. 在您的本機工作站上建立分支。

  2. 視需要停用您的擴充功能。

  3. 可用時,下載擴充功能升級。

  4. 安裝第三方檔案記錄的升級。

  5. 啟用並測試擴充功能。

  6. 新增、提交程式碼變更,並將其推播至遠端。

  7. 推送至並在您的整合環境中測試。

  8. 推送至測試環境,以便在預先生產環境中測試。

Adobe強烈建議您在網站啟動程式中​ 之前升級您的生產環境,包括升級的擴充功能。

NOTE
當您升級應用程式版本時,升級程式會自動更新為Fastly CDN模組的最新版本。

疑難排解升級

如果升級失敗,您會在瀏覽器中收到一則錯誤訊息,指出您無法存取店面或管理面板:

There has been an error processing your request
Exception printing is disabled by default for security reasons.
  Error log record number: <error-number>

若要解決錯誤

  1. 在本機工作站上,變更至專案目錄。

  2. 使用SSH登入遠端環境。

    code language-bash
    magento-cloud ssh
    
  3. 開啟./app/var/report/<error number>檔案。

  4. 檢查記錄並判斷問題的來源。

  5. 新增、提交和推送程式碼變更。

    code language-bash
    git add -A && git commit -m "Fixed deployment failure" && git push origin <branch-name>
    
recommendation-more-help
05f2f56e-ac5d-4931-8cdb-764e60e16f26