(MediaWiki) セットアップ時のシステム設定調整

戻る一つ前のメニューに戻る

インストール直後に行うMediaWikiシステム設定の調整。

目次

他サーバのMediaWikiデータを移行する場合

(MediaWiki)バックアップとリストアのdumpBackup.phpツールを使って、移行元サーバから記事のテキストデータをバックアップし、移行先サーバにリストアすればよい。 この方法では、画像などの「ファイル空間」のデータは移行されない。MediaWikiのバージョンが同じであればimagesディレクトリを丸ごとコピーすれば良いようだが、そうでない場合はファイルを1個ずつ再登録していく必要がある。

LocalSettings.phpの設定

$IP/includes/DefaultSettings.phpの設定をオーバーライドする。

未ログオン・ユーザの編集禁止(設定文を追加)
## permissions override
$wgGroupPermissions['*'    ]['createaccount']   = false;
#$wgGroupPermissions['*'    ]['read']            = true;
$wgGroupPermissions['*'    ]['edit']            = false;
$wgGroupPermissions['*'    ]['createpage']      = false;
$wgGroupPermissions['*'    ]['createtalk']      = false;

詳細はmw:Manual:$wgGroupPermissions/jaおよびmw:Manual:User rights/ja参照。

標準のタイムゾーンの設定(設定文を追加)
## default timezone
$wgLocaltimezone = "Asia/Tokyo";
$wgLocalTZoffset = date("Z") / 60;

Googleで検索すると、3600で割るという例も書かれているが、MediaWikiの1.7以降では秒ではなく分単位となっているため、60で割ればよい。mw:Manual:$wgLocalTZoffset/ja参照。

ファイルアップロードの許可(設定文を編集)
## To enable image uploads, make sure the 'images' directory
## is writable, then set this to true:
$wgEnableUploads       = true;
$wgFileExtensions = array( 'png', 'gif', 'jpg', 'jpeg' );

アップロードできるファイルの拡張子は、デフォルトではここに示したようなものになっている。zip,lzh,gz,cabなどの圧縮ファイルをアップロードしたい場合は、ここに追加すればよい。なお、アップロードが禁止されたファイル拡張子の配列 $wgFileBlacklist や、MIMEタイプの配列 $wgMimeTypeBlacklist についてもDefaultSettings.phpでの指定を確認すること。(基本的に、htmlファイル、php,cgi等のサーバ実行ファイル、exeなどのWindows実行ファイル等が禁止リストに列挙されている)

詳細はmw:Manual:$wgEnableUploads/jamw:Manual:$wgFileExtensions/jaなどを参照。

外部サイトの画像ファイル表示を許可する
$wgAllowExternalImages = true;
<img>画像タグの利用を許可する
$wgAllowImageTag = true;
ページ名を任意の文字列に変更できるようにする
$wgAllowDisplayTitle = true;
$wgRestrictDisplayTitle = false;
デフォルトのスキンファイルの指定
$wgDefaultSkin = 'my_skin';

スキンの定義ファイルで、$this->skinname = 'My_Skin'; と定義されているところのスキン名を全て小文字にして指定する。詳細はmw:Manual:$wgDefaultSkin/ja参照。

ファイルキャッシュの有効化
$wgUseFileCache = true;
$wgFileCacheDirectory = "$IP/cache";
$wgShowIPinHeader = false;

この設定のように、同時に非ログオンユーザの「IPアドレス表示」を無効にする必要がある。

キャッシュの有効期限を最大LocalSettings.phpの更新時刻とする
$wgCacheEpoch = max( $wgCacheEpoch, gmdate( 'YmdHis', @filemtime( __FILE__ ) ) );

こうすることで、LocalSettings.phpを書き換えた場合に強制的なキャッシュクリアを忘れても自動的にキャッシュがクリアされるようになる

システムディレクトリのアクセス制限

bin, cache, docs, extentions, includes, languages, maintenanceなど、外部からアクセスする必要の無いディレクトリのother,groupアクセス権限を削除する。

InterWikiキーワードの設定

他のサーバのMediaWikiを移行してくる場合は、InterWikiキーワードのDBをコピーする。

RSSフィード出力の記事リンクを履歴ではなく記事自体にする

RSSフィードの記事リンクは標準で次のような形式になっている

<entry>
  <id>http://www.example.com/index.php?title=Topic-Title&diff=562&oldid=174</id>
  <title>Topic-Title</title>
  <link rel="alternate" type="text/html" href="http://www.example.com/index.php?title=Topic-Title&diff=562&oldid=174"/>
  <updated>2012-01-21T11:44:22Z</updated>
</entry>

diff=nnnoldid=nnnを消すため、$IP/include/ChangesFeed.phpの中の1箇所を修正する。

if ( $obj->rc_this_oldid ) {
  $url = $title->getFullURL(
//   'diff=' . $obj->rc_this_oldid .
//   '&oldid=' . $obj->rc_last_oldid
  );
} else {
  $url = $title->getFullURL();
}

なお、変更後に結果が反映されるまで、最大24時間掛る。これは、global $messageMemc;のキャッシュが$expire = 3600 * 24;の期間だけ持続するからだ。一時的にキャッシュを無効にして結果を確認するには、(MediaWiki1.18では)129行目のreturn $messageMemc->get( $key );を阻止すればよい。

「NewPP limit report」の出力抑制

標準設定では本文とカテゴリの間に、次のようなコメントが自動的に挿入されている。

<!-- 
NewPP limit report
Preprocessor node count: 2/1000000
Post-expand include size: 6/2097152 bytes
Template argument size: 0/2097152 bytes
Expensive parser function count: 0/100
-->

<!-- Saved in parser cache with key server_:pcache:idhash:1-0!1!0!!ja!2 and timestamp 20090212105643 -->

このデバッグ用コメントを消すために、次の2箇所を変更する。

$IP/includes/parser/Parser.php の一部分をコメントアウト。

$limitReport =
	"NewPP limit report\n" .
	"Preprocessor node count: {$this->mPPNodeCount}/{$this->mOptions->mMaxPPNodeCount}\n" .
	"Post-expand include size: {$this->mIncludeSizes['post-expand']}/$max bytes\n" .
	"Template argument size: {$this->mIncludeSizes['arg']}/$max bytes\n".
	$PFreport;
wfRunHooks( 'ParserLimitReport', array( $this, &$limitReport ) );
# $text .= "\n<!-- \n$limitReport-->\n";

$IP/includes/parser/ParserCache.php の一部分をコメントアウト。

$parserOutput->mTimestamp = $article->getTimestamp();
 
# $parserOutput->mText .= "\n<!-- Saved in parser cache with key $key and timestamp $now -->\n";
wfDebug( "Saved in parser cache with key $key and timestamp $now\n" );
戻る一つ前のメニューに戻る