MediaWikiをアップグレードする

提供: Akionux-wiki
Share/Save/Bookmark
移動先: 案内検索

概要

MediaWikiのアップグレードを行う手順を説明する。 MediaWiki公式wiki[1]を参考にした。

注意:あなたのmediawikiのデータを破壊する可能性もあるので、バックアップを取り、十分注意の上、自己責任でおねがいします。

なお、この説明ではデータベースにはmysqlを利用している環境下を前提としている。

バックアップ

Mediawikiが提供するアップグレードスクリプトがあるが、何が起こるかわからないので必ずバックアップをとっておく。 mysqlのデータベースをテキストおよびXMLでダンプする。

$ mysqldump -h $HOST -u $USER -p$PASSWORD --default-character-set=latin1 $DATABASE -c > backup.sql
$ mysqldump -h $HOST -u $USER -p$PASSWORD --default-character-set=latin1 $DATABASE -c --xml > backup.xml

アップグレード前のmediawikiルートフォルダ以下をコピーしておく。実際に必要なファイルはLocalSettings.php、imagesフォルダ、extensionsフォルダ、その他自分で作ったり変更を加えたファイルやフォルダであるが、一応全部コピーしておいた。

$ cp -r /path/to/mediawiki /path/to/backup

新バージョンのmediawikiをダウンロード&展開

新しいバージョンのmediawikiを従来通りのパスに展開できるように前のバージョンのディレクトリを移動する。

$ mv /path/to/mediawiki /path/to/mediawiki-old

アップグレード先のMediawikiをダウンロードして、mediawikiのパスへ展開する。

$ wget http://download.wikimedia.org/mediawiki/1.22/mediawiki-1.22.0.tar.gz
$ tar zxvf mediawiki-1.22.0.tar.gz -C /path/to/ --strip-components 1

必要なファイルの移動

必要なファイルを前のバージョンのmediawikiからコピーする。

  • LocalSettings.php
$ cp /path/to/mediawiki-old/LocalSettings.php /path/to/mediawiki/LocalSettings.php
  • imagesフォルダ
$ cp -r /path/to/mediawiki-old/images /path/to/mediawiki/images

extensionsフォルダ内のデフォルトでは入っていない拡張機能たち。拡張機能によってはバージョンアップによって使え無くなるものもある可能性があるので、必要に応じてアップグレードした拡張機能を導入すること。

$ cp -r /path/to/mediawiki-old/extensions/hogehoge /path/to/mediawiki/extensions

その他、自分で追加したフォルダや、skinなどデフォルトのものに変更を加えたファイルがある場合はコピーしておくこと。

Semantic Mediawikiをインストール

Semantic Mediawikiをインストールしていた場合は、改めてインストール。 composer.json"require":にSemantic Mediawiki関連のものを入れる。

                "mediawiki/semantic-media-wiki": "*",
                "mediawiki/maps": "*",
                "mediawiki/semantic-result-formats": "*",
                "mediawiki/page-forms": "*"

semantic-formsはpage-formsに名前を変えたらしい…。

composerをダウンロードして実行。

curl -sS https://getcomposer.org/installer | php
php composer.phar update

この後MediaWikiのアップデートスクリプトでcomposer.lockが最新ではないと怒られたので、composer.json

        "mediawiki/semantic-media-wiki": "2.5.6",
        "mediawiki/maps": "5.0.2",
        "mediawiki/semantic-result-formats": "2.5.5",
        "mediawiki/page-forms": "4.3.1"

と書き換えたらうまくいくようになった。

アップデートスクリプトの実行

アップデートスクリプトを実行してアップデートを行う:

$ cd /path/to/mediawiki
$ php maintenance/update.php

トラブルシューティング

データベースのエラー

次のエラーはMediaWikiをバージョン1.22から1.30へアップグレードした際に出たもの。

  • Error: 1054 Unknown column 'ug_expiry' in 'field list' (localhost)

[2][3]を参考にSQLコードを実行して修復。/*$wgDBprefix*/はLocalSettings.phpの$wgDBprefixで指定している接頭辞で置き換える。

use <データベース名>
alter table /*$wgDBprefix*/user_groups
add column ug_expiry varbinary(14) NULL default NULL,
add index ug_expiry (ug_expiry);
  • DROP command denied

上記の対策をしてもまだデータベースのエラーが出たので、またアップデートスクリプトを実行すると、今度はユーザにDROPの権限が無いというエラーが出た。 そこで、データベースのユーザにDROPの権限を与えるSQLコードを実行したら、うまくいった。

grant drop on wikidb.* to wikiuser@localhost identified by 'password';

References

  1. MediaWiki, Manual:Upgrading/ja
  2. [RESOLVED] After Update Error: 1054 Unknown column 'ug_expiry' in 'field list' (localhost) on Project:Support desk https://www.mediawiki.org/wiki/Topic:Tye8bmq845eyhpnc
  3. mediawiki/patch-user_groups-ug_expiry.sql at master · wikimedia/mediawiki · GitHub https://github.com/wikimedia/mediawiki/blob/master/maintenance/archives/patch-user_groups-ug_expiry.sql