unleashedtech / dotenv-drupal
Requires
- php: >=7.4.0
- symfony/dotenv: ^5.3
This package is auto-updated.
Last update: 2024-08-24 19:49:47 UTC
README
此包扩展了Symfony的symfony/dotenv组件,允许通过环境变量进行简化的Drupal配置。请参阅Symfony组件的文档,了解如何使用.env
文件。请注意,如果服务器已设置了APP_ENV
变量,则.env
文件将被忽略。出于性能考虑,生产环境应理想地依赖于预配置的环境变量,而不是从.env
文件加载的环境变量值。
安装
composer require unleashedtech/dotenv-drupal
配置Drupal
首先,您需要配置Drupal以使用此包。
Drupal设置和站点文件
Drupal通常通过各种目录中的settings.php
文件进行配置。要使用此包与Drupal一起使用,需要在相关的settings.php
文件顶部添加一些代码。
<?php use UnleashedTech\Drupal\Dotenv\Dotenv; $dotenv = $dotenv ?? new Dotenv(); $config = $dotenv->getConfig(); $databases = $dotenv->getDatabases(); $settings = $dotenv->getSettings();
条件逻辑
如果需要特定站点的条件逻辑,此逻辑仍受支持。此包将自动加载各种settings.{{environment}}.php
、config.{{environment}}.php
或databases.{{environment}}.php
文件,如果它们存在。例如,如果您需要为测试环境设置数据库前缀,您可以创建databases.staging.php
。
<?php $databases['default']['default']['prefix'] = 'foo_';
每个包含的文件仅具有相关的变量作用域(例如,config.dev.php
仅具有$config
)。
多站Drupal
您可以使用default
设置文件为多站安装提供基本配置。
<?php use UnleashedTech\Drupal\Dotenv\Dotenv; $dotenv = new Dotenv(); $dotenv->setSiteName(basename(__DIR__)); require __DIR__ . '/../default/settings.php';
如果您想为每个站点手动设置数据库名称,可以通过setDatabaseName
方法实现。
<?php use UnleashedTech\Drupal\Dotenv\Dotenv; $dotenv = new Dotenv(); $dotenv->setSiteName(basename(__DIR__)); $dotenv->setDatabaseName('foo'); require __DIR__ . '/../default/settings.php';
使用多站默认站点
如果您需要在多站安装中使用default
站点,您可以通过在default/settings.php
中调用DotEnv::setMultiSiteDefaultSiteAllowed
方法来允许它。
<?php use UnleashedTech\Drupal\Dotenv\Dotenv; $dotenv = $dotenv ?? new Dotenv(); $dotenv->setMultiSiteDefaultSiteAllowed(); $config = $dotenv->getConfig(); $databases = $dotenv->getDatabases(); $settings = $dotenv->getSettings();
站点文件
此包还提供了通过sites.php
配置Drupal的$sites
变量的功能。变量$sites
是从DOMAINS和SITES环境变量中的数据构建的。您需要将以下代码添加到sites.php
中。
<?php use UnleashedTech\Drupal\Dotenv\Dotenv; $dotenv = new Dotenv(); $sites = $dotenv->getSites();
安装总结
这就完成了!现在,Drupal将尝试从环境变量加载基本连接信息。
通过ENV变量配置Drupal
此包将根据检测到的环境提供许多默认设置和配置值。其中一些值可以通过环境变量来设置。
环境变量可以设置在.env
文件中,或者通过修改服务器配置。对于生产环境,理想情况下应通过服务器配置定义环境变量。
多站安装通常需要与默认站点不同的配置。此包首先检查遵循{{ app }}__{{ site }}__{{ var }}
命名约定的变量,然后再回退到{{ var }}
命名约定。
您可以通过命名空间化的环境变量提供特定站点的信息。
- DATABASE_URL
- FILE_PUBLIC_PATH
- FILE_PRIVATE_PATH
- FILE_TEMP_PATH
- CONFIG_SYNC_PATH
- DOMAINS
- MAILGUN_URL
- PUBLIC
- SALT
- SITES
- SOLR_URL
- TRUSTED_HOST_PATTERNS
- 更多配置选项即将推出!
DATABASE_URL
默认数据库连接可以通过DSN进行配置。
DATABASE_URL=driver://user:password@host:port/database
例如:
DATABASE_URL=mysql://foo:bar@localhost:3306/baz
对于多站点安装,不要在DATABASE_URL
变量中指定数据库名称或凭据。
DATABASE_URL=mysql://localhost:3306
对于“earth”Drupal应用程序,具有“default”站点和“antarctica”站点
DATABASE_URL=mysql://localhost:3306 EARTH__DEFAULT__DATABASE_USER=foo EARTH__DEFAULT__DATABASE_PASSWORD=bar EARTH__ANTARCTICA__DATABASE_USER=baz EARTH__ANTARCTICA__DATABASE_PASSWORD=qux
默认的Drupal应用程序名称为“default”。在大多数用例中,您可能需要在默认的settings.php
文件中设置Drupal应用程序名称,如下所示
<?php use UnleashedTech\Drupal\Dotenv\Dotenv; $dotenv = $dotenv ?? new Dotenv(); $dotenv->setAppName('earth'); // ...
可以通过定义一个{{ app }}__{{ site }}__DATABASE_NAME
环境变量来覆盖站点的数据库名称
EARTH__ANTARCTICA__DATABASE_NAME=ant
FILE_PUBLIC_PATH
允许您覆盖默认的$settings['file_public_path']
值
FILE_PUBLIC_PATH=sites/all/files
Drupal期望此路径相对于DRUPAL_ROOT
是相对的。
FILE_PRIVATE_PATH
允许您覆盖默认的$settings['file_private_path']
值
FILE_PRIVATE_PATH=/private
FILE_TEMP_PATH
允许您覆盖默认的$settings['file_temp_path']
值
FILE_TEMP_PATH=/tmp
CONFIG_SYNC_PATH
允许您覆盖默认的$settings['config_sync_path']
值
CONFIG_SYNC_PATH=/sync
DOMAINS
给定环境的所用域名的CSV列表
DOMAINS=foo.example,bar.example,baz.example
MAILGUN_URL
Drupal应使用以通过Mailgun API进行认证的信息。
DSN中的“用户”是API密钥。
美国URL示例
MAILGUN_URL=https://key-1234567890abcdefghijklmnopqrstu@api.mailgun.net
欧洲URL示例
MAILGUN_URL=https://key-1234567890abcdefghijklmnopqrstu@api.eu.mailgun.net
PUBLIC
一个字符串,允许启用/禁用Shield模块的认证功能。
如果为true
,则Shield将不会被启用。
如果为false
,则用户名将是应用程序名称,密码将是站点名称。
注意:请确保在Drupal中勾选了“启用Shield”复选框,并且已提交配置。
SITES
给定环境的Drupal“站点”(例如“子域”)的CSV列表
SITES=foo,bar,baz,qux
SALT
用于“一次性登录链接、取消链接、表单令牌等”的字符串
使用drush eval "var_dump(Drupal\Component\Utility\Crypt::randomBytesBase64(55))"
生成。
SALT=generatedSaltValue
SOLR_URL
默认的Solr连接可以通过DSN进行配置。
SOLR_URL=http://localhost
此软件包假设了几个可以由SOLR_URL
DSN覆盖的内容。上面的示例DSN自动展开为:
SOLR_URL=http://default@localhost:8983#default
在上面的展开示例中,user
是Solr核心的名称,而fragment
是Drupal连接的机器名称。考虑将Solr核心和Drupal Solr服务器机器名称更改为default
,以便使用更短的DSN。
目前支持简化一个Solr核心的环境依赖配置。
TRUSTED_HOST_PATTERNS
可选。指定可信主机模式的CSV列表。
默认情况下,每个模式都会添加起始(^
)和结束($
)字符。
后备功能
如果未设置TRUSTED_HOST_PATTERNS
变量,则此软件包将根据DOMAINS
和SITES
变量的值填充Drupal的trusted_host_patterns
数组。
示例
如果将DOMAINS
设置为foo.example,bar.example
,则Drupal的trusted_host_patterns
设置数组将具有以下值
^foo\.example$
^www\.foo\.example$
^bar\.example$
^www\.bar\.example$
如果将DOMAINS
设置为foo.example
且SITES
设置为bar,baz,qux
,则Drupal的trusted_host_patterns
设置数组将具有以下值
^bar\.foo\.example$
^baz\.foo\.example$
^qux\.foo\.example$
术语
应用程序名称
Drupal应用程序的机器名称(例如:"default" 或 "earth")。
站点名称
Drupal应用程序站点的站点名称(例如:"default" 或 "antarctica")。
配置结论
使用这些少数环境变量,您将以类似Symfony配置的方式快速配置Drupal。预计很快将支持更多常见Drupal功能。请考虑提交一个Pull Request,说明您希望此包支持的功能。