Lugir 2017-02-21 12:49
从 Drupal 6, Drupal 7 升级到 Drupal 8,官方有如下说明:
因为 Drupal 8 内核包含了三个专门用于迁移的模块,所以你能够简单、自动地对现有 Drupal 6,Drupal 7 站点进行升级。
(原文:You can easily, and automatically upgrade your existing D6 or D7 site, because Drupal 8 core includes three migration modules designed to accomplish that task.)
—— Brief overview, and history of automated upgrading to Drupal 8
实际上,官方所指的升级与大家所想的升级完全不是一回事。Drupal 官方所指的大版本升级,充其量只能算是部分数据的迁移,远远未达到网站升级的层面。
Drupal 升级的真相
有关 Drupal 升级的真相,大概可以归纳为以下几点:
- 所谓的升级是假升级,只是部分数据的迁移,模块改用新版本,主题需要重做。
- 迁移的数据有限,官方迁移模块只负责内核模块的数据迁移
- 第三方模块的数据迁移需要额外的迁移模块支持,除了几个热门模块外,大部分模块并没有提供升级路径(即升级之后配置无法迁移,或者需要手动重新设置)
- 主题需要按照 Twig 引擎重新开发制作(老网站上的主题文件稍微能减少一点工作量)
因此对于是否升级到 Drupal 8 的话题,准确地来讲应该是指是否需要用 Drupal 8 重做网站。
- 已完成的网站。对于已完成开发的网站,除非后续还有很长时间的迭代开发需求,不然用 Drupal 8 重做一个一样的网站必要性不大。
- 正需要改版的网站。如果旧网站中需要迁移的数据量并不大,而网站又正需改版,那么直接使用 Drupal 8 制作新网站,也比数据迁移的方式来得灵活。
- 长期运营、迭代开发的网站。如果有大量数据需要迁移,后续也还需要继续进行较长时间开发的项目,使用官方提供的升级教程完成部分数据的迁移,倒还是能减少一定的工作量。
Drupal 8 使用 Symfony 2 完全重构内核,使用 Twig 作为新模板引擎,整个开发方式都有巨大的变化,在这个基础上想要理想的升级本来就不太可能。再加上 Drupal 一贯主张使用新技术,大版本之间原本便不考虑向前兼容,难以平滑升级,在这种情况下 Drupal 8 能够提供内核数据的迁移和迁移接口也算是一种小幸运了。
这么说,也是希望大家了解到,Drupal 大版本升级并不是平时我们所理解的升级——覆盖安装新软件之后就保留原来的数据然后可以使用各种新的功能特性——更多情况下是完成数据迁移后,将网站再重新制作一次。
Drupal 8 升级方式的改进
在以往的大版本升级中(如 Drupal 6 升级到 Drupal 7),需要使用 Drupal 7 的源码覆盖/替换 Drupal 6 的源码,然后再继续执行升级。一旦升级失败,回滚困难,需要通过备份重建老网站,再进行升级尝试。
升级到 Drupal 8 时不再需要覆盖原网站,只需要使用老网站的相关信息,从老网站导入数据和文件,即使失败了,原网站依然不受影响,可以很快进行下一次尝试。
Drupal 8 升级
且不说 Drupal 的大版本升级是不是真正意义上的升级,但确实有 Drupal 6, 7 网站有将数据迁移到 Drupal 8 网站上的需求,对此,将大版本升级到 Drupal 8,以及 Drupal 8 小版本间的更新,可以参考以下教程: