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

前書き

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

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

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

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

ページ読み込み時間804ms

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

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

Redis vs. Memcached

Memcachedも一般的なキャッシュの選択肢です。 ただし、この時点で、RedisはMemcachedでできることをすべて実行し、さらに大きな機能セットを使用します。 このhttp://stackoverflow.com/questions/10558465/memcache-vs-redis[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

追加リファレンス:http://codex.wordpress.org/Class_Reference/WP_Object_Cache[WordPress Object Cache Documentation]

前提条件

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

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

  • sudo userを追加します

  • WordPressをインストールします。 このガイドはhttps://www.digitalocean.com/community/tutorials/how-to-install-wordpress-on-ubuntu-14-04 [これらの手順]でテストされていますが、WordPressをインストールする方法はたくさんあります

ステップ1-Redisのインストール

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

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

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 Cacheバックエンドスクリプトを取得する

このWordPress用のPHPスクリプトは、元々https://github.com/ericmann/Redis-Object-Cache/raw/master/object-cache.php[Eric Mann]によって開発されました。 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 /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', '');

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

_ *注意:*複数の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', '');
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のリアルタイム出力が表示されます。 何も表示されない場合は、ウェブサイトにアクセスしてページをリロードしてください。

以下は、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のセキュリティおよび管理に関する追加のガイドをいくつか紹介します。