本手册参考 Drupal 7 发行包里面的 UPGRADE.txt 文档及 Drupal 在线文档,详解 Drupal 6 到 Drupal 7 的升级过程。
在进行网站升级之前,还有一大堆事情需要先做。在升级前了解已有网站如何建设是非常重要的。在真正升级站点之前在开发环境先进行测试是最好不过的了。
找出网站上安装的模块(包括那些已安装,但之后被禁用的模块)
找出网站上安装和使用的主题
将这些模块和主题列成一张清单,这样有利于升级时进行核对,这份清单还为升级过程中禁用和重新启用模块带来方便。
当对网站中的模块进行完调查之后,能够知道哪些模块实际上并未使用。出于安全性和性能的考虑,我们总是推荐将未使用的模块卸载并移除。
在升级前调查关于模块的情况:
如果网站使用了第三方的主题,就需要研究主题是否能升级到 Drupal 7
如果网站的主题是自定义开发,或者修改自第三方的主题,则需要考虑到主题升级将会花上一些时间,可参考《Converting 6.x themes to 7.x》
使用 Drupal 的原则之一就是“绝对不要修改内核”,然而有时确实更改了内核的一些文件和模块。对于这些修改,进行操作的人应该承担起进行标注和升级的责任。对于第三方模块的修改也是如此。
基于之前对于网站中模块和主题的调查创建网站升级规划文档,文档应包含《从 Drupal 6 升级到 Drupal 7 步骤详解》中的所有步骤。因为升级过程中有许多事情很可能会被遗漏,创建一份核对清单,便于自己查看升级完成的项目和跟踪进度,而且能够节省很多时间。将升级过程中遇到的问题做一些记录,这对以后再进行升级操作是非常宝贵的资源。
以下内容可以考虑加入到文档中:
参考文档:Make an Upgrade Plan
对 Drupal 版本进行升级之前,建议先检查第三方代码与自定义代码与新版本的兼容性,在完成这些检查并了解新旧版本的可升级部分之后,便可通过以下步骤开始升级了。
执行完以上步骤,便完成了 Drupal 6 到 Drupal 7 的升级操作,有关 Drupal 7 的管理功能介绍,可参考 http://drupal.org/getting-started/7/admin
到目前为止,以上步骤只完成了 Drupal 核心文件从 6.x 到 7.x 的升级,对于个别模块的升级,请单独参考模块对应的 7.x 版本中的 UPGRADE.txt 文件,并根据模块作者的说明进行升级。
参考资料:
本文档记录 Drupal 6 升级到 Drupal 7 的一些注意事项和处理技巧,从而避免在升级过程中遇到一些常见问题。
注意事项:
如果没有执行以上操作,常常会出现找到不指定函数而导致网站无法打开的情况,因此在执行升级前,请确保禁用了所有的主题和模块。
如果升级之后网站不能打开,查看 Web 服务器日志,一般能够定位到出问题的原因。
技巧:在升级之后发现有模块和主题没有禁用,可以通过修改 Drupal 数据库中 system 表中 status 列的值来设置主题或模块的状态(并不推荐这个办法,但这样做确实能解决一些问题。大家最好还是在进行升级前确认禁用了所有第三方和自定义的模块和主题)
如果网站数据较多,升级过程会变得十分漫长,可能会长达几个小时,因此在进行数据库更新之前,可以:
说明:cache 开头的数据库表都是缓存数据,search 开头的数据库表保存是的搜索相关的索引数据,尤其是 search_index 表中的数据量巨大(几百万、千万、上亿)。这些表中的数据都是可以自动再生成的内容,因此清空这些表对于减少数据库体积十分有效果。
注意:有关清空所有 search 开头数据库表的作法并不知道有没有什么副作用,有顾虑的朋友请进行一些研究。(cache 开头的表可以安全清空)。
技巧:对于中大型网站,建议使用 drush 来执行数据库更新操作(drush updatedb),因为对于数据库的升级可能长达几个小时,通过访问 update.php 来执行升级操作可能出现PHP脚本执行超时和AJAX的错误。
如果您在升级过程中遇到其它一些常见问题,欢迎分享您的经验或者提问 :)
执行 Drupal 升级进行之前,请务必先备份好所有的文件和数据库。因为,如果升级过程中出现任何问题,除了使用备份,没有其它更好的办法让你的站点恢复原状。并且,如果在升级过过程中遇到任何错误,都不应该再执行任何更进一步的操作。
备份数据库:
备份 Drupal 数据库,可根据用户的实际情况使用命令行或者 PhpMyAdmin 进行备份。因为 PHP 脚本有最大执行时间限制,因此在使用PhpMyAdmin备份较大的数据库文件时可能会因超时而导致备份失败。MySQLDumper 和 Bigdump 是两个可选的数据库备份工具。
备份文件
升级 Drupal 前需要备份的文件包核心文件与非核心文件,核心文件即为 Drupal 发行包中包含的文件,非核心文件通常是指第三方模块、第三方主题或其它用户生成的文件,默认情况下,这些非核心文件都位于Drupal安装目录的 sites 目录下。
所以升级之前,应该备份 Drupal 数据库与 Drupal 安装目录下的所有文件,以确保升级出错后可以使用这些备份来还原站点。
参考文档:
本文档提供了一份模块清单,这些模块有 Drupal 6 版本,在升级到 Drupal 7 之后,这些模块的功能已经部分或已完全被整合到 D7 的核心了。
以个列表还在不断更新,因此并非最终版本,最新版本的原文可以查看《Drupal 6 contributed modules that are in Drupal 7 core》
以下这些模块的功能已经包含在 Drupal 7 的核心中,它们的升级不涉及数据迁移。当网站从 D6 升级到 D7 时,可以将这些模块从模块目录下移除。升级完成后,可能需要对这些模块进行重新配置以便恢复 D6 时的功能。(对于包含复杂配置的模块,我们也希望模块维护人员提供自动化升级能力)
以下模块的部分功能被集成到 D7 核心,但其自身仍然具备一些额外的功能,如果你没有用到这些额外的功能,则可以卸载这些模块。
以下这些模块在站点升级时需要被保留,首先需要完成《从 Drupal 6 升级到 Drupal 7 步骤详解》中的所有步骤,然后安装一些处理数据迁移的辅助模块。