当前位置

MediaWiki从1.27.0升级到1.35.1

James Qi 在 2021年3月18日 - 08:30 提交

上次MediaWiki从1.23.5和1.24.2升级到1.27.0还是在2016年,选择1.27版本的原因是这是一个长支持周期的版本,可以在3年内不用大版本升级,但在2019年也到期了,本来应该升级到1.31这个长周期版本,不过也因为时间精力顾不过来而没有进行,到2020年的1.35又是一个新的长周期版本,我们2020年10月就进行了测试,后来人手不足搁置了一段时间,现在2021年3月再次回头来进行,终于是把剩下的小问题逐步解决,然后升级网站可以推出了,下面来记录一下需要进行的工作。

首先到MediaWiki官方网站下载最新稳定版本,阅读1.35的发布说明,还需要按照官方的升级指导手册来进行,升级过程:

  • 备份MySQL数据库中相关库、表;
  • 备份Web文件;
  • 创建另外一个库,将备份还原到新库中;
  • 创建另外一个目录放置解压后的1.35版本文件,将备份文件中的.htaccess, robots.php等自己创建的文件复制过来
  • 修改dns创建一个测试域名
  • 修改apache站点配置,测试域名指向新目录
  • 如果用到SSL,还要生成新测试域名的SSL证书
  • 修改LocalSettings.php,让老站中的一些设置在新站中生效
  • 逐个检查每个扩展程序,是否有最新版本需要升级,去进行获取、根据需要修改配置
  • 运行maintenance/update.php进行升级,数据量几千到几万的站点大约需要30分钟左右,数百万页面的站点需要6小时左右
  • 在测试域名下对各种页面进行检查、对各种操作进行测试,发现问题逐个排查、解决
  • 切换新老站点的目录和其它一些配置,上线升级后的站点

几个特别的扩展程序:

以前搞这些MediaWiki的升级都是我一个人弄,很费力,后面让同事参与后争取可以做到有新版本就及时更新,不用像现在这里几年才搞一次,随时跟踪MediaWiki的新变动、也避免一些安全问题、使用一些更新的功能。

同事还做了更多的工作,系列网站也还有一部分在进行升级中,我以后再来添加更多信息记录在这里。


遇到User name "Move page script" is usable, cannot create an anonymous actor for it. Run maintenance/cleanupUsersWithNoId.php to fix this situation.这种报错,解决的办法补充记录在《MediaWiki升级报错页面版本找不到》这篇博文中。


2021年7月30日补充:

WikiSEO这个扩展升级后,自动产生了open graph、twitter cards等标签,不过繁体版本却是显示的简体字,包括meta description, keywords也是简体,排查了好几天,在WikiSEO模块中修改程序都没有搞好,最后我修改了includes/OutputPage.php中的addMeta和addHeadItem两个函数,添加了简体到繁体的转换,才算是解决:


	public function addMeta( $name, $val ) {
		//jamesqi 2021-7-30
		if ($_SERVER['SERVER_NAME'] == 'tw.youbianku.com') {
			if (in_array($name, array('description', 'keywords'))) {
				$val = zh_hans_to_zh_hant($val);
			}
		}
		$this->mMetatags[] = [ $name, $val ];
	}
...
	public function addHeadItem( $name, $value ) {
		//jamesqi 2021-7-30
		if ($_SERVER['SERVER_NAME'] == 'tw.youbianku.com') {
			if (in_array($name, array('og:description', 'article:tag', 'twitter:description'))) {
				$value = zh_hans_to_zh_hant($value);
			}
		}
		$this->mHeadItems[$name] = $value;
	}

这个办法不太正规,但暂时也只好这样来解决了。

自由标签:

添加新评论

Plain text

  • 不允许使用HTML标签。
  • 自动将网址与电子邮件地址转变为链接。
  • 自动断行和分段。