logo

额外区块类型 (EBT) - 全新的布局构建器体验❗

额外区块类型 (EBT) - 样式化、可定制的区块类型:幻灯片、标签页、卡片、手风琴等更多类型。内置背景、DOM Box、JavaScript 插件的设置。立即体验布局构建的未来。

演示 EBT 模块 下载 EBT 模块

❗额外段落类型 (EPT) - 全新的 Paragraphs 体验

额外段落类型 (EPT) - 类似的基于 Paragraph 的模块集合。

演示 EPT 模块 滚动

滚动

9.9. Drupal 中的配置管理。激活、同步配置,从 DEV 到 LIVE 的配置迁移。

17/10/2025, by Ivan

Drupal 中的配置是所有内容类型、字段、配置表单和变量设置的基础。通过配置,我们可以将一个站点的更改转移到另一个站点,同时开发不同的功能而互不干扰。

配置可以上传到 YML 文件,并添加到 Git 仓库中,这样你就可以提交站点设置的更改并将其传输到 Dev 或 Live 环境中。Drupal 中的配置概念类似于 Features 模块的工作方式:

https://www.drupal.org/project/features

只是 Features 并没有与所有模块集成,并且并不总是能够通过 Features 迁移所有站点设置。而 Drupal 中的配置可以处理所有设置并允许将所有内容上传为文件。

安装 Drupal 时,系统会创建一个用于上传配置的文件夹。默认情况下,这是一个位于 sites/default/files 中的长文件夹名称:

config

该文件夹名称是随机生成的,因为该文件夹位于具有 777 访问权限的公共域中。如此长的名称将无法匹配该文件夹的名称来下载配置。事实上,配置中可能包含 API、Solr、SMTP 访问等信息,这些信息必须隐藏。我们可以通过 settings.php 文件指定配置文件夹的路径:

$config_directories['sync'] = 'sites/default/files/config__RPFDnw0- VygzmxgHiXPoXGNKYmjVi3mDZmP5exZX8tRleV9jXG6ZECaPRaxekelYsMCF42HwA/sync';

Sync 文件夹将用于在站点之间传输配置。Drupal 默认将配置存储在数据库中并使用活动配置。你可以将活动配置存储在文件中以及同步文件夹中,但最好将活动配置保留在数据库中,这样 Drupal 的运行速度更快。你可以通过 PhpMyAdmin 或 Adminer 查看配置表:

config

这里存储了配置的序列化数组。

通常,包含配置的同步文件夹会存储在 sites/default/files 之外,因为文件夹不存储在 Git 中。让我们更改配置文件夹的路径:

$config_directories['sync'] = 'config/sync';

现在我们可以将配置添加到 Git 中。你可以手动上传配置:

/admin/config/development/configuration/full/export

配置 -> 配置同步 -> 导出

export

点击导出按钮后,Drupal 将显示一个包含所有配置的压缩包。你现在可以将这些配置添加到 Git 中:

configuration

通过站点手动卸载配置并不总是有效。当你有大量配置时,上传可能会被中断。因此,最好通过 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

syncronize

Drupal 会将当前活动配置与同步配置表中的配置进行比较,如果有差异,你可以在此页面上看到它们。如果点击“导入全部”按钮,你将被提示将同步配置加载到活动配置中,从而填充你的更改。