MediaWiki のキャッシュ設定

提供:あわ自由帳

はじめに

忘れないうちに、MediaWiki のキャッシュ設定について書いておく。

ここでは、システムキャッシュ有効、記事キャッシュ有効、APC有効で使っています。APCはphp.iniでモジュールを組み込んだら、設定にかかわらずキャッシュが効くようです。

MediaWiki のキャッシュ設定

つぎの3種類のキャッシュが利用できる

  • APC
  • システムキャッシュ
  • memcached

APC

APCを使う場合

LocalSettings.phpの設定は

$wgMainCacheType = CACHE_ACCEL;

APCを使わない場合は

LocalSettings.phpの設定は

$wgMainCacheType = CACHE_NONE;

システムキャッシュ

システムキャッシュにテンポラリファイルを使う場合、書きこむディレクトリを指定する。
システムキャッシュキャッシュを使わない場合は、設定は行わない。 LocalSettings.phpの設定は

$wgCacheDirectory = "$IP/cache";

ディレクトリの所有者を変更する。

[root@host3 ~]# chown -R apache:apache /var/www/html/wiki/cache

メッセージキャッシュ

メッセージキャッシュを使わない場合は、設定は行わない。

LocalSettings.phpの設定は

$wgUseLocalMessageCache = true;

記事キャッシュ

記事キャッシュにテンポラリファイルを使う場合、書きこむディレクトリを指定する。
記事キャッシュを使わない場合は、設定は行わない。

$wgUseFileCache を true 設定すると、 $wgShowIPinHeader と $wgDebugToolbar は自動的に false に設定されます。

LocalSettings.phpの設定は

$wgUseFileCache = true;
$wgFileCacheDirectory = "$IP/cache";

サイドバーキャッシュ

サイドバーキャッシュを使わない場合は、設定は行わない。

LocalSettings.phpの設定は

$wgEnableSidebarCache = true;

設定例

## Shared memory settings

# APCでPHPを高速化
$wgMainCacheType = CACHE_ACCEL;
$wgMemCachedServers = array();

## システムキャッシュを有効にする
## 使わない場合は、設定を行わない
$wgCacheDirectory = "$IP/cache";

## 記事キャッシュを有効にする
$wgUseFileCache = true;
$wgFileCacheDirectory = "$IP/cache";

## メッセージキャッシュを有効にする
$wgUseLocalMessageCache = true;

## サイドバーキャッシュを有効にする
$wgEnableSidebarCache = true;

memcachedのインストール

注意

Memcachedのは、セキュリティや認証されていません。サーバーが適切にファイアウォールされていることを確認し、memcachedのサーバに使用するポートが外部からアクセス可能でないこと確認してください。それ以外の場合は、インターネット上の誰でもデータにアクセスでき、あなたのキャッシュからデータを読み取ることができます。

MediaWikiの内部に精通している攻撃者は、すべてのユーザーのパスワードハッシュと電子メールアドレスを取得するだけでなく、wikiのデータベースからすべてのデータを自分自身に開発者のアクセス権を与えると、削除するためにこれを使用することができます。

インストール

[root@host3 ~]# yum install memcached

起動

[root@host3 ~]# systemctl start memcached.service

[root@host3 ~]# systemctl enable memcached.service

確認

[root@host3 ~]# systemctl status memcached
 memcached.service - Memcached
   Loaded: loaded (/usr/lib/systemd/system/memcached.service; disabled; vendor preset: disabled)
   Active: active (running) since 木 2016-01-07 22:39:59 JST; 3s ago
 Main PID: 453 (memcached)
   CGroup: /system.slice/memcached.service
           └─453 /usr/bin/memcached -u memcached -p 11211 -m 64 -c 1024

 1月 07 22:39:59 host3.sudachi.jp systemd[1]: Started Memcached.
 1月 07 22:39:59 host3.sudachi.jp systemd[1]: Starting Memcached...

PHPextensionのインストール

[root@host3 ~]# yum -y install php-pecl-memcache

[root@host3 ~]# systemctl restart memcached
[root@host3 ~]# systemctl restart httpd

[root@host3 ~]# php --ini
・
・
/etc/php.d/memcache.ini,
・
・

mediawikiの設定

memcacheの使うPortを確認

[root@host3 ~]# cat /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""

mediawiki LocalSettings.php 設定

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

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

開発時にキャッシュを無効にする

Localsettings.phpに以下を追加するとキャッシュが無効になります。

$wgCachePages = false;
$wgCacheEpoch = 'date +%Y%m%d%H%M%S';