9.9. Drupal 中的配置管理。激活、同步配置,从 DEV 到 LIVE 的配置迁移。
Drupal 中的配置是所有内容类型、字段、配置表单和变量设置的基础。通过配置,我们可以将一个站点的更改转移到另一个站点,同时开发不同的功能而互不干扰。
配置可以上传到 YML 文件,并添加到 Git 仓库中,这样你就可以提交站点设置的更改并将其传输到 Dev 或 Live 环境中。Drupal 中的配置概念类似于 Features 模块的工作方式:
https://www.drupal.org/project/features
只是 Features 并没有与所有模块集成,并且并不总是能够通过 Features 迁移所有站点设置。而 Drupal 中的配置可以处理所有设置并允许将所有内容上传为文件。
安装 Drupal 时,系统会创建一个用于上传配置的文件夹。默认情况下,这是一个位于 sites/default/files 中的长文件夹名称:
该文件夹名称是随机生成的,因为该文件夹位于具有 777 访问权限的公共域中。如此长的名称将无法匹配该文件夹的名称来下载配置。事实上,配置中可能包含 API、Solr、SMTP 访问等信息,这些信息必须隐藏。我们可以通过 settings.php 文件指定配置文件夹的路径:
$config_directories['sync'] = 'sites/default/files/config__RPFDnw0- VygzmxgHiXPoXGNKYmjVi3mDZmP5exZX8tRleV9jXG6ZECaPRaxekelYsMCF42HwA/sync';
Sync 文件夹将用于在站点之间传输配置。Drupal 默认将配置存储在数据库中并使用活动配置。你可以将活动配置存储在文件中以及同步文件夹中,但最好将活动配置保留在数据库中,这样 Drupal 的运行速度更快。你可以通过 PhpMyAdmin 或 Adminer 查看配置表:
这里存储了配置的序列化数组。
通常,包含配置的同步文件夹会存储在 sites/default/files 之外,因为文件夹不存储在 Git 中。让我们更改配置文件夹的路径:
$config_directories['sync'] = 'config/sync';
现在我们可以将配置添加到 Git 中。你可以手动上传配置:
/admin/config/development/configuration/full/export
配置 -> 配置同步 -> 导出
点击导出按钮后,Drupal 将显示一个包含所有配置的压缩包。你现在可以将这些配置添加到 Git 中:
通过站点手动卸载配置并不总是有效。当你有大量配置时,上传可能会被中断。因此,最好通过 drush 上传:
drush config-export
或者通过 Drupal Console:
drupal config:export
导入也可以通过 drush 完成:
drush config-import
以及 Drupal Console:
drupal config:import
将配置保存在站点根目录并不是一个好主意。最好通过更改 settings.php,将配置存储在站点外部的文件夹中:
$config_directories['sync'] = '../config/sync';
在学习 Drupal 时,你可以将配置文件夹保留在站点根目录中。
现在你已上传配置并将其添加到 Git 中,你可以将其上传到另一个站点。让我们在站点上更改任何设置,例如站点名称:
/admin/config/system/site-information
然后进入配置同步页面:
/admin/config/development/configuration
Drupal 会将当前活动配置与同步配置表中的配置进行比较,如果有差异,你可以在此页面上看到它们。如果点击“导入全部”按钮,你将被提示将同步配置加载到活动配置中,从而填充你的更改。