在 Drupal 9 中的实例之间迁移结构和内容

Migrating structure and content between instances in Drupal 9

我是 Drupal 的新手,所以如果我有任何重大误解,请不要太生气 :) 我已经尝试搜索类似的问题,但就是找不到合适的解决方案对于我的情况。

我们目前正在建立一个 Drupal 9 项目,该项目将有一个共享的开发环境和一个生产环境以及一个用于开发的本地实例。我希望有一种方法可以同步这些实例以具有相同的配置、内容类型和可选的内容。

目前,我正在本地开发一个主题,这意味着我已经在 XAMPP 服务器中安装了一个 Drupal 实例。该主题由 git 控制版本,因此可以毫无问题地迁移到其他开发人员。

为了迁移结构和内容(显然保存在数据库中),我在尝试备份整个站点时尝试使用 Backup & Migrate, but there were two issues I was facing: The D9 version is not fully supported yet, so an installation via composer fails with default security settings, and there seems to be an already multiple times reported bug。您可以通过分别备份数据库和文件来解决它,但由于其他问题,这非常不方便(但让我们保持简短......)。

我还尝试导出整个数据库,这实际上是有效的(在 this little fix 之后),但开销对我来说似乎有点高。尤其是当我只想将新的内容类型从开发环境复制到生产环境而没有用户、内容等时。

那么,终于告一段落了,这个案例有什么最佳实践吗?或者我什至应该考虑走另一条路?

提前致谢!

我绝对不建议为此使用备份和迁移 - 那就是 所以 Drupal 7! Drupal 9 拥有更好的工具,这些工具已融入核心!

有很多方法可以跨环境 import/export 配置和内容实体,但我将分享我认为是当前最佳实践的方法。

对于配置,Drupal 9 有一个内置的配置管理系统,可以很容易地跨环境迁移配置。它可以在 Drupal UI 中使用,也可以与 Drush(Drupal 的命令行工具)集成。

本质上,Config 系统将所有 Config 设置导出为标准化的 YAML 文件,可以轻松将其包含在您的 Git 存储库中。这将使设置另一个在其配置设置中相同的 Drupal 环境变得异常容易。

可以找到有关配置管理的更多信息here

对于 Content,Drupal 9 有一个内置的 Migrate API,它有助于从任何数据源迁移到 Drupal 9 环境。这意味着您可以设置允许您跨环境迁移内容实体的迁移。

我只用它来迁移内容(从 Drupal 7 迁移),但我相信也可以用它来迁移配置。

如果您决定使用 Migrate API,您可能(取决于您的内容设置)需要安装 Migrate Tools and Migrate Plus

有关迁移 API 的更多信息,请参见 here