まめ畑

ゆるゆると書いていきます

Mediawikiにmemcacheを導入

少し前からmediawikiを使っているのですが、こいつはmemcacheが使えるとの事で最近話題騒然のmemcacheを導入してみました。
memcacheを少し勉強する必要もあったのでちょうど良かった。
そして、こいつ速い!
memcache++

キャッシュをメモリ上に持つので高速なアクセスが可能です、また複数代台のサーバで構成する事も出来るので使えそうな感じ。
セッション周りとかいいかも。


で、Ubuntu導入方法のメモ。
PHPのextensionを入れようとしたら、peclがなぜかエラー吐きまくったので、PHPextensionはソースから入れてみた。

memcacheのインストール

sudo apt-get install memcached

以上

PHPextensionのインストール

本当なら
sudo pecl install memcahce
でいいはず。

でも、出来ないから
http://pecl.php.net/package/memcache
で最新の物をDL。
今回は、memcache-3.0.1.tgzを使いました。


sudo wget http://pecl.php.net/get/memcache-3.0.1.tgz
sudo tar xzvf memcache-3.0.1.tgz
cd memcache-3.0.1/
sudo phpize
sudo ./configure
sudo make install

php.iniへ追加

memcache.soを追加します。
php.iniってどこにあるんすか?
という場合には
php --ini
と入力すると

Configuration File (php.ini) Path: /etc/php5/cli
Loaded Configuration File: /etc/php5/cli/php.ini
Scan for additional .ini files in: /etc/php5/cli/conf.d
Additional .ini files parsed: /etc/php5/cli/conf.d/memcache.ini,
/etc/php5/cli/conf.d/mysql.ini,
/etc/php5/cli/conf.d/mysqli.ini,
/etc/php5/cli/conf.d/pdo.ini,
/etc/php5/cli/conf.d/pdo_mysql.ini

こんな感じで出力されます。
上から順番に読み込まれますので、/etc/php5/cli/php.iniに追記すればいいです。
上手く追加されているか確認する時は
php -mで現在読み込まれているextensionが表示されます。
その中にmemcacheとあればOKです。
記述方法は
extension=memcache.so
です。
個人的にはphp.iniよりも、conf.d/中にmemcache.iniと専用のファイルを作成してその中に記述した方がいいかと思います。

  • もし記述しても読み込まれない場合は

pecl config-show
と入力し、PHP extension directoryの項目にmemcache.soが存在するか確認し、もし無かったら、memcache-*/modules内にあるmemcache.soをコピーしてみて下さい。

mediawikiの設定

まずは、memcacheの使うPortを確認します。
/etc/memcached.conf
を開き、-pと書かれている箇所の番号がPort番号です。
ここでmemcacheの設定が可能です。
memcacheを起動します。
/etc/init.d/memcached start


mediawikiをインストールしたディレクトリ中のLocalSettings.phpを開きます。
以下の項目をこのように編集します。

$wgMainCacheType = CACHE_MEMCACHED;
$wgMemCachedServers = array('127.0.0.1:11211');

$wgMemCachedServersのアドレスとPort番号は先ほどmemcacheの設定ファイルで確認or設定したものを使用します。


以上で設定完了です。


memcacheを使って上手くパフォーマンスをあげたいです。