Debian GNU/Linux 6.0 Squeeze にpackageでmediawikiをinstall

apache, php5, mysql をpackageで導入した, VirtualHostを使用しているdebian web serverで, www.mediawiki.org で配布される tar.gz で mediawiki を手動でインストールして利用していたが, 今回, debianmediawiki package を使ってみた(データ移行はしていない)

こんな文書があったがちょっと古い.
http://www.mediawiki.org/wiki/Manual:Running_MediaWiki_on_Debian_GNU/Linux/ja

合計すると, debian package にしてhappyになった気がする.

debian package版mediawikiのメリット

www.mediawiki.org の .tar.gz の最新版は, セキュリティ関係でよくpatchがでる(メールで通知). だいたいは .tar.gz を展開するだけなのだが, PHPのバージョンの確認などで気をつかう. debian package なら, apt-get update だけしておけばそんなにひどいことにはならないだろうと思える.

extensionも, apt-get install mediawiki-extensions で一通り導入されるし, 必要な他のpackage, 例えば imagemagick なども依存性が考慮されて自動的に導入される.

また, .tar.gz を手動でインストールしたときはアップロードでファイルタイプが正しく認識されなかった. これがdebian packageなら直るかも, と思ったのが切り替えの直接的な動機だった. 最終的には改善できた(別に書く予定)のだが, debian packageに切り替えたのが原因(の一部)か, 追加の設定作業を行ったのだけが原因か, 記録が不完全でわからない.

debian package版mediawikiのデメリット

バージョンが古い. 例えば2011-03-25時点では

  • squeezeのstable のdebian packageは1.15.2-2
  • www.mediawiki.org の最新版は mediawiki-1.16.2.tar.gz, 利用可能な以前のバージョンは mediawiki-1.15.5.tar.gz

となっている.

Debian package版では, 一部ファイル配置が独自になっているところがある. その結果, www.mediawiki.org のdocumentと相違が生じ, README.Debian にも詳細に記述されていない.

debian package版mediawikiのファイル配置

  • /etc/mediawiki Apache等webサーバ用の設定 apache2.cnf が置かれている. 後からLocalSettings.php をコピーする先
  • /usr/share/mediawiki 本体. この中身が /var/lib/mediawiki にsymlinkされている.
  • /usr/share/doc/mediawiki
mimetypes 設定ファイル

mime.typesは, mediawiki付属のdocument では, /usr/share/mediawiki/includes/mime.types を参照していると書いてあるが, debian package では OS付属の /etc/mime.types を参照している. Debianの思想か? MimeTypeDetection などで必要なら, mediawiki 付属のものをmergeするとよいだろう.

インストール手順(VirtualHost)

/etc/mediawiki/apache2.conf (これはsites-availableの設定にmergeされることが想定されている)の中身を見ると,
/var/lib/mediawiki を, (DocumentRoot)/wiki のAliasとすることが想定されているが, 一方, このやりかたはVirtualHost下ではうまくいかないことが示唆されている.

そこでDocumentRootを/var/lib/mediawiki そのものとしてみたがindex.phpは正しく見られるものの, index.phpにあるlinkは正しく働かなかった.

DocumentRoot内に/var/lib/mediawikiのsymlinkを作ったら, すべて正常になったように思える.
(DocumentRoot)/wiki/index.php にwebサーバでアクセスしてインストール, config内に生成されたLocalSettings.php を手動で /etc/mediawiki にコピー. 実はコピー前から /var/lib/mediawiki/LocalSettings.php は /etc/mediawiki/LocalSettings.phpシンボリックリンクになっていたので, 実質, wiki の中においたのと同じ.

ひとつのVirtualHost内で, LocalSettings.php複数もつことにより複数wikiを実現したい場合,
インストール後に

mv /etc/mediawiki/LocalSettings.php /etc/mediawiki/LocalSettings2.php
cd /var/lib/mediawiki
rm LocalSettings.php
ln -s /etec/mediawiki/LocalSettings2.php LocalSettings.php

その後, 次のインスタンスをインストール, のようなことを繰り返せばよい(はず. 未検証)

extensions の管理

各extensions の大部分のファイルは /usr/share/mediawiki-extensions/ (/var/lib/mediawiki/extensions にsymlink) にインストールされ,
loader のような小部分が /etc/mediawiki/extensions/extensions-available/extension名.php にインストールされる.

Apahce httpd server の a2enmod/a2dismod によるmodule管理とよく似ており, mwenext/mwdisext で, /etc/mediawki/extensions/extensions-enabled にsymlinkが作成/削除されることによってextensionは有効化/無効化される.

各extensionの設定は LocalSettings.php に追記することで行える.

あっ後から気づいたけど, 各extensionの設定は /etc/mediawiki/extensions/extensions-available/extension名.php の末尾に追加すれば独自の設定は /etc 以下にまとめられるし, mwenext/mwdisext で非整合にならない.

debian package化されていないextensionの導入

/var/lib/mediawiki/extensions にパッケージでないextensionをいれることも可能 LocalSettings.php からrequire_once することで有効化する.

ファイルアップロードの有効化

$wgEnableUploads をtrue にし, PHPでも設定すれば可能. img_auth.php を使った保護も正常に動作している. なお, $wgFileExtensions で docx, xlsx, pptx などを許すだけではこれらのファイルはアップロード可能にならない. これは MimeTypeDetection と関係しており, /etc/mime.types を修正する必要がある. 別に書きます.