読者です 読者をやめる 読者になる 読者になる

MediaWikiにMemcachedを導入したらSession周りで一瞬困った話

2週に一回の更新になりつつある本ブログです。今回のネタはMediawikiの運用に関してです。

問題

参加しているサークルの内部で利用するMediawikiを運用しているのですが、今回、高速化を狙ってmemcachedを導入してみました。

# in LocalSettings.php

## Shared memory settings
# 削除 $wgMainCacheType = CACHE_NONE;
# 以下を追加
$wgMainCacheType = CACHE_MEMCACHED;
$wgMemCachedServers = array (
  0 => '127.0.0.1:11211',
);

すると、ログイン画面で正しいログイン情報を送信しても、

ログイン・セッションに問題が発生しました。セッションハイジャックを防ぐために操作は取り消されました。ブラウザの「戻る」を押して直前のページを再度読み込んだ後に、もう一度操作を行ってください。

(英語運用だとhere seems to be a problem with your login session; this action has been canceled as a precaution against session hijacking. Go back to the previous page, reload that page and then try again.)
と表示されて全くログインできなくなります。

環境

  • Ubuntu server 12.04.02 LTS
  • onamae VPS KVM1GBプラン
  • apt-getからmediawikiを導入
sudo apt-get install mediawiki mediawiki-extensions

解決法

Mediawiki Forumのこのスレッド
[RESOLVED] Login Problem - MediaWiki
の最後の投稿にあるとおり、Sessionの保存場所をMemcachedに指定する必要があります。

# in LocalSettings.php
# 追加
$wgSessionsInMemcached = true;

Reference

最初にここを見るべきでした(後から気づいた)
memcached - MediaWiki