MediaWiki程序升级

1.MediaWiki的发布说明
MediaWiki 现在使用“连续积分”的开发模型,并在每个季度发布一个快照版本。最新的开发 程序一直是“ready torun”(准备好可以使用),因为每个发布的程序已经预先在维基百科上运 行一段时间了。每个版本分支将从首次发布开始在未来一年内持续接受安全更新, 但一些 不重要的错误修正和功能开发将指出现在主干开发版本,并出现在下一个季度的发布中。

这里始终推荐大家尽可能使用最新版本的MediaWiki,因为从更新列表中可以看出,每一个 版本的发布都包含诸多的错误修正和功能改善,一般不会存在越升级运行越不好的情况。况 且跨越主干版本的升级一般也不会像顺次升级来得顺畅。

2.系统要求 MediaWiki升级的系统要求和其安装要求是一样的,既然之前已经在运行MediaWiki了,那就 是能进行升级了。但应注意自从 MediaWiki1.7开始必须要有PHP 5。如果你正在使用低于此 版本的PHP,你将不能升级到1.7及以后的版本,这样你应该使用MediaWiki1.6.10。

3.阅读发布声明(Release Notes)
在你所下载的安装包内,会有一个RELEASE-NOTES文件,在进行升级前,你应该大致浏览 一下此文件的内容。一般情况下,该文件会列出从上一个版本 以来的变化,这些变化包括 配置改变、新功能、错误修正、语法解析器变化、API变化、语言文件更新等。另外,文件
也会说明与其它程序的兼容性(系统要 求)、升级注意事项以及可能发生的问题、警告信息、 在线文档地址、邮件列表地址、IRC帮助地址。

需要注意的是RELEASE-NOTES文件中的Upgrading一节的内容,该部分内容会列出升级应 该注意的事项和可能发生的问题,如对于MediaWiki 1.12,该部分内容为:
1.12相对于1.11在数据库方面有几处改变,如果不升级数据库架构,则将不能良好运行。 如果从1.7之前的版本升级,在升级后应该运行refreshLinks.php以确保新的数据库字段在升
级后被填充上数值。

如果从1.11之前的版本升级,并且你正将另外一个wiki作为共享资源库来使用,请确保该wiki
同样也进行升级。否则,由于数据库结构的变化而可能发生错误。

如果你是从MediaWiki 1.4.x或更早版本进行升级,由于数据库发生了较大的改动,升级出错 的可能性会更大一些。记住在升级前一定要备份你的数据库!

4.备份文件和数据库
尽管升级程序都很强大,并且会经过很好的测试,但是事情仍存在变糟的可能。在升级数据 库结构之前,需要对wiki做一个全面的备份,这些包括如下的数据库和文件:
数据库中的wiki内容。除了备份成SQL数据库外,备份成XML也是个不错的选择。
text dump: mysqldump --all-databases > file.txt
xml dump: mysqldump --all-databases --xml > file.xml 图像和其他媒体文件(它们都在images目录,因此应该备份此目录) 配置文件,如LocalSettings.php和AdminSettings.php(可能你还没有使用此文件,那么就不 用备份了)
MediaWiki程序文件,包括所有的皮肤和扩展,尤其是你曾经做过修改的文件。

5.解压和上传MediaWiki 解压和上传的顺序并不是绝对的,如果你只能通过ftp访问你的虚拟主机,那就只能先解压 MediaWiki,再一个个缓慢地上传到网站了。如果你的网站支持CPanel、SSH或其它服务器 端解压工具,那你就可以先上传压缩包,然后在服务器端解压,这样会快很多的。

无论是那种方法,都先不要急着实施,还是先把安装包稍微修改一下为好。解压安装包后, 可以先把其中的images和extensions两个文件夹删除 了,因为升级包中并没有对这两个文件 夹的更新,即服务器端的这两个文件夹通常是不需要改动的。如果你的wiki只打算支持中文, 你可以将 “languages\messages” 文件夹下除了 MessagesEn.php 、 MessagesEnRTL.php 、
MessagesZh*.php (注意这个 * 号 表 示 与 该 文 件 名 匹 配 的 多 个 文 件 ) 文 件 以 及 “languages\classes” 文 件 夹 下 除 了 LanguageZh.php 、 LanguageZh.deps.php 、 LanguageZh_hans.php文件之外的其它在这两个文件夹下的文件 全部删除,这样你需要上传 的文件包就大大减小了。另外如果你需要像以前一样对MediaWiki程序进行更改,你也可以 先在自己的电脑上改后再一块传到服 务器上,这样免得以后再一个个传着麻烦。

准备就绪后,就把你更改后的文件上传到服务器上并覆盖原来的文件(除了images 和
extensions文件夹)。如前所述,你可以使用各种方式更新文件,这里就不做赘述了。
6.运行升级脚本
检查一下你以前是否已经在wiki 根目录下创建过AdminSettings.php文件,如果没有,将
MediaWiki安装包下的 AdminSettings.sample文件改为AdminSettings.php,并在文件中相应位 置填写wiki数据库用户名和密码。

运行升级脚本有多种方法,最好是在命令行下运行升级脚本,但这要求你能直接操作服务器 或通过SSH远程访问服务器。如果你的虚拟主机支持SSH(Secure Shell),这里给大家推荐 一个SSH访问程序PuTTY(http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html)。 下载后运行该程序,参照下图填写SSH访问的相关信息,之后按Save按钮以便下次运行此程 序时不用再次填写,然后双击此Session名称(图中反白显 示的mysite),这样就会弹出一个 命令窗口提示你登录。依次输入用户名和密码进行登陆(注意输密码时什么都不显示,并不 显示*号)。

登陆之后,你就可以使用linux命令操作你的服务器了。不会使用linux?不要急,这里就交 给你两天命令,分别是ls和cd,ls命令会列出当前目录 下的目录和文件,cd加目录名则进入

相应的目录。因此这里可先用ls看看你当前的位置,再使用cd命令进入你的wiki目录下的 maintenance目 录,因为升级脚本update.php就在这个目录下。进入该目录后(注意路径分割 符是/而不是\),输入以下命令:

$ php update.php
剩下的事情就不用管理了,若升级成功,最后在屏幕上会输出以下信息:

Creating protected_titles table…ok

Deleting old default messages (this may take a long time!)…Done
Checking site_stats row…ok. Purging caches…done.
Done.

如果你是从MediaWiki 1.7之前的版本升级到1.12,则在升级后还要输入以下命令来更新链 接:

$ php refreshLinks.php

这些都是对linux主机的升级命令,在windows系统中,如果没有设置环境变量,这时系统可 能找不到php这个程序,这时需要输入完整的php程序的安装路径,如我在本机上安装的 wamp,可以使用:

D:\Program Files\wamp\bin\php\php5.2.5\php update.php

以上是推荐的升级方法,对于使用虚拟主机且没有SSH权限的用户,可以使用另外两种替代 的方法。

替代方法1:phpShell
phpShell(http://mgeisler.net/php-shell/)可以使用PHP函数来模仿命令提示符,对一些锁定的 系统,由于没有足够的权限,该方法可能行不通。

使用此命令,最好跳过此脚本启动时的倒计时阶段,这可以在升级命令的后面加上 --quick
选项来实现:

$ php update.php --quick 替代方法2:重新运行安装程序 另外一种替代从外壳访问升级的方法是重新在浏览器进行一遍安装。你需要进行以下步骤:

  1. 将LocalSettings.php重命名为LocalSettings.old.php
  2. 使config目录对web服务器可写
  3. 确保数据库用户具有所有的数据库访问
  4. 访问wiki以启动安装程序

在安装页面的表单中,填写上与先前版本安装时一样的数据。当安装过程开始后,安装脚本 会检测已有的MediaWiki数据表,并且升级其架构。当安装完成后,会在config目录下生成 一个新的LocalSettings.php文件。现在需要:

  1. 删除新的LocalSettings.php文件
  2. 将LocalSettings.old.php重命名为LocalSettings.php
  3. 还原config目录的访问权限

7.升级扩展
为了适应新的MediaWiki版本,可能需要对一些已有的扩展进行升级。一般请使用最新版本 的扩展。对自定义的扩展,你可能需要亲自进行升级。

8.测试升级 一旦升级完成,请访问你的wiki并测试一些基本的功能如查看和编辑页面是否能正常使用。
你也可以访问Special:Version页面以查看版本号是否正确。