准备网站以升级到 Drupal 8
在将 Drupal 6 或 Drupal 7 站点升级到 Drupal 8 之前,建议执行一些步骤,以确保过程顺利并获得理想的结果。
与之前的 Drupal 核心主要升级不同,Drupal 8 的升级过程不会在原站点上就地更新。相反,配置和内容对象会从原站点迁移到一个全新的 Drupal 8 站点。请参阅 从 Drupal 6 或 7 升级到 Drupal 8 页面,了解整个过程和主要区别。
虽然升级不会更改原始站点,但仍建议不要在运行中的生产站点上直接执行升级。建议使用生产站点的备份,以确保数据库一致性(迁移执行期间数据库不会写入数据),并防止对生产站点性能造成影响。
原站点清单模块
在开始升级到 Drupal 8 之前,了解您的 Drupal 6 或 Drupal 7 站点是如何构建的非常重要。
确定原 Drupal 6/7 站点启用的核心模块和附加模块。您可以在管理后台的模块页面(“管理” > “构建站点” > “模块”)查看启用的模块,或者使用“可用更新”页面(admin/reports/updates)。
记录原站点启用的完整模块列表,并将其作为升级规划的检查清单。对于每个模块,请回答以下问题:
- 我在 Drupal 8 中是否还需要此模块?
- 该模块是否已并入 Drupal 8 核心?例如,Views 现在已成为 Drupal 8 核心的一部分。
- 该模块是否有 Drupal 8 版本?如果没有,我是否仍然需要它?是否有其他模块可以替代实现相同功能?
- 注意:Drupal 6/7 模块不一定与 Drupal 8 模块一一对应。例如,Drupal 6 和 7 的 Block 模块在 Drupal 8 中被拆分为 Block 和 Custom Block 模块。
Drupal 8 升级界面会显示哪些模块可以自动升级,哪些不行。请参阅 使用网页浏览器升级 页面,了解更多关于此分析的信息。您还可以尝试 Upgrade Check 模块,它使用外部服务为您提供升级时间的预估。
检查已知问题页面
从 Drupal 6/7 升级到 Drupal 8 的路径仍处于实验阶段,一些核心模块可能尚未具备完整的升级路径。在准备升级时,建议阅读 已知问题 页面。
更新您的 Drupal 6/7 站点以使用最新版本的核心和附加模块
升级过程要求您先将旧站点更新到最新的小版本。例如,如果您的站点运行在 Drupal 6.35 核心上,则需要先更新到 6.38。
如果您打算自动迁移来自附加模块的配置或内容,必须使用它们的最新版本。
通过访问 Drupal 6/7 站点的“可用更新”页面(admin/reports/updates),可以查看是否有可用更新。
从 Drupal 6/7 升级到 Drupal 8 的前提条件
- 一个新的 Drupal 8 安装,启用核心模块 “Migrate” 和 “Migrate Drupal”。如果您使用网页界面升级,还需要启用核心模块 “Migrate Drupal UI”。
- 对于从 Drupal 6 和 7 国际化模块(i18n)进行翻译迁移,Drupal 8 站点必须启用多语言模块 Migrate Drupal (migrate_drupal_multilingual)。
- Drupal 8 站点所在主机需要能访问 Drupal 6 或 7 的数据库。
- 需要访问原站点的文件。
- 如果只使用公共文件,它们可通过站点地址访问。
- 如果需要迁移私有文件,文件目录必须能被新的 Drupal 8 站点直接访问,并且您需要在 settings.php 中配置 Drupal 8 的 file_private_path 参数后再运行升级。
- 如果您使用 Drush 升级,还需要 Drush 8 或 Drush 9,以及三个附加模块。
- Drush 的安装说明见上述页面。
- 安装 Migrate Tools
- 安装 Migrate Upgrade
- 安装 Migrate Plus
- 更多信息请参阅 升级模块列表
- 重要:特别注意模块版本与所用 Drupal 8 核心版本的兼容性。在上述三个模块的项目页面中都有明确的版本使用说明。
在 Drupal 8 中启用必要的核心和附加模块
迁移过程不会自动在目标 Drupal 8 站点上启用模块。只有源站点和目标站点都启用的模块,其相关配置和内容才会被迁移。因此,必须先在 Drupal 8 站点中启用所有需要迁移的核心和附加模块。
几个示例:
- 如果源 Drupal 7 站点启用了 Addressfield 模块,并且您希望迁移地址数据,那么必须在 Drupal 8 站点中启用 Address 模块,然后再启动升级。这是 Drupal 7 和 Drupal 8 模块不一一对应的一个例子。不过,Drupal 8 Address 模块提供了迁移插件,可以迁移 Drupal 7 Addressfield 的数据。
- 如果源站点启用了 Drupal 7 核心论坛模块,则必须在 Drupal 8 站点中启用核心论坛模块,然后再启动升级。
不要配置 Drupal 8 站点
请注意,升级过程会覆盖 Drupal 8 站点上的配置,因此在升级完成之前,请不要对 Drupal 8 站点进行任何配置。这意味着您不必在升级前手动创建所有内容类型和字段。Migrate 模块会在迁移过程中自动创建它们。事实上,最常见的做法是使用最小化安装配置文件安装 Drupal 8,因为标准配置文件包含一些您可能不需要的配置。这与 Drupal 7 及更早版本中的 Migrate 工作方式不同,当时必须在运行迁移前准备好所有内容类型和字段。
不要在 Drupal 8 站点中创建内容
升级过程会保持原站点的唯一标识符。例如,如果原站点中的某个用户帐户 ID 是 2(对应 URI /user/2),那么升级后该用户仍会在 Drupal 8 站点的 /user/2 路径下。如果您在 Drupal 8 站点中创建了除默认管理员以外的新用户,那么它会获得 ID 2 —— 这会在升级时被源站点的用户 ID 2 覆盖。此规则同样适用于用户帐户、分类术语、节点内容以及几乎所有其他带有数字 ID 的内容。
为了避免数据丢失,请不要在 Drupal 8 站点中手动创建任何内容,直到所有源内容完全导入为止。
执行升级
您有两种方式执行迁移: