技術細節

本主題說明有關Commerce 2.2及更高版本中管道部署的技術實作詳細資訊。 改良功能可劃分為下列領域:

本主題也會討論 建議的工作流程 用於管道部署,並提供一些範例來協助您瞭解其運作方式。

開始之前,請先檢閱 您的開發、建置和生產系統的先決條件.

設定管理

若要讓您同步化及維護開發及生產系統的組態,請使用下列覆寫配置。

如何決定設定變數值

如圖所示,組態值使用順序如下:

  1. 環境變數(如果存在)會覆寫所有其他值。
  2. 從共用組態檔 env.phpconfig.php. 中的值 env.php 覆寫中的值 config.php.
  3. 從儲存在資料庫中的值。
  4. 如果這些來源中沒有任何值,則會使用預設值或NULL。

管理共用設定

共用設定儲存在 app/etc/config.php,這應該是在原始檔控制中。

在開發的管理員(或雲端基礎結構上的Adobe Commerce)中設定共用設定 整合)系統並將設定寫入 config.php 使用 magento app:config:dump 命令.

管理系統特定設定

系統特定組態儲存在 app/etc/env.php,應 在原始檔控制中。

在開發(或雲端基礎結構整合上的Adobe Commerce)系統的管理員中設定系統專屬設定,並將設定寫入 env.php 使用 magento app:config:dump 命令.

這個命令也會將敏感設定寫入 env.php.

管理敏感設定

敏感設定也會儲存在 app/etc/env.php.

您可以透過下列任何方式管理敏感設定:

在Admin中鎖定的組態設定

中的任何組態設定 config.phpenv.php 已鎖定在「管理員」中;也就是說,這些設定無法在「管理員」中變更。
使用 magento config:setmagento config:set --lock 命令以變更 config.phpenv.php 檔案。

商務管理員

在生產模式中,管理員會顯示下列行為:

  • 您無法在「管理員」中啟用或停用快取型別

  • 開發人員設定無法使用(商店 >設定> 設定 >進階> 開發人員),包括:

    • 縮制CSS、JavaScript和HTML

    • 合併CSS與JavaScript

    • 伺服器端或使用者端LESS編譯

    • 內嵌翻譯

    • 如前所述,任何組態設定在 config.phpenv.php 已鎖定,無法在管理員中編輯。

    • 您只能將管理員地區設定變更為已部署主題使用的語言

      下圖顯示了 帳戶設定 > 介面地區設定 「管理員」中的清單,只顯示兩個已部署的區域設定:

      您只能將管理員地區設定變更為已部署地區設定

  • 您無法使用Admin變更任何範圍的地區設定。

    建議您先進行這些變更,然後再切換至生產模式。

    您仍然可以使用環境變數或 config:set 含有路徑的CLI命令 general/locale/code.

安裝和移除cron

在2.2版中,我們首次提供 magento cron:install 命令. 這個命令會將crontab設定為執行命令的使用者。

您也可以使用 magento cron:remove 命令。

建議的管道部署工作流程

下圖顯示我們建議您使用管道部署來管理設定的方式。

建議的管道部署工作流程

開發系統

在您的開發系統中,您需在管理員中進行設定變更,並產生共用設定, app/etc/config.php 以及系統特定的組態, app/etc/env.php. 檢查Commerce程式碼和共用設定到原始檔控制中,並將其推送到組建伺服器。

您還應在開發系統上安裝擴充功能並自訂Commerce程式碼。

在您的開發系統上:

  1. 在「管理員」中設定設定。

  2. 使用 magento app:config:dump 將組態寫入檔案系統的命令。

    • app/etc/config.php 是共用組態,包含所有設定 除了 敏感及系統專屬設定。 這個檔案應該在原始檔控制中。
    • app/etc/env.php 是系統專屬的組態,其中包含特定系統專屬的設定(例如主機名稱和連線埠號碼)。 此檔案應 在原始檔控制中。
  3. 將修改後的程式碼和共用設定新增到原始檔控制。

  4. 若要在開發期間移除產生的php程式碼和靜態資產檔案,請執行以下命令:

    code language-bash
    rm -r var/view_preprocessed/*
    rm -r pub/static/*/*
    rm -r generated/*/*
    

執行命令清除資產後,Commerce會產生工作檔案。

WARNING
請謹慎使用上述方法。 刪除 .htaccess檔案於 generatedpub 資料夾可能會導致問題。

建置系統

組建系統會編譯程式碼,並針對在Commerce中註冊的主題產生靜態檢視檔案。 它不需要連線至Commerce資料庫;只需要Commerce程式碼基底。

在您的建置系統上:

  1. 從原始檔控制提取共用組態檔。
  2. 使用 magento setup:di:compile 編譯程式碼的命令。
  3. 使用 magento setup:static-content:deploy -f 更新靜態檔案檢視檔案的命令。
  4. 將更新簽入原始檔控制。

生產系統

在您的生產系統(即您的即時商店)上,您會從原始檔控制提取產生的資產和程式碼更新,並使用命令列或環境變數設定系統專屬和敏感的組態設定。

在您的生產系統上:

  1. 啟動維護模式。
  2. 從原始檔控制提取程式碼和設定更新。
  3. 如果您使用Adobe Commerce,請停止佇列背景工作。
  4. 使用 magento app:config:import 命令來匯入生產系統中的組態變更。
  5. 如果您安裝的元件變更了資料庫綱要,請執行 magento setup:upgrade --keep-generated 更新資料庫架構和資料,並保留產生的靜態檔案。
  6. 若要設定系統特定的設定,請使用 magento config:set 命令或環境變數。
  7. 若要設定敏感設定,請使用 magento config:sensitive:set 命令或環境變數。
  8. 清理(也稱為 排清)快取。
  9. 結束維護模式。

組態管理命令

我們提供下列指令來協助您管理組態:

  • magento app:config:dump 將管理員組態設定寫入 config.phpenv.php (敏感設定除外)

  • magento config:set 在生產系統上設定系統特定設定的值。

    使用選填的 --lock 在Admin中鎖定選項的選項(即將設定設為不可編輯)。 如果設定已鎖定,請使用 --lock 選項以變更設定。

  • magento config:sensitive:set 在生產系統上設定敏感設定的值。

  • magento app:config:import 匯入組態變更來源 config.phpenv.php 至生產系統。

設定管理範例

此段落顯示管理組態的範例,讓您瞭解變更的進行方式。 config.phpenv.php.

變更預設地區設定

本區段顯示對所做的變更 config.php 當您使用管理員(商店 >設定> 設定 >一般> 一般 > 地區設定選項)。

在管理員中進行變更後,請執行 bin/magento app:config:dump 將值寫入 config.php. 此值會寫入 general 陣列在 locale 做為下列的程式碼片段 config.php 顯示:

'general' =>
    array (
        'locale' =>
        array (
            'code' => 'en_US',
            'timezone' => 'America/Chicago',
            'weight_unit' => 'kgs'
        )
    )

變更數個組態設定

本節將討論進行下列組態變更:

  • 新增網站、商店和商店檢視(商店 >設定> 所有商店)
  • 變更預設電子郵件網域(商店 >設定> 設定 >客戶> 客戶組態)
  • 設定PayPal API使用者名稱和API密碼(商店 >設定> 設定 >銷售> 付款方法 > PayPal > 必要的PayPal設定)

在管理員中進行變更後,請執行 bin/magento app:config:dump 在您的開發系統上。 這次,您所做的變更不會全部寫入 config.php;事實上,只有網站、商店和商店檢視會寫入該檔案,如下列程式碼片段所示。

config.php

config.php 包含:

  • 網站、商店和商店檢視的變更。
  • 非系統特定搜尋引擎設定
  • 不敏感的PayPal設定
  • 通知您從中省略之敏感設定的註解 config.php

websites 陣列:

      'new' =>
      array (
        'website_id' => '2',
        'code' => 'new',
        'name' => 'New website',
        'sort_order' => '0',
        'default_group_id' => '2',
        'is_default' => '0',
      ),

groups 陣列:

      2 =>
      array (
        'group_id' => '2',
        'website_id' => '2',
        'code' => 'newstore',
        'name' => 'New store',
        'root_category_id' => '2',
        'default_store_id' => '2',
      ),

stores 陣列:

     'newview' =>
      array (
        'store_id' => '2',
        'code' => 'newview',
        'website_id' => '2',
        'group_id' => '2',
        'name' => 'New store view',
        'sort_order' => '0',
        'is_active' => '1',
      ),

payment 陣列:

      'payment' =>
      array (
        'paypal_express' =>
        array (
          'active' => '0',
          'in_context' => '0',
          'title' => 'PayPal Express Checkout',
          'sort_order' => NULL,
          'payment_action' => 'Authorization',
          'visible_on_product' => '1',
          'visible_on_cart' => '1',
          'allowspecific' => '0',
          'verify_peer' => '1',
          'line_items_enabled' => '1',
          'transfer_shipping_options' => '0',
          'solution_type' => 'Mark',
          'require_billing_address' => '0',
          'allow_ba_signup' => 'never',
          'skip_order_review_step' => '1',
        ),

env.php

預設的電子郵件網域系統特定組態設定會寫入 app/etc/env.php.

兩者都不會寫入PayPal設定,因為 bin/magento app:config:dump 命令沒有寫入敏感性設定。 您必須使用下列命令在生產系統上設定PayPal設定:

bin/magento config:sensitive:set paypal/wpp/api_username <username>
bin/magento config:sensitive:set paypal/wpp/api_password <password>
recommendation-more-help
386822bd-e32c-40a8-81c2-ed90ad1e198c