Drupal8升级到Drupal9的正确姿势

1,610 阅读2分钟

Drupal8.8开始,内核已经涵盖了诸如jsonAPI、media以及layout buider等模块。尽管Drupal9刚刚发布,但Drupal9是从Drupal8平滑升级的,所以Drupal8的功能在Drupal9基本都可以直接使用。当然Drupal9在技术上肯定是作了很大的优化,不用担心Drupal8升级到Drupal9会出现很多问题。而且,Drupal9对Drupal8的主题兼容性也很好。

本文介绍如何顺利地从Drupal8升级到Drupal9,希望对大家有所帮助。

必要条件

Drupal9的环境要求

  • 在Apache上运行Drupal 9,至少需要2.4.7版。
  • 至少需要PHP7.3。PHP 7.4也受支持,但不是必需的。
  • 如果使用MySQL则至少需要5.7.8版。
  • 如果使用MariaDB,则至少需要10.2.7版本。
  • 如果使用DDEV,DDEV可以满足上述要求并支持Composer。

使用Composer管理依赖

  • 确保本地开发环境可以正常使用Composer。
  • 确保Composer可以正确使用镜像。

Drupal8的三种构建方式

  • 1.最常见的是在官网下载源码。
  • 2.其次是用composer require drupal/core-dev命令。
  • 3.现在用composer require drupal/core-recommended命令。

三种方式都支持Composer。 第一种方式composer.json及相关文件放在网站的根目录中。 第二、三种方式,在网站的根目录外面又包裹一层目录,将网站根目录放在上层目录的子目录web之下,composer.json及相关文件放在上层目录中。

升级方法

  • 1.将网站根目录下的/sites/defalut/*settings.php*services.yml置于可写状态。

  • 2.对于上述的第一、三种构建方式,执行composer require drupal/core-recommended:^9.0.0 drupal/core-composer-scaffold:^9.0.0 --update-with-dependencies --no-update命令;对于上述第二种构建方式,执行composer require drupal/core-dev:^9.0.0 --dev --update-with-dependencies --no-update命令。

注意:针对上述第一种方式,在网站的根目录执行Composer的命令;对于第二、三种方式,在网站根目录的上级目录执行Composer的命令。实际上是自动修改composer.json中的依赖参数。

  • 3.指定需要更新版本的别名,进行实际更新。如,从8.9.0更新到9.0.0,可以执行composer require "drupal/core:9.0.0 as 8.9.0" --no-update && composer update命令(确保将9.0.0和8.9.0替换为安装中使用的任何版本)。

  • 4.完成更新后,将网站根目录下的/sites/defalut/*settings.php*services.yml置于只读状态。