使用环境变量的示例

此示例说明如何在开发系统中设置共享、系统特定的敏感值,然后使用共享配置、config.php和PHP环境变量的组合设置生产系统中的所有值。

这些配置设置可以在开发系统和生产系统之间共享:

来自​ 商店 >设置> 配置 >常规> 常规 ​的VAT号码和商店名称

这些配置设置是系统特定的或敏感的,如下所示:

  • 从​ 商店 >设置> 配置 >常规> 联系人 ​向(敏感)发送电子邮件
  • 来自​ 商店 >设置> 配置 >客户> 客户配置 > 创建新帐户选项 ​的默认电子邮件域(特定于系统)

您可以使用相同的过程来配置以下引用中的任何设置:

开始之前

在开始之前,请按照开发、构建和生产系统的先决条件中所述设置文件系统权限和所有权。

假设

本主题提供了修改生产系统配置的示例。 您可以根据需要选择不同的配置选项。

在本例中,我们假定:

  • 您使用Git源代码控制
  • 开发系统在名为mconfig的Git远程存储库中可用
  • 您的Git工作分支名为m2.2_deploy

步骤1:在开发系统中设置配置

要在开发系统中设置默认区域设置和权重单位,请执行以下操作:

  1. 登录到管理员。

  2. 单击“存储”>“设置”>“配置”>“常规”>“常规”

  3. 如果您有多个可用网站,请使用左上角的​ 商店视图 ​列表切换到其他网站,如下图所示。

    切换网站

  4. 在右窗格中,展开​ 存储信息

  5. 如有必要,请清除​ 增值税编号 ​字段旁边的​ 使用默认值 ​复选框。

  6. 在字段中输入数字(例如,12345)。

  7. 在​ 存储名称 ​字段中,输入一个值(如My Store)。

  8. 单击​ 保存配置

  9. 使用​ 存储视图 ​列表选择​ 默认配置,如下图所示。

    切换到默认配置

  10. 在左侧导航栏的“常规”下,单击​ 联系人

  11. 清除​ 将电子邮件发送到 ​字段旁边的​ 使用默认值 ​复选框。

  12. 在字段中输入电子邮件地址。

  13. 单击​ 保存配置

  14. 在左窗格中,单击“客户”>“客户配置”

  15. 在右窗格中,展开​ 新建帐户选项

  16. 清除​ 默认电子邮件域 ​字段旁边的​ 使用系统值 ​复选框。

  17. 在字段中输入域名。

  18. 单击​ 保存配置

  19. 如果出现提示,请刷新缓存。

步骤2:更新配置

现在您已在管理员中更改了配置,请将共享配置写入文件,如本节所述。

要更新配置

  1. 以文件系统所有者的身份登录开发系统,或切换到文件系统所有者。

  2. 更改为应用程序根并运行dump命令。

    code language-bash
    cd <Magento root dir>
    php bin/magento app:config:dump
    

    例如,如果/var/www/html/magento2中安装了Commerce,请输入:

    code language-bash
    cd /var/www/html/magento2
    php bin/magento app:config:dump
    
  3. 确认app/etc/config.php已更新。

    code language-bash
    git status
    

    示例响应:

    code language-terminal
    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
    请​_不_​将对generatedpub/mediapub/static目录的更改提交到源代码管理。 您可以在生成系统上生成这些文件。 开发系统可能具有代码、主题等,尚未准备好用于生产系统。
  4. 仅将您对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:更新构建系统并生成文件

现在,您已将共享配置的更改提交到源代码管理,您可以在构建系统中提取这些更改,编译代码并生成静态文件。 最后一步是将这些更改拉入您的生产系统。

要更新生成系统

  1. 以文件系统所有者的身份登录到构建系统。

  2. 切换到应用程序根目录。

    code language-bash
    cd <Magento root dir>
    
  3. 将更改从源代码管理拉入app/etc/config.php

    code language-bash
    git pull mconfig m2.2_deploy
    
  4. 编译代码。

    code language-bash
    bin/magento setup:di:compile
    
  5. 编译代码后,生成静态视图文件。

    code language-bash
    bin/magento setup:static-content:deploy -f
    
  6. 检查源代码控制中的更改。

    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
INFO
前面的表格具有默认电子邮件域配置设置的示例网站代码BASE。 将BASE替换为商店的相应网站代码。

使用环境变量设置变量

您可以使用以下格式在index.php中设置变量值:

$_ENV['VARIABLE'] = 'value';

要设置变量值

  1. 以文件系统所有者的身份登录您的生产系统,或切换到文件系统所有者。

  2. 在文本编辑器中打开<Commerce root dir>/pub/index.php

  3. 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';
    
  4. 将更改保存到pub/index.php并退出文本编辑器。

  5. 继续下一部分。

更新共享设置

本节将讨论如何提取您在开发和构建系统中进行的所有更改,这些更改会更新共享配置设置(商店名称和VAT编号)。

要更新生产系统

  1. 以文件系统所有者的身份登录到生产系统。

  2. 更改为应用程序根并启用维护模式。

    code language-bash
    cd <Magento root dir>
    
    code language-bash
    bin/magento maintenance:enable
    

    有关其他选项,例如设置IP地址白名单的功能,请参阅magento maintenance:enable

  3. 通过将app/etc/env.php中的cron_run设置为false停止任何正在运行的队列工作程序,如下所示:

    code language-php?start_inline=1
    'cron_consumers_runner' => [
            'cron_run' => false
        ]
    
  4. 更新配置。

    code language-bash
    bin/magento app:config:import
    
  5. 最后,kill任何活动的使用者进程。

    code language-bash
    kill <PID>
    

    其中PID是要终止的进程ID,例如:

    code language-bash
    kill 1234
    
  6. 从源代码管理中提取代码。

    code language-bash
    git pull mconfig m2.2_deploy
    
  7. 更新配置。

    code language-bash
    bin/magento app:config:import
    
  8. 清理缓存。

    code language-bash
    bin/magento cache:clean
    
  9. 结束维护模式。

    code language-bash
    bin/magento maintenance:disable
    

在“管理员”中验证配置设置

此部分讨论如何在生产系统管理员中验证配置设置。

验证配置设置

  1. 登录到生产系统的管理员。

  2. 单击“存储”>“设置”>“配置”>“常规”>“常规”

  3. 使用左上角的​ 商店视图 ​列表切换到其他网站。

    在开发系统中设置的共享配置选项显示如下。

    检查生产系统中的设置

    note info
    INFO
    存储名称 ​字段在网站范围中可编辑,但如果您切换到默认配置范围,则无法编辑该字段。 这是您在开发系统中设置选项的结果。 增值税号 ​的值在网站范围中不可编辑。
  4. 如果您尚未这样做,请切换到默认配置范围。

  5. 在左侧导航栏的“常规”下,单击​ 联系人

    将电子邮件发送到 ​字段不可编辑,如下图所示。 这是一个敏感设置。

    检查生产系统中的设置

  6. 在左窗格中,单击“客户”>“客户配置”

  7. 在右窗格中,展开​ 新建帐户选项

    默认电子邮件域 ​字段的值显示如下。 这是系统特定的设置。

    检查生产系统中的设置

recommendation-more-help
386822bd-e32c-40a8-81c2-ed90ad1e198c