你在这里

升级Drupal6 到Drupal7 参考手册

主标签

升级 VS 更新

在进行升级之前,需要先弄清楚升级(Upgrade )和更新(Update)这两个不同概念。

  • Drupal 升级- 指的是从一个主要的发布版本迁移到另外一个,比如这里要介绍的从Drupal 6升级到Drupal 7;Drupal只能一级一级地升级,比如Drupal 5要先升级到Drupal 6才能再升级到Drupal 7;
  • Drupal 更新- 一般指的是将Drupal站点更新到当前发布版本的最新的次级版本,比如将Drupal 6.19更新到6.20。在将Drupal 6升级到Drupal 7之前,最好也要将Drupal 6的低级版本更新到最新的Drupal 6.20版本。

整个Drupal升级的过程大概可以分为四大步骤:计划 -> Drupal 升级准备-> 升级过程 -> 升级后测试。切记在升级或更行之前一定要先备份Drupal 的所有文件和数据库,包括核心文件和非核心文件,用户上传文件等等。下面依次介绍的Drupal升级的四大步骤。

Drupal 升级计划

Drupal 官方文档建议你在做升级计划之前先看下Drupal 7.0 的UPGRADE.txt文件,这样会对整个升级过程有个大概的了解。UPGRADE.txt 文件可以通过下载Drupal 7.0 安装包解压后,在根目录下找到。如果暂时不想下载,那么也可以在线阅读这个文档:最新版本的UPGRADE.txt。这个文档除了介绍Drupal 6升级到Drupal 7外,还介绍了Drupal 7.x 次版本的更新(update)。

最好先在测试或开发网站上进行测试没有问题后,记录下Drupal升级的步骤,然后在上线网站上进行同样的升级。

是否应该升级到Drupal 7.x ?

Drupal 7系统需求

首先检查你的系统(服务器/vps/虚拟主机)是否满足以下Drupal 7安装和运行的需求:

  • Web server:Apache 1.3 或 Apache 2.x (mod_rewrite),Microsoft IIS5, IIS 6, or IIS 7
  • 数据库:MySQL 5.0.15 或更高版本,PostgreSQL 8.3或更高版本,SQLite 3.x(开启PHP PDO 数据库扩展
  • PHP版本:PHP 5.2.5或更高版本(PHP 5.2.4需要要安全补丁),PHP's memory_limit 32MB

检查你使用的社区贡献模块(module)和主题(theme)是否有最新的Drupal 7版本或D7兼容版本?是否提供了升级路径?新版本模块是否需要添加依存的模块?在drupal.org相应的模块或主题页面可以看到是否有最新版本的详细信息。若要详细了解查看Drupal 6社区贡献模块和主题如何升级到Drupal 7

检查你使用的模块是否移至到了Drupal 7核心模块,查看Drupal 7新加入核心模块列表

如果是模块开发者可以查看Drupal开发者模块升级指南。如果是自己创建的Drupal主题,那么在升级到Drupal 7之前要先花点时间升级好自定义的Drupal主题文件。请查看英文版Drupal主题升级更新指南或中文版:从Drupal6到Drupal 7主题升级手册。

在了解了这些情况之后,你就可以决定是否要将Drupal 6升级到最新的Drupal 7站点了。

记录模块和主题清单

记录下所有已经安装的模块(包括已安装但未启用的,核心自带和社区贡献的...),这些模块可以在模块管理页面Administer > Structure > Modules,或sites/all/modules 目录找到。跳转到 Administer > Appearance 记录下所有安装的主题,启用的是哪个主题。虽然不提倡修改核心程序或社区贡献模块,但是如果有修改过,也要做个记录。这个清单在升级Drupal的过程中 可能会很有用。

写出Drupal升级计划

使用模块和主题清单计划你的模块或主题升级计划,这个计划必须包含UPGRADE.txt升级指南中的每一个步骤。因为很多过程很容易忘记,好记性不如烂笔头,再说这些升级记录文档对你下次Drupal升级也是很有帮助的。比如升级计划列表中可以考虑写下这些:

  • 不能升级的模块,哪些模块可以替代
  • 哪些模块必须在升级drupal核心之前升级
  • 哪些模块需要特殊的升级步骤
  • 模块的升级顺序
  • 如何测试模块是否升级成功

Drupal 升级准备

  1. 备份:Drupal在升级或更新之前必须要先备份(备份所有的文件和数据库),万一出问题之后,可导入备份进行补救。
  2. Drupal 6.x 更新:因为次版本之间数据库结构可能发生改变,所有在升级Drupal之前先更新:按 照Drupal 6的UPGRADE.txt说明,将Drupal 6.x 更新到最新的Drupal 6 版本(drupal 6.20),如果是Drupal 5.x则相应地要先升级到Drupal 6.x。
  3. 需要提前更新的社区贡献模块:在drupal升级计划中提到有些社区贡献模块可能也需要先更新。
  4. 最后在升级Drupal前测试一下更新后的网站,记录下整个过程中碰到的问题。

Drupal 升级过程

1. 下载Drupal 7

2. 下载drupal 7版本的社区贡献模块。

3. 上传自定义的模块或主题。

4. 使用超级管理员用户(用户ID为1)登录网站后将Drupal网站下线:Administer > Site configuration > Site maintenance > 选择Off-line 然后保存配置。

5. 启用Garland 并作为默认主题:Administer > Site building > Themes

6. 禁用所有Drupal非核心模块(不在"Core-required"或"Core-optional"列表中):Administer > Site building > Modules。因为模块的依赖性,需要重复几次才能禁用所有。
如果确定有些模块或模块数据在Drupal 7.x中都不再使用,将这些模块禁用并卸载,这样可以节省drupal7升级后升级这些无用模块的时间。

7. 通过命令或FTP客户端移除文件:sites/default/default.settings.php

8. 通过命令或FTP客户端删除所有旧的Drupal 6 目录(子目录)或文件。如果您改动了.htaccess 或 robots.txt 等文件,那么在新的文件解压上传之后,需要从备份文件中将它们重新导入。注意:升级时不要以覆盖新的drupal 7核心文件的形式替换旧的drupal 6文件,因为很多d6的文件在新的drupal 7版本中留着是没有用处的,这和更新drupal 次版本有所不同。

9. 如果你卸载了一些模块,可以将它们从sites/*/modules 目录中移除这些模块文件。其他的模块,即使不兼容drupal 7.x,可以先保留下来。

10. 下载最新版本的Drupal 7.x 安装包:drupal 下载。解压后将这些文件复制到drupal目录下,Unix/linux命令:

wget http://drupal.org/files/projects/drupal-x.y.tar.gz
tar -zxvf drupal-x.y.tar.gz

解压后为包含所有drupal 文件和目录的drupal-x.y/文件夹,将这些文件copy到Drupal 安装目录下:

cp -R drupal-x.y/* drupal-x.y/.htaccess /path/to/your/installation

解压后使用FTP客户端上传也一样。

11. 重新导入任何修改过的文件,如.htaccess 或 robots.txt。

12. 设置settings.php文件为可写:sites/default/settings.php,drupal升级程序就能将settings.php替换成drupal 7.x的格式。

13. 运行升级程序:访问 http://www.example.com/update.php (注 意不是INSTALL.PHP)。将example替换自己的域名。如果不能访问update.php:编辑settings.php文件, 将$update_free_access = FALSE; 改为$update_free_access = TRUE;切记安装完毕记得改回FALSE。

14. Drupal 核心安装完毕之后记得再备份一次数据库,这时Drupal 7及数据库升级完成,但是社区模块及数据库还没有升级。

15. 替换或升级非核心模块和主题(社区贡献 或 自定义),请看第2步的详细介绍链接。如果修改过核心代码,并且非得修改Drupal 7 核心代码或社区模块的话,在这时候修改测试吧,不过这只会给每次的升级带来更多的困难。然后:

重新启用这些非核心模块 -> 再次访问运行update.php程序升级模块数据库到d 7 -> 激活社区贡献或自定义主题。

Drupal 7升级后测试

检查状态是否正常:Administration > Reports > Status report。确保升级过程中第13步提到的$update_free_access 重新设置为了FALSE。测试的项目可能包括如下(包含不限于):

  • 随机检查是否存在损坏的内容
  • 检查状态报告,确保所有必需的模块或子模块都已激活
  • 检查菜单和导航是否有问题
  • 检查各个页面的权限,看模块是否改变或引入了权限。

Drupal 升级测试完毕,一切OK -> 网站上线:Administration > Configuration > Development > Maintenance mode 将“Put site into maintenance mode” 取消并保存配置。

Drupal 7 升级结束,现在你可以到管理后台体验各种新功能了。后台功能介绍:Drupal 7 administration

论坛: 

猜你喜欢

过程其实不难,但是要注意几点:
环境要求,升级前注意7环境要求,满足了才能升级。
数据备份,包括原版本下的数据库和文件,以防万一。
xDebug,记得升级前修改php.ini把这个关掉,否则升级过程会各种报错……

其他的基本上都没啥问题,按照帖子里操作就可以了………

欢迎来我的个人站(幽灵古堡)和我交流
天下Drupaler是一家~~

看来幽灵经验很丰富啊,我有一个小问题想请教一下,nodewords模块在7.x更名为metatag,但是官方还没有给出一个确定的升级路径,你有没有碰到过升级此模块的问题呢,谢谢!

Drupal China http://drupalchina.cn

经验丰富不敢当...就是最近打算给我自己的博客升级到D7,昨天在家里搞了半天,刚把核心升级好,就是因为遇到了xDebug那问题,开始报错进行不下去,查错误查了半天,后来无意间在官网看到有人说要关掉xDebug,才成功的......

其他模块我还没升级呢......

你说的这个模块我没用过......

欢迎来我的个人站(幽灵古堡)和我交流
天下Drupaler是一家~~

还有就是,我发现升级之后,数据库中的表,增加了近40个......是否需要进行一下优化呢?

升级前,D6算上第三方模块,91个表

升级后,130个......

我看了下全新的D7,77个表......

是否有哪些是升级过程临时增加的可以删除呢???

欢迎来我的个人站(幽灵古堡)和我交流
天下Drupaler是一家~~