Ubuntu14.04でWordPressを高速化するためにRedisキャッシングを構成する方法
序章
Redisは、メモリ内ストアとキャッシュの両方として機能できるオープンソースのキーバリューストアです。 Redisは、このチュートリアルで行っているように、単独でデータベースサーバーとして使用することも、MySQLなどのリレーショナルデータベースと組み合わせて処理を高速化することもできるデータ構造サーバーです。
このチュートリアルでは、RedisをWordPressのキャッシュとして構成し、WordPressページのレンダリングに使用される冗長で時間のかかるデータベースクエリを軽減します。 その結果、WordPressサイトがはるかに高速になり、使用するデータベースリソースが少なくなり、調整可能な永続キャッシュが提供されます。 このガイドはUbuntu14.04に適用されます。
サイトはそれぞれ異なりますが、以下は、このガイドで構成されている、Redisを使用した場合と使用しない場合のデフォルトのWordpressインストールホームページのベンチマークの例です。 Chromeデベロッパーツールを使用して、ブラウザのキャッシュを無効にしてテストしました。
RedisなしのデフォルトのWordPressホームページ:
804msのページ読み込み時間
Redisを使用したデフォルトのWordPressホームページ:
449msのページ読み込み時間
注: WordPress用のRedisキャッシングのこの実装は、十分にコメントされているがサードパーティのスクリプトに依存しています。 スクリプトはDigitalOceanのアセットサーバーでホストされていますが、外部で開発されました。 WordPress用のRedisキャッシングの独自の実装を作成したい場合は、ここに示されている概念に基づいて、さらにいくつかの作業を行う必要があります。
Redisと Memcached
Memcachedも人気のあるキャッシュの選択肢です。 ただし、この時点で、RedisはMemcachedが実行できるすべてのことを実行し、はるかに大きな機能セットを使用します。 このStackOverflowページには、Redisを初めて使用する人の概要または紹介としていくつかの一般的な情報があります。
キャッシングはどのように機能しますか?
WordPressページが初めて読み込まれると、サーバーでデータベースクエリが実行されます。 Redisは、このクエリを記憶、つまりキャッシュします。 そのため、別のユーザーがWordpressページを読み込むと、データベースにクエリを実行しなくても、Redisとメモリから結果が提供されます。
このガイドで使用されているRedisの実装は、WordPressの永続的なオブジェクトキャッシュとして機能します(有効期限なし)。 オブジェクトキャッシュは、WordPressページをロードするために必要なSQLクエリをメモリにキャッシュすることで機能します。
ページが読み込まれると、結果のSQLクエリ結果はRedisによってメモリから提供されるため、クエリがデータベースにヒットする必要はありません。 その結果、ページの読み込み時間が大幅に短縮され、データベースリソースへのサーバーの影響が少なくなります。 クエリがRedisで利用できない場合、データベースが結果を提供し、Redisがその結果をキャッシュに追加します。
データベースで値が更新された場合(たとえば、WordPressで新しい投稿やページが作成された場合)、そのクエリのRedis値は無効になり、キャッシュされた不正なデータが表示されなくなります。
キャッシュで問題が発生した場合は、Redisコマンドラインからflushall
コマンドを使用してRedisキャッシュを削除できます。
redis-cli
プロンプトが表示されたら、次のように入力します。
flushall
追加リファレンス:WordPressオブジェクトキャッシュドキュメント
前提条件
このガイドを開始する前に、sudoユーザーを設定してWordPressをインストールする必要があります。
- Ubuntu 14.04ドロップレット(1 GB以上を推奨)
- sudoユーザーを追加します
- WordPressをインストールします。 このガイドはこれらの手順でテストされていますが、WordPressをインストールする方法はたくさんあります
ステップ1—Redisをインストールする
WordPressでRedisを使用するには、redis-server
とphp5-redis
の2つのパッケージをインストールする必要があります。 redis-server
パッケージはRedis自体を提供し、php5-redis
パッケージはWordPressなどのPHPアプリケーションがRedisと通信するためのPHP拡張機能を提供します。
softareをインストールします。
sudo apt-get install redis-server php5-redis
ステップ2—Redisをキャッシュとして設定する
Redisは、NoSQLデータベースストアとしてもキャッシュとしても動作できます。 このガイドとユースケースでは、Redisはキャッシュとして構成されます。 これを行うには、次の設定が必要です。
ファイル/etc/redis/redis.conf
を編集し、下部に次の行を追加します。
sudo nano /etc/redis/redis.conf
ファイルの最後に次の行を追加します。
maxmemory 256mb
maxmemory-policy allkeys-lru
変更が完了したら、ファイルを保存して閉じます。
ステップ3—Redisキャッシュバックエンドスクリプトを取得する
このWordPress用のPHPスクリプトは、もともと EricMannによって開発されました。 これは、WordPress用のRedisオブジェクトキャッシュバックエンドです。
object-cache.php
スクリプトをダウンロードします。 このダウンロードはDigitalOceanのアセットサーバーからのものですが、これはサードパーティのスクリプトです。 スクリプトのコメントを読んで、スクリプトがどのように機能するかを確認する必要があります。
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のインストールによっては、場所が異なる場合があります。
ステップ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');
ドメイン名または別の文字列をソルトとして使用できます。
注:複数の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);
ファイルを保存して閉じます。
ステップ5—RedisとApacheを再起動します
最後に、redis-service
とapache2
を再起動します。
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のリアルタイム出力が表示されます。 何も表示されない場合は、Webサイトにアクセスしてページをリロードしてください。
以下は、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はUbuntu14.04のキャッシュとしてRedisを使用するように構成されます。
以下は、WordPressの追加のセキュリティおよび管理ガイドです。
UbuntuのWordPressで安全なアップデートとインストールを構成する方法