辛夷坞

涧户寂无人,纷纷开且落

By - Christen

MediaWiki 升级笔记

对,又倒腾这个,我就是一个纠结到死的人,只是单纯的希望把MediaWiki从独享虚拟主机,迁移到ECS。
第一步,备份数据库
如果忘记密码,可以查看 LocalSettings.php

$wgDBserver = "114.114.114.114";
$wgDBname = "mediawiki";
$wgDBuser = "christen";
$wgDBpassword = "password";


mysqldump 语法及操作:

$ mysqldump --user=wikidb_user --password=wikidb_userpassword wikidb > file.sql
$ mysqldump --user=christen --password=password mediawiki > wikidb-1.27.sql
> source /var/ftp/wikidb-1.27.sql

第二步,下载最新版的MediaWiki

$ wget https://releases.wikimedia.org/mediawiki/1.30/mediawiki-1.30.0.tar.gz
$ cd /path/to/your/new/installation/
$ wget https://releases.wikimedia.org/mediawiki/1.30/mediawiki-1.30.0.tar.gz
$ tar -xvzf mediawiki-1.30.0.tar.gz
$ rm mediawiki-1.30.0.tar.gz

第三步,从旧的主机复制文件到新的源程序
1. LocalSettings.php
2. images

$ cd /mnt/var/www/mediawiki
$ mv images images-o
$ cp -r /var/ftp/wiki/images ./
$ chmod -R 777 images

复制插件,皮肤,Logo

cp -r /var/ftp/wiki/extensions/googleAnalytics ./extensions/
cp -r /var/ftp/wiki/extensions/MobileFrontend ./extensions/
cp -r /var/ftp/wiki/extensions/HTMLTags ./extensions/
cp -r /var/ftp/wiki/extensions/WikiAwesome ./extensions/
cp -r /var/ftp/wiki/extensions/Collection ./extensions/
cd skins
mv Vector Vector-o
cp -r /var/ftp/wiki/skins/Vector ./
cp /var/ftp/wiki/resources/assets/wiki.png ./resources/assets/

第四步,开始升级

# cd ../maintenance
# php update.php
MediaWiki 1.30.0 Updater
Your composer.lock file is up to date with current dependencies!
Going to run database updates for mediawiki-cd
Depending on the size of your database this may take a while!
Abort with control-c in the next five seconds (skip this countdown with --quick) ... 0
Turning off Content Handler DB fields for this part of upgrade.
...
...
Adding empty categories with description pages...
Removing empty categories without description pages...
--mode=remove --begin=莼鲈之思
Category cleanup complete.
Populating page_props.pp_sortkey...
Updated 0 rows
Populating page_props.pp_sortkey complete.
Copying IP revisions to ip_changes, from rev_id 0 to rev_id 1617
...checking 1 revisions for IP edits that need copying, between rev_ids 0 and 200
Attempted to insert 0 IP revisions, 0 actually done.
Set the local repo temp zone container to be private.
Purging caches...done.
Done in 3.2 s.

三秒就完成了,因为数据量不大。详细的控制台日志,我做了备份。
好像就这么简单,但如果不是深入了解这个程序,这一路操作也没那么容易,心理压力。
第五步,解决问题
人生在世,很少一帆风顺。
代码高亮正常,但是部分图片是滥图,紧张,查看 images 目录下的文件,发现中文文件名都是乱码。解决方法:

unzip -O CP936 xxx.zip # 用GBK, GB18030也可以

就在我准备收工回家的时候,发现严重问题,移动版视图不工作。
这是其中一种错误提示:

Fatal error: Call to undefined method OutputPage::enableTOC() in /mnt/var/www/mediawiki/extensions/MobileFrontend/includes/MobileFrontend.hooks.php on line 1278

于是我怀疑插件版本低了,换成1.30,还是出错,不过是另外一种提示了,满屏“乱码”,这里择第一句纪念:

MediaWiki internal error.

回退一个版本1.29,还是出错。

$ wget https://extdist.wmflabs.org/dist/extensions/MobileFrontend-REL1_30-e769fbf.tar.gz
tar -xzf MobileFrontend-REL1_30-e769fbf.tar.gz -C /mnt/var/www/mediawiki/extensions

于是我怀疑和静态化有关,可能 nginx 的语法不对,但是去掉静态化,故障依旧。
1.30 可能是进行了很多的升级,能看出来的,主要是按钮更漂亮了,但这显然没有移动视图重要。
第六步,退回到 1.27.4
步骤就不写了,强调必须备份数据库。

tar zxvf mediawiki-1.27.4.tar.gz
mv mediawiki-1.27.4 mediawiki
cd mediawiki
rm -rf images/
cp -r ../mediawiki-1.30/images/ ./
cp -r ../mediawiki-1.30/extensions/googleAnalytics/ extensions/
cp -r ../mediawiki-1.30/extensions/HTMLTags/ extensions/
cp -r ../mediawiki-1.30/extensions/WikiAwesome/ extensions/
cp -r ../mediawiki-1.30/extensions/Collection/ extensions/
maintenance# php update.php
MediaWiki 1.27.4 Updater
Your composer.lock file is up to date with current dependencies!
Going to run database updates for mediawiki-cd
Depending on the size of your database this may take a while!
Abort with control-c in the next five seconds (skip this countdown with --quick) ... 0
Turning off Content Handler DB fields for this part of upgrade.
……
...
Set the local repo temp zone container to be private.
Purging caches...done.
Done in 0.4 s.

好吧,毕竟是小版本号升级,只是增强了安全性,0.4 秒就完成了。
收尾工作:

cp mediawiki-1.30/favicon.ico mediawiki
mv mediawiki/skins/Vector mediawiki/skins/Vector-1.27.4
cp -r /var/ftp/wiki/skins/Vector mediawiki/skins/
mv extensions/MobileFrontend/ extensions/MobileFrontend-1.27.4
cp -r /var/ftp/wiki/extensions/MobileFrontend/ extensions/

也保存一份初始的SideBar:

* navigation
** mainpage|mainpage-description
** recentchanges-url|recentchanges
** randompage-url|randompage
** helppage|help
* SEARCH
* TOOLBOX
* LANGUAGES

测试正常后,打开静态化脚本:

$wgScriptExtension = ".php";
$wgArticlePath = "{$wgScriptPath}/$1";
$wgUsePathInfo = true;
$wgGenerateThumbnailOnParse = true;

测试代码、图片,新增、修改,正常。
第七步,关闭旧站
删除虚拟主机上的 .htaccess,修改 LocalSettings.php
至此全部完成。
写得很轻松,也很快,那是因为我重复操作了很多次,无数试错。
游泳去了!

1 thought on “MediaWiki 升级笔记

Christen April 21, 2018 at 4:42 pm

很少有真正的对和错,只有好和更好。

Reply

Leave a Reply

Your email address will not be published.
*
*