mediawiki-1.15.3をmediawiki-1.25.1にアップデートしたログ

Pocket

mediawikiのアップデートをしてみましたので、そのログを残します。

過去にpukiwikiのデータをmediawikiへ移行する簡易的な移行ツールを書いた自分ですが、実は永らくmediawikiをアップデートしていませんでした。
ただ思うところあって、再度wikiにコンテンツを掲載しようということで、重い腰を上げました。

リリースのバージョンがかなり離れてしまっていましたが、思ったほど面倒でもなく、大きな不具合もなく3時間程度でアップデートを完了できました。

mediawikiのアップデートで行ったこと

始めに

mediawikiのヘルプページやネットの記事を見たりもしましたが、最終ダウンロードしたmediawiki-1.25.1のパッケージに入っているUPGRADEファイルの説明どおりにアップデートしました。

1. ファイルとデータベースのバックアップ

これはもうお決まりというか、アップデートに失敗した時のために行いました。
こんな感じですね。

$ mysqldump -uuser db > dump.sql
$ tar zcvf mediawiki-1.15.3.tar.gz mediawiki-1.15.3

2. ファイル([LocalSettings.php ], [images/*], [extensions/*])の複製

これまでは以下のようにpublic_html以下にバージョン付きのディレクトリを作成し、apacheのconfigでalias指定(Alias /index.php public_html/mediawiki-1.15.3/index.php/)等を使って利用していました。

public_html/
├── mediawiki-1.15.3
│   ├── bin
│   ├── config
│   ├── docs
│   ├── extensions
│   ├── images

これは、アップデート時に上書き保存して更新するのではなく、アップデート時は、新規にアップデート用のディレクトリを作成して更新するという意図があり、ダウンロードして展開したにmediawiki-1.25.1を以下のように設置しました。

public_html/
├── mediawiki-1.15.3
│   ├── bin
│   ├── config
│   ├── docs
│   ├── extensions
│   ├── images
│   (中略)
├── mediawiki-1.25.1
│   ├── bin
│   ├── config
│   ├── docs
│   ├── extensions
│   ├── images

この状態で配置ができた後にファイル群を1.15.3から1.25.1のフォルダへ複製しました。

[root@sugoiyo mediawiki-1.25.1]# cp -a ../mediawiki-1.15.3/LocalSettings.php ./
[root@sugoiyo mediawiki-1.25.1]# cp -ar ../mediawiki-1.15.3/images/* ./images
[root@sugoiyo mediawiki-1.25.1]# cp -ar ../mediawiki-1.15.3/extensions/* ./extensions

3. データベースのupdate

ファイルの準備が出来たので、いよいよdatabaseの更新です。
web上の画面からも更新できるようですが、何かあった際に、画面真っ白で事象のトレースができないと嫌なので、コマンドラインから操作しました。

[root@sugoiyo mediawiki-1.25.1]# php maintenance/update.php

(中略)

Done 0 files in 0.0 seconds
Updating *_from_namespace fields in links tables.
...doing page_id from 1 to 200
...doing page_id from 200 to 399
Purging caches...done.

Done in 0:02.

ちなみに、過去にmysqlをmaster/slave構成で利用していたことがあって、その名残りがLocalSettings.phpに記述されていたので、エラーが発生しましたが、きちんどDB関連の設定を見直したら一発で処理が終わりました。

また、旧バージョンで利用していた[GoogleAdSense]と[ManualSitemap]というextensionsが最新版に適合しなかったのか、以下のようなメッセージで処理が止まってしまったので、それぞれLocalSettings.php内に記述していたrequire_onceをコメントアウトしました。

PHP Fatal error:  Call to a member function addMessages() on a non-object in /var/www/html/www.sugoiyo.com/wiki.sugoiyo.com/public_html/mediawiki-1.25.1/extensions/ManualSitemap/ManualSitemap.php on line 51

その他にインストールしていた[googleAnalytics]は問題なく作動しました。

4. skinの調整

skinについては、monobookを利用していたのですが、skinの構成もだいぶ変更されたようで、旧バージョンのskinに埋め込んでいたadsenseタグなどは改めてテンプレートファイルに追記する必要がありました。

5. 追加のextensions

時代はやはりスマフォ、そしてソーシャルということで、スマフォ対応用のextensionsである[MobileFrontend]と[AddThis]を導入しました。
なお、MobileFrontendについては、monobookとはテンプレートが共有されないので、こちらはこちらでテンプレートにadsenseタグを追記しました。
AddThisについてはテンプレートに追記は不要なので、MobileFrontendでもそのまま表示されました。

6. その他の設定

ファイルの複製とdatabase schemaの更新が出来たので、apacheのAliasを新バージョンに振り向け、apacheをリスタートしたのですが、残念ながら画面真っ白になってしまいました。
どうしようかといじくるうちにdatabase系のエラーのように見えたので、以下の記述を記載してエラーメッセージを確認したところ前述した過去のmaster/slave設定の名残が悪さをしていたので、これを修正したら見事、メインページが表示されるようになりました。

$wgShowSQLErrors = 1;

作業後記

mediawikiといえば、もちろんwikipediaで利用されているOSSですが、WordPressのように裾野の広いCMSと比較すると、ユーザーは少ないでしょうし、extensionsもそれなりにあるのですが、WordPressのように画面上で簡単に更新とはいかないので、不便を感じました。
といっても、これまでのOSSなCMSというのはそれが当たり前であって、WordPressが素晴らしいということですが。

updateは思っていたよりもつまづくことがなく、database schemaの更新もあっさり終わったので、想像していたよりは簡単な作業でした。
あれこれ検索していた時間があったものの、3時間ぐらいで作業を終えました。

今後ともあまり間をおかずにupdateするようにしたいと思いました。

Pocket