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';