使用環境變數的範例
此範例說明如何在開發系統中設定共用、系統特定和敏感的值,然後使用共用組態、config.php
和PHP環境變數的組合來設定生產系統中的所有值。
這些組態設定可在開發系統和生產系統之間共用:
來自 商店 >設定> 設定 >一般> 一般 的VAT號碼和商店名稱
這些組態設定是系統專屬的或敏感的,如下所示:
- 從 商店 >設定> 設定 >一般> 連絡人 傳送電子郵件給(敏感)
- 預設電子郵件網域(系統專用),來自 商店 >設定> 設定 >客戶> 客戶設定 > 建立新帳戶選項
您可以使用相同的程式來配置下列參照中的任何設定:
開始之前
開始之前,請設定檔案系統許可權和擁有權,如開發、建置和生產系統的先決條件中所述。
假設
本主題提供修改生產系統組態的範例。 您可以視需要選擇不同的組態選項。
在本範例中,我們假設如下:
- 您使用Git原始檔控制
- 開發系統可在名為
mconfig
的Git遠端存放庫中取得 - 您的Git工作分支名為
m2.2_deploy
步驟1:在開發系統中設定設定
若要在開發系統中設定預設語言環境及加權單位:
-
登入管理員。
-
按一下 商店 >設定> 組態 >一般> 一般。
-
如果您有多個可用網站,請使用左上角的 商店檢視 清單,切換至不同的網站,如下圖所示。
-
在右窗格中,展開 存放區資訊。
-
如有必要,請清除 VAT編號 欄位旁的 使用預設值 核取方塊。
-
在欄位中輸入數字(例如,
12345
)。 -
在 存放區名稱 欄位中,輸入值(如
My Store
)。 -
按一下 儲存設定。
-
使用 存放區檢視 清單來選取 預設設定,如下圖所示。
-
在左側導覽列的[一般]底下,按一下[連絡人]。
-
清除 傳送電子郵件至 欄位旁的 使用預設值 核取方塊。
-
在欄位中輸入電子郵件地址。
-
按一下 儲存設定。
-
在左窗格中,按一下「客戶> 客戶組態」。
-
在右窗格中,展開 建立新帳戶選項。
-
清除 預設電子郵件網域 欄位旁的 使用系統值 核取方塊。
-
在欄位中輸入網域名稱。
-
按一下 儲存設定。
-
如果出現提示,請排清快取。
步驟2:更新設定
現在您已變更管理員中的設定,請將共用設定寫入檔案,如此章節所述。
若要更新組態:
-
以檔案系統擁有者的身分登入或切換到您的開發系統。
-
變更至應用程式根目錄,然後執行傾印命令。
code language-bash cd <Magento root dir> php bin/magento app:config:dump
例如,如果Commerce安裝在
/var/www/html/magento2
中,請輸入:code language-bash cd /var/www/html/magento2 php bin/magento app:config:dump
-
確認
app/etc/config.php
已更新。code language-bash git status
範例回應:
code language-none On branch m2.2_deploy Changed but not updated: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: app/etc/config.php
note warning WARNING 請_不_將變更提交至 generated
、pub/media
或pub/static
目錄至原始檔控制。 您會在建置系統上產生這些檔案。 開發系統可能有程式碼、主題等未準備好用於生產系統的專案。 -
只將您對
app/etc/config.php
的變更籤入至原始檔控制。code language-bash git add app/etc/config.php && git commit -m "Updated shared configuration" && git push mconfig m2.2_deploy
請注意,即使app/etc/env.php
(系統特定組態)已更新,也不要將其簽入原始檔控制。 稍後在本程式中,您將在生產系統上建立相同的組態設定。
步驟3:更新您的建置系統並產生檔案
現在您已確認將共用組態的變更提交至原始檔控制,您可以在建置系統中提取這些變更、編譯程式碼,並產生靜態檔案。 最後一個步驟是將這些變更提取至您的生產系統。
若要更新組建系統:
-
以檔案系統擁有者的身分登入組建系統。
-
變更至應用程式根目錄。
code language-bash cd <Magento root dir>
-
從原始檔控制提取變更到
app/etc/config.php
。code language-bash git pull mconfig m2.2_deploy
-
編譯程式碼。
code language-bash bin/magento setup:di:compile
-
編譯程式碼之後,產生靜態檢視檔案。
code language-bash bin/magento setup:static-content:deploy -f
-
檢查原始檔控制中的變更。
code language-bash git add -A && git commit -m "Updated files on build system" && git push mconfig m2.2_deploy
步驟4:更新生產系統
該流程的最後一步是更新您的生產系統。 您必須分成兩個部分來執行:
- 更新敏感和系統專屬設定
- 更新共用設定
更新敏感和系統專屬設定
若要使用環境變數設定敏感和系統專屬設定,您必須知道以下事項:
-
每個設定的範圍
如果您依照步驟1的指示進行,「傳送電子郵件給」的範圍是全域的(亦即「預設設定」範圍),「預設電子郵件網域」的範圍是網站。
您必須知道網站的程式碼,才能設定預設電子郵件網域設定值。 請參閱使用環境變數覆寫組態設定,以取得尋找它的詳細資訊。
-
每個設定的設定路徑
此範例中使用的設定路徑如下:
table 0-row-2 1-row-2 2-row-2 設定名稱 設定路徑 傳送電子郵件至 contact/email/recipient_email
預設電子郵件網域 customer/create_account/email_domain
您可以在敏感與系統特定組態路徑參考中找到所有敏感與系統特定組態路徑。
將設定路徑轉換為變數名稱
如使用環境變數覆寫組態設定中所述,變數的格式為:
<SCOPE>__<SYSTEM__VARIABLE__NAME>
全域範圍的<SCOPE>
值為CONFIG__DEFAULT__
,或網站範圍的CONFIG__WEBSITES__<WEBSITE CODE>
。
若要尋找<SYSTEM__VARIABLE__NAME>
的值,請將設定路徑中的每個/
字元取代為兩個底線。
變數名稱如下:
contact/email/recipient_email
CONFIG__DEFAULT__CONTACT__EMAIL__RECIPIENT_EMAIL
customer/create_account/email_domain
CONFIG__WEBSITES__BASE__CUSTOMER__CREATE_ACCOUNT__EMAIL_DOMAIN
BASE
範例。 將BASE
取代為您商店的適當網站代碼。使用環境變數設定變數
您可以使用下列格式設定index.php
中的變數值:
$_ENV['VARIABLE'] = 'value';
若要設定變數值:
-
以檔案系統擁有者的身分登入您的生產系統,或切換到該檔案系統擁有者。
-
在文字編輯器中開啟
<Commerce root dir>/pub/index.php
。 -
在
index.php
中的任何地方,設定變數的值,類似下列內容:code language-php $_ENV['CONFIG__DEFAULT__CONTACT__EMAIL__RECIPIENT_EMAIL'] = 'myname@example.com'; $_ENV['CONFIG__WEBSITES__BASE__CUSTOMER__CREATE_ACCOUNT__EMAIL_DOMAIN'] = 'magento.com';
-
將變更儲存至
pub/index.php
並結束文字編輯器。 -
繼續下一節。
更新共用設定
本節說明如何提取您在開發及建置系統上所做的所有變更,這些變更會更新共用組態設定(商店名稱和VAT編號)。
若要更新生產系統:
-
以檔案系統擁有者的身分登入生產系統。
-
變更為應用程式根並啟用維護模式。
code language-bash cd <Magento root dir>
code language-bash bin/magento maintenance:enable
如需其他選項,例如設定IP位址白名單的功能,請參閱
magento maintenance:enable
。 -
透過在
app/etc/env.php
中將cron_run
設定為false
來停止任何執行中的佇列背景工作,如下所示:code language-php?start_inline=1 'cron_consumers_runner' => [ 'cron_run' => false ]
-
更新設定。
code language-bash bin/magento app:config:import
-
最後,
kill
任何使用中的消費者處理序。code language-bash kill <PID>
其中
PID
是要終止的處理序識別碼,例如:code language-bash kill 1234
-
從原始檔控制提取程式碼。
code language-bash git pull mconfig m2.2_deploy
-
更新設定。
code language-bash bin/magento app:config:import
-
清除快取。
code language-bash bin/magento cache:clean
-
結束維護模式。
code language-bash bin/magento maintenance:disable
驗證Admin中的組態設定
本節探討如何在生產系統管理員中驗證組態設定。
若要驗證組態設定:
-
登入生產系統的管理員。
-
按一下 商店 >設定> 組態 >一般> 一般。
-
使用左上角的 商店檢視 清單,切換到不同的網站。
您在開發系統中設定的共用組態選項顯示如下。
note info INFO 存放區名稱 欄位可在網站範圍中編輯,但如果您切換至預設設定範圍,則無法編輯。 這是您在開發系統中設定選項的結果。 VAT編號 的值在網站範圍中不可編輯。 -
如果您尚未這樣做,請切換到預設設定範圍。
-
在左側導覽列的[一般]底下,按一下[連絡人]。
無法編輯 傳送電子郵件給 欄位,如下圖所示。 此為敏感設定。
-
在左窗格中,按一下「客戶> 客戶組態」。
-
在右窗格中,展開 建立新帳戶選項。
預設電子郵件網域 欄位的值顯示如下。 此為系統專屬設定。