コアサーバーにRedisをインストールし、Wordpressプラグイン「Redis Object Cache」を適用させて高速化を行ったので、これらの導入手順を紹介します。
契約しているコアサーバーではサーバにssh接続ができるので、Redisのインストール及び設定は全てターミナル上で実施します。
コアサーバーもそうですが、ほとんどのレンタルサーバはroot権限がないため、yumやdnfインストールによるredisインストールはできません。
そのためソースをダウンロードし、コンパイルしてredisを起動させるやり方を行います。
前提条件
コアサーバー以外のレンタルサーバーも本手順でredisの導入ができますが、sshログインが可能であることが必須です。
なおAWS等を利用しているかたはyumやdnfによるredisインストールができるので、今回紹介する手順とは異なる点ご了承ください。
Redis のインストール
導入時点では redis 7.0.8 が最新版のため、バージョンは適宜変更ください。
// 公式から最新版のソースをダウンロード
$ wget https://github.com/redis/redis/archive/7.0.8.tar.gz
// ダウンロードしたファイルの展開
$ tar xf 7.0.8.tar.gz
// 展開先ディレクトリへ移動
$ cd ~/redis-7.0.8/
// (リソース制限を回避するため)8コアでコンパイル
$ make -j8
// インストール先($HOME/.local)を指定し実行
$ PREFIX=$HOME/.local make install
// .local/bin配下にredis関連のバイナリが格納されることを確認する
$ ls -l ~/.local/.bin/
-rwxr-xr-x 1 USERNAME hpusers 6977400 Feb 23 23:00 redis-benchmark
lrwxrwxrwx 1 USERNAME hpusers 12 Feb 23 23:00 redis-check-aof -> redis-server
lrwxrwxrwx 1 USERNAME hpusers 12 Feb 23 23:00 redis-check-rdb -> redis-server
-rwxr-xr-x 1 USERNAME hpusers 7236776 Feb 23 23:00 redis-cli
lrwxrwxrwx 1 USERNAME hpusers 12 Feb 23 23:00 redis-sentinel -> redis-server
-rwxr-xr-x 1 USERNAME hpusers 14399816 Feb 23 23:00 redis-server
// 解凍したredisディレクトリから設定ファイル(redis.conf)をコピーする(※1)
$ cp ~/redis-7.0.8/redis.conf ~/.local/bin/
// .local/binに移動してredisサーバが起動することを確認 ※正常に起動できることを確認できたらctrl+cで抜ける
$ cd ~/.local/bin/
$ redis-server
Redis の設定変更
(※1)でコピーした redis.conf に対し設定変更を行います。
// redis.confを編集
$ vi ~/.local/bin/redis.conf
下記項目を参考に設定ファイルの編集を行います。
#port 6379
port 0
unixsocket /virtual/USERNAME/.local/bin/redis.sock
unixsocketperm 700
#timeout 0
timeout 600
各項目の説明としては下記の通りです。
- port 6379をコメントアウトし、port 0に変更
- TCP/IP接続は無効にしUNIXドメインソケットでの接続に変更
- Connection timeout値の変更
Redis サービス起動&確認
// 編集したredis.confを使ってサービス起動
$ redis-server ~/.local/bin/redis.conf
// (別ウィンドウで開き) redis-cli 接続確認
$ redis-cli -s ~/.local/bin/redis.sock monitor
OK
ここまで問題無ければ、無事UNIXドメインソケットによるRedis接続が正常に行えています。
次にコアサーバーでは一定の時間経過するとプロセスが終了する仕様のため、redisの自動起動シェルスクリプトを用意します。
Redis 自動起動シェルスクリプトの作成&cron適用
#!/bin/bash
DATE=`date '+%Y-%m-%d %H:%M:%S'`
PROCESSNAME=redis-server
COUNT=`ps aux | grep $PROCESSNAME | grep -v grep | wc -l`
if [ $COUNT = 0 ]; then
echo "$DATE $PROCESSNAME is dead."
nohup /virtual/USERNAME/.local/bin/redis-server /virtual/USERNAME/.local/bin/redis.conf &
else
echo "$DATE $PROCESSNAME is alive."
fi
redisプロセスが存在しない場合はredis-serverの起動を行い、プロセスが存在する場合はスキップを行う処理となります。
上記のシェルスクリプトを作成したら、コアサーバー管理画面上の「cronジョブ」にてシェルスクリプトを登録します。
登録時のポイントとして、シェルスクリプトの実行結果をログファイルに出力を行う指定をします。
ログファイル(/virtual/USERNAME/.local/cron/redis_check.log) を確認すると、cronが正しく動いているかの確認ができます。
/virtual/USERNAME/.local/cron/redis_check.sh >>/virtual/USERNAME/.local/cron/redis_check.log 2>&1
ここまでを行うことで、コアサーバーにRedisを継続的に起動させることができました。
次のページではWPプラグイン「Redis Object Cache」の導入方法を説明します。