Ubuntu 14.04でWordPressを高速化するためにRedisキャッシングを設定する方法

前書き

Redisは、メモリ内ストアとしてもキャッシュとしても動作可能なオープンソースのキー値ストアです。 Redisは、このチュートリアルで行っているように、データベースサーバーとして単独で使用することも、MySQLなどのリレーショナルデータベースと組み合わせて処理を高速化することもできるデータ構造サーバーです。

このチュートリアルでは、RedisをWordPressのキャッシュとして設定し、WordPressページのレンダリングに使用される冗長で時間のかかるデータベースクエリを軽減します。 その結果、WordPressサイトがより高速になり、データベースリソースの使用量が減り、調整可能な永続キャッシュが提供されます。 このガイドはUbuntu 14.04に適用されます。

すべてのサイトは異なりますが、以下は、このガイドで構成されているRedisを使用した場合と使用しない場合のデフォルトのWordpressインストールホームページのベンチマーク例です。 ブラウザのキャッシュを無効にしてテストするために、Chrome開発者ツールが使用されました。

Redisを使用しないデフォルトのWordPressホームページ:

ページ読み込み時間804ms

Redisを使用したデフォルトのWordPressホームページ:

449msのページ読み込み時間

[.note]#Note: WordPress用のRedisキャッシングのこの実装は、十分にコメントされているがサードパーティのスクリプトに依存しています。 スクリプトはDigitalOceanのアセットサーバーでホストされていますが、外部で開発されました。 WordPress用のRedisキャッシングの独自の実装を作成したい場合は、ここに示されている概念に基づいて、さらにいくつかの作業を行う必要があります。

Redis vs. Memcached

Memcachedも一般的なキャッシュの選択肢です。 ただし、この時点で、RedisはMemcachedでできることをすべて実行し、さらに大きな機能セットを使用します。 このStack Overflow pageには、Redisを初めて使用する人の概要または紹介としていくつかの一般的な情報が含まれています。

キャッシングはどのように機能しますか?

WordPressページが初めて読み込まれると、サーバーでデータベースクエリが実行されます。 Redisは、このクエリ、つまりcachesを記憶しています。 そのため、別のユーザーがWordpressページを読み込むと、データベースに照会する必要なく、Redisとメモリから結果が提供されます。

このガイドで使用されるRedis実装は、WordPressの永続オブジェクトキャッシュとして機能します(有効期限なし)。 オブジェクトキャッシュは、WordPressページの読み込みに必要なSQLクエリをメモリにキャッシュすることで機能します。

ページがロードされると、結果のSQLクエリ結果がRedisによってメモリから提供されるため、クエリがデータベースにヒットする必要はありません。 その結果、ページの読み込み時間が大幅に短縮され、サーバーがデータベースリソースに与える影響が少なくなります。 クエリがRedisで利用できない場合、データベースは結果を提供し、Redisはキャッシュに結果を追加します。

データベースで値が更新された場合(たとえば、WordPressで新しい投稿やページが作成された場合)、そのクエリのRedis値は無効になり、不正なキャッシュデータが表示されなくなります。

キャッシュで問題が発生した場合は、Redisコマンドラインからflushallコマンドを使用してRedisキャッシュを削除できます。

redis-cli

プロンプトが表示されたら、次を入力します。

flushall

追加リファレンス:WordPress Object Cache Documentation

前提条件

このガイドを開始する前に、sudoユーザーを設定し、WordPressをインストールする必要があります。

  • Ubuntu 14.04ドロップレット(1 GB以上を推奨)

  • sudo userを追加します

  • WordPressをインストールします。 このガイドはthese instructionsでテストされていますが、WordPressをインストールする方法はたくさんあります

[[step-1 -—- install-redis]] ==ステップ1—Redisをインストールします

WordPressでRedisを使用するには、redis-serverphp5-redisの2つのパッケージをインストールする必要があります。 redis-serverパッケージはRedis自体を提供し、php5-redisパッケージはWordPressなどのPHPアプリケーションがRedisと通信するためのPHP拡張機能を提供します。

ソフトウェアをインストールします。

sudo apt-get install redis-server php5-redis

[[step-2 -—- configure-redis-as-a-cache]] ==ステップ2—Redisをキャッシュとして構成する

Redisは、キャッシュだけでなくNoSQLデータベースストアとしても動作できます。 このガイドとユースケースでは、Redisはキャッシュとして設定されます。 これを行うには、次の設定が必要です。

ファイル/etc/redis/redis.confを編集し、下部に次の行を追加します。

sudo nano /etc/redis/redis.conf

ファイルの最後に次の行を追加します。

maxmemory 256mb
maxmemory-policy allkeys-lru

変更が完了したら、ファイルを保存して閉じます。

[[step-3 -—- obtain-redis-cache-backend-script]] ==ステップ3—Redisキャッシュバックエンドスクリプトを取得する

このWordPress用のPHPスクリプトは、もともとEric Mannによって開発されました。 WordPress用のRedisオブジェクトキャッシュバックエンドです。

object-cache.phpスクリプトをダウンロードします。 このダウンロードはDigitalOceanのアセットサーバーからのものですが、this is a third-party scriptです。 スクリプトのコメントを読んで、どのように機能するかを確認する必要があります。

PHPスクリプトをダウンロードします。

wget https://assets.digitalocean.com/articles/wordpress_redis/object-cache.php

ファイルをWordPressインストールの/wp-contentディレクトリに移動します。

sudo mv object-cache.php /var/www/html/wp-content/

WordPressのインストールによって、場所が異なる場合があります。

[[step-4 -—- enable-cache-settings-in-wp-config-php]] ==ステップ4—wp-config.phpでキャッシュ設定を有効にする

次に、wp-config.phpファイルを編集して、サイトの名前(または任意の文字列)を含むキャッシュキーソルトを追加します。

nano /var/www/html/wp-config.php

* Authentication Unique Keys and Salts.セクションの最後に次の行を追加します。

define('WP_CACHE_KEY_SALT', 'example.com');

ドメイン名または別の文字列をソルトとして使用できます。

Note:複数のWordPressサイトをホストしているユーザーの場合、各サイトは、独自のキャッシュキーソルトを持っている限り、同じRedisインストールを共有できます。

また、WP_CACHE_KEY_SALT行の後に次の行を追加して、Redisオブジェクトキャッシュプラグインで永続キャッシュを作成します。

define('WP_CACHE', true);

まとめると、ファイルは次のようになります。

 * Authentication Unique Keys and Salts.

. . .

define('NONCE_SALT',       'put your unique phrase here');

define('WP_CACHE_KEY_SALT', 'example.com');
define('WP_CACHE', true);

ファイルを保存して閉じます。

[[step-5 -—- restart-redis-and-apache]] ==ステップ5—RedisとApacheを再起動します

最後に、redis-serviceapache2を再起動します。

Redisを再起動します。

sudo service redis-server restart

Apacheを再起動します。

sudo service apache2 restart

使用している場合は、php5-fpmを再起動します。これは、DigitalOceanの基本的なインストールの一部ではありません。

sudo service php5-fpm restart

それでおしまい! WordPressサイトはRedisキャッシングを使用しています。 ページの読み込み速度とリソースの使用を確認すると、改善点に気付くはずです。

redis-cliを使用してRedisを監視する

Redisを監視するには、次のようにredis-cliコマンドを使用します。

redis-cli monitor

このコマンドを実行すると、キャッシュされたクエリを提供するRedisのリアルタイム出力が表示されます。 何も表示されない場合は、ウェブサイトにアクセスしてページをリロードしてください。

以下は、Redisを使用してこのガイドに従って構成されたWordPressサイトからの出力例です。

OK
1412273195.815838 "monitor"
1412273198.428472 "EXISTS" "example.comwp_:default:is_blog_installed"
1412273198.428650 "GET" "example.comwp_:default:is_blog_installed"
1412273198.432252 "EXISTS" "example.comwp_:options:notoptions"
1412273198.432443 "GET" "example.comwp_:options:notoptions"
1412273198.432626 "EXISTS" "example.comwp_:options:alloptions"
1412273198.432799 "GET" "example.comwp_:options:alloptions"
1412273198.433572 "EXISTS" "example.comwp_site-options:0:notoptions"
1412273198.433729 "EXISTS" "example.comwp_:options:notoptions"
1412273198.433876 "GET" "example.comwp_:options:notoptions"
1412273198.434018 "EXISTS" "example.comwp_:options:alloptions"
1412273198.434161 "GET" "example.comwp_:options:alloptions"
1412273198.434745 "EXISTS" "example.comwp_:options:notoptions"
1412273198.434921 "GET" "example.comwp_:options:notoptions"
1412273198.435058 "EXISTS" "example.comwp_:options:alloptions"
1412273198.435193 "GET" "example.comwp_:options:alloptions"
1412273198.435737 "EXISTS" "example.comwp_:options:notoptions"
1412273198.435885 "GET" "example.comwp_:options:notoptions"
1412273198.436022 "EXISTS" "example.comwp_:options:alloptions"
1412273198.436157 "GET" "example.comwp_:options:alloptions"
1412273198.438298 "EXISTS" "example.comwp_:options:notoptions"
1412273198.438418 "GET" "example.comwp_:options:notoptions"
1412273198.438598 "EXISTS" "example.comwp_:options:alloptions"
1412273198.438700 "GET" "example.comwp_:options:alloptions"
1412273198.439449 "EXISTS" "example.comwp_:options:notoptions"
1412273198.439560 "GET" "example.comwp_:options:notoptions"
1412273198.439746 "EXISTS" "example.comwp_:options:alloptions"
1412273198.439844 "GET" "example.comwp_:options:alloptions"
1412273198.440764 "EXISTS" "example.comwp_:options:notoptions"
1412273198.440868 "GET" "example.comwp_:options:notoptions"
1412273198.441035 "EXISTS" "example.comwp_:options:alloptions"
1412273198.441149 "GET" "example.comwp_:options:alloptions"
1412273198.441813 "EXISTS" "example.comwp_:options:notoptions"
1412273198.441913 "GET" "example.comwp_:options:notoptions"
1412273198.442023 "EXISTS" "example.comwp_:options:alloptions"
1412273198.442121 "GET" "example.comwp_:options:alloptions"
1412273198.442652 "EXISTS" "example.comwp_:options:notoptions"
1412273198.442773 "GET" "example.comwp_:options:notoptions"
1412273198.442874 "EXISTS" "example.comwp_:options:alloptions"
1412273198.442974 "GET" "example.comwp_:options:alloptions"

CTRL-Cを押して出力を停止します。

これは、Redisが処理しているクエリを正確に確認するのに役立ちます。

結論

このガイドに従って、WordPressはUbuntu 14.04でRedisをキャッシュとして使用するように設定されます。

以下に、WordPressのセキュリティおよび管理に関する追加のガイドをいくつか紹介します。

Related