1. 论坛系统升级为Xenforo,欢迎大家测试!
    排除公告

分享Drupal 从5.2升级至5.6版本的步骤

本帖由 laogui2008-02-07 发布。版面名称:源码讨论

  1. laogui

    laogui Administrator
    管理成员

    注册:
    2005-08-30
    帖子:
    15,216
    赞:
    35
    网站飞行模拟游戏建设起来快1年时间了,最初建站时采用的Drupal版本为5.2稳定版,到今天共有5.3,5.4,5.5更新版本,一直没升级的原因是怕升级失败。今天终于决定升级,在王菲的歌声陪伴下,进展的很顺利。期间由于空间在美国,浏览器出现不能顺利链接到空间上,表现为执行的进度受阻,重新在一个窗口中执行第二次才顺利,这算是一个小的瑕疵。
    现把升级的步骤简略备忘如下:【我在升级的时候是完全参考Drupal解压档中的UPGADE.txt文档来做的。】
    升级前请确认你的服务器上的PHP版本不低于4.3.5版本,否则不符合升级到Drupal 5.6版本的条件。
    1 、备份drupal数据库和目录
    这一点其实对经营用的网站很重要,基于升级的失败可能性很小,一般不需要备份旧版本的程序。而是需要备份用户自己增加的文件。数据库的备份我自己没做,因为cpanel平台的主机自己会自动定期备份一份。
    我自己备份的一个文件就是网站的配置文件,单一网站的配置文件路径为 site ->default->settings.php。用ftp下载到本地,并且压缩一下,以防误删除。
    多网站的配置文件位置如下:
    sites/default/settings.php
    sites/example.com/settings.php
    sites/sub.example.com/settings.php
    sites/sub.example.com.path/settings.php
    2、以用户Id为1的用户名登录到网站
    一般建站的管理员用户名会取为webmaster,admin,super,或者root之类的,总之管理员自己要清楚的记得这个登录名,因为升级脚本文件update.php只能被用户id为1的用户执行。
    切记:在完成最后的第10步之前不要关闭浏览器。
    补充说明:
    尤其是你在删除旧版本文件,上传新版本程序的操作期间,可能要花上3-5分钟时间,一般会由于时间较长而超时,所以等你完成有关步骤回到浏览器操作的时候,通常是无法操作的。这里提供离线模式下的登录方式:使用类似 http://www.domain.com/?q=user 的链接即可访问登录页面,用userid=1的用户名登录。
    3、进入站点维护,设定站点为离线模式
    4、禁用自己增加的额外模块,并选择核心主题风格(Bluemarine or Garland)
    如果自己增加的模块比较多,有的启用有的没启用,建议记录在纸上那些你没启用但是模块程序文件又没有删除的模块。禁用后到站点创建中的主题里设定主题为默认的garland主题。
    5、删除旧版本的程序文件和相关文件目录
    在这个步骤就我的网站来说只删除了
    includes
    misc
    modules,建站时自己的模块建议放在sites/all/modules/目录下,这时的删除就不用区分哪些是自己增加的模块了
    profiles
    scripts
    对于sites和theme目录,我采取的是覆盖方式,没有删除原先的文件。由于是单站,所以在上传的时候也就是一个settings.php文件需要上传,通常没必要传这个文件。
    我的方法是用备份文件的 $db_url = 'mysql://username:password@localhost/databasename';替换了新版文件中的对应行。
    6、解压新的drupal程序文件,传到安装目录
    把你删除的drupal程序目录对应的传上去就行了。
    7、复制备份的文件到对应的目录下
    .htaccess文件和robots.txt文件我没有删除也没有替换。第一个文件中我启用了301转向,全部使用www.domain.com 格式访问网站。robots.txt文件中禁用了部分文件夹,这些文件夹要么是对用户无意义辅助文件信息,要么就是其中的文件不希望被搜索引擎抓取。
    8、检查新的配置文件是正确的
    在settings.php 配置文件中有数据库,数据库用户,和对应的密码。
    9、重新安装自己增加的模块
    确保自己增加的模块能够和最新的稳定版兼容,对于那些使用模块很多的用户建议这个工作提前检查一下。我自己的模块很少,都和5.x版本兼容。
    10、执行升级脚本update.php
    在浏览器地址栏输入http://www.example.com/update.php格式...te脚本,它会自己检测哪些模块有可用的升级,一般情况下只要点击显示出来的update按钮。
    接着会显示升级正在执行,应该很快就完成。通常最后会返回一个错误,格式类似如下:
    "在 /home/fsgameor/public_html/includes/database.mysql.inc 的第 172 行:Duplicate key name 'created' query: ALTER TABLE users ADD KEY created (created)。" 这个错误被记录在网站的日志中。
    对于这个错误我浏览了官网的论坛,有的人说是其他模块的一个bug,这个错误不影响升级的成功,属于误报;升级后使用方面未出现任何异常。
    根据UPGRADE.txt文档,如果遇到不能执行update.php文件的情况,请用文字编辑器打开这个文件,在靠近最上面找到一行 $access_check = TRUE; 将它改为 $access_check = FALSE;
    在完成脚本运行之后,你需要把这行改回原来的格式 $access_check = TRUE;
    11、最后要返回到在线模式
    到网站维护中把网站设定为在线模式,并到主题模块中选择自己原来的主题。一般来说应该对主题没有影响。
    如果一切看起来没啥变化说明升级顺利。
    查看更新后的drupal版本,路径为“管理 ->日志->状态报告”,最上面一行格式 "Drupal ............ 5.6",即表明当前版本为5.6.
    最后由于5.6版本不支持 PHP 的 directive register_global on设定,你可以在“管理 ->日志->状态报告”中看到php项因为register_global on 而出现的告警信息。请到你的空间目录下找到php.ini,搜索register_global ,如果发现右侧的值为 On的话,改为Off即可。这样有利于提高php代码执行的安全性。
    补充建议:
    1.建议最好在网速快的时候,方式脚本执行的时候返回结果的显示不顺利,有时候浏览器会呈假死状态。
    2.一定要备份好配置文件,说不定你什么时候就忘记了用户名或者密码。建议备份在网站空间下受权限保护的特定文件夹下。
    3.定期检查自己增加的对应模块是否有安全更新。
    原文地址: http://www.fsgame.org/node/1200
    备注:
    这篇文章在经Drupal 中文 推荐至首页后,我对其中的部分语句和错字进行了修正,内容无任何重要变化;主要增加了离线模式下的登录方法。


    来源