【wordpress】memcachedで高速化

「CentOS7」+「php7.2」+「nginx」な環境に構築された「wordpress」で「memcached」を使う手順となります。

今回の手順は、下記ページで構築した環境に「memcached」を追加する形となっています。

OSはCentOS 7.5で、minimalインストールの状態からphp7.2 + nginx + php-fpm環境にwordpr...

インストール

「wordpress」と「memcached」を組み合わせて高速化させるために必要な下記パッケージを、「remi」リポジトリを使用してインストールします。

  • memcached
  • php-pecl-memcache PHPからmemcachedにアクセスするためのライブラリ

今回「wordpress」がインストールされている環境は「PHP7.2」なので、インストールする際に指定するリポジトリは「remi-php72」としていますが、この部分は現在インストールされている「php」のバージョンによって異なるので、「php7.1」の場合は「remi-php71」といったように適宜読み替えてください。

# yum install --enablerepo=remi memcached
# yum install --enablerepo=remi,remi-php72 php-pecl-memcache

memecached設定

「memcached」に接続できるサーバを、自サーバ(127.0.0.1)のみに制限する設定を「/etc/sysconfig/memcached」にしておきます。

初期設定は下記のようになっています。

PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""

「OPTIONS」に「-l 127.0.0.1」を設定し、自サーバ(127.0.0.1)からのみ接続可能な設定を追加します。

※ちなみに「memecached」を別サーバに用意している場合は、「wordpress」のインストールされているサーバのIPアドレスかホスト名を指定します。

OPTIONS=”-l 127.0.0.1″

設定追加後の「/etc/sysconfig/memcached」は下記のようになっています。

PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=”-l 127.0.0.1″

※「firewalld」の初期設定では「memcached」が使用する「11211」番ポートを開放していないので問題ないと思いますが、念のために設定しておきます。

php-pecl-memcache設定

特に設定変更は必要ありませんが、設定ファイルとして下記ファイルが作成され、phpへのモジュール追加設定(extension=memcache.so)等はこのファイルで設定されています。

/etc/php.d/40-memcache.ini 

「memcache」がモジュールとして追加されているかは、下記コマンドで確認することが出来ます。

# php -m | grep memcache
memcache

memcached起動と自動起動設定

「memcached」を起動し、その後に忘れずに自動起動の設定も行っておきましょう。

# systemctl start memcached
# systemctl enable memcached

プラグインインストール

「wordpress」で「memcached」を使用するために必要なプラグインである「Memcached Redux」と「WP Memcached Manager」をWordpressの管理画面の「プラグイン」-「新規追加」からインストールしてください。

この段階ではまだプラグインの「有効化」は行わないで下さい。

Memcached Redux設定

「Memcached Redux」を使用するためには、「wordpress」がインストールされているディレクトリ内の「wp-content」に移動し、「plugins/memcached-redux/object-cache.php」へのシンボリックリンクを作成します。

私の環境では「/usr/share/nginx/blog/servermemo/」ディレクトリに「wordpress」がインストールされているので下記のように作業を行いましたが、環境によってこのディレクトリは異なるので、適宜読み替えて作業を行ってください。

# cd /usr/share/nginx/blog/servermemo/wp-content
# ln -s plugins/memcached-redux/object-cache.php .

「memcached」を複数の「wordpress」で使用する場合にそなえて

memcachedを複数のwordpressで使用する場合、そのままではキャッシュが混じって不具合が発生することがあります。

これを回避するためには、「wp-config.php」に、「WP_CACHE_KEY_SALT」の設定を追加して、他の「wordpress」とキャッシュが混じらないようにします。

# cd ../
# cp -p wp-config.php wp-config.php-yyyymmdd
# vi wp-config.php

一番下にでも下記の設定を追加してください。

define('WP_CACHE_KEY_SALT', 'ホスト名' );

今回はキーソルトとして「wordpress」を公開するサーバのホスト名を指定していますが、他の「wordpress」と重複しない値を設定すれば良いです。

「nginx」「php-fpm」再起動

「nginx」と「php-fpm」を再起動し「memcached」を使用できるようにします。

# systemctl restart nginx
# systemctl restart php-fpm

プラグインの有効化

Wordpressの管理画面から「Memcached Redux」と「WP Memcached Manager」を有効化します。

WP Memcached Manager 設定

「Memcached Redux」と「WP Memcached Manager」を有効化すると、管理画面に「Memcached」設定メニューが表示されるので「Edit servers」を選択します。

「memcached」サーバを追加する画面が表示されるので、下記項目を設定した後に「Add Server」ボタンを押下します。

  • Server IP / Hostname: 127.0.0.1
  • Server Port: 11211

「Current Servers」に追加したホスト「127.0.0.1」が表示されていることを確認してください。

動作確認

ダッシュボードのメニューから「Memcached」を選択すると「WP Memcached Manager」画面が表示されるので、セレクトボックスで先ほど追加した「127.0.0.1」のサーバを選択して「Manage Server」ボタンを押下します。

「memcached」の使用状況が表示されるので、下記項目を確認して正常に「memcached」が使用できているか確認してください。

  • 「Memcached Server Status」が「Server online. Connected.」
  • 「SET TEST」が「SUCCESS」
  • 「GET TEST」が「SUCCESS」

プラグインの削除方法

「wordpress」と「memcached」の連携を辞めたい場合は、「wordpress」のメニューの「プラグイン」で、「Memcached Redux」と「WP Memcached Manager」を停止し、「wp-content」ディレクトリに作成した「plugins/memcached-redux/object-cache.php」へのシンボリックリンクを削除してください。

シェアする