PR

【完全版】Redisをただのレンタルサーバー上で安定して使う方法

「Redisをレンタルサーバー上で使う方法があるか知りたい。あるならぜひ試したい。」

エンジニアやサーバーいじりが好きな方なら、思ったことがあるのではないでしょうか?レンタルサーバー上でRedisを使えただけで面白いし、お得感があります。

そこで本記事では、WordPress向けのいわゆるレンタルサーバー上に

  • Redisをインストールする
  • Redisを長期間安定させて使う

という2項目に分けて、Redisをレンタルサーバー上で使っていく方法を解説します。

実際に本サイトでは、WordPressのオブジェクトキャッシュ基盤として、レンタルサーバー上で稼働するRedisを使用しています。失敗した経験もあるので、かなり再現性は高いはずです。

Redisをただのレンタルサーバーにインストールする方法

Redisをインストールできるレンタルサーバーには、いくつか条件があります。

  • SSHで接続できること
  • 有料プランを契約していること
  • (推奨)CPUコアやメモリの割り当てが保証されていること

SSHで接続できることに加え、有料プランを契約していることも必須となります。僕の経験上、無料サーバーでRedisなどのサーバーを起動しても、すぐにKillされてしまい、使い物になりません。

その点でいうと「vCPU4コア・メモリ8GB」というようにリソースが保証されているレンタルサーバーが一番最適。本サイトでは、カラフルボックス を使っています。

では、さっそくRedisをインストールしていきましょう。

ステップ1:Redisのソースコードをダウンロード・展開

まずは、Redisのソースコードをダウンロードします。Redis公式のダウンロードページからダウンロードリンクをコピーし、SSH上でwgetすると楽です。

ここでは執筆時点の安定版、Redis7.0.2を使いました。ダウンロードして、展開しましょう。

$ wget https://github.com/redis/redis/archive/7.0.2.tar.gz
$ tar xf 7.0.2.tar.gz

以下、ディレクトリ名などバージョン固有の部分は、みなさんの状況にあわせて読み替えてください。

ステップ2:Redisをコンパイル・インストール

展開できたら、展開されたRedisのディレクトリ「redis-7.0.2」に移動します。まずはmakeでコンパイルします。

レンタルサーバーだと物理コアが80もあったりするので、瞬間的にコンパイルを終わらすことができます。といってもリソース制限を避けるため、せいぜい8コア程度でコンパイルするのが安全です。

$ make -j8

コンパイルし終えたら、root権限無しでインストールできるようにインストール先を変更して、makeします。

僕はインストール先を「$HOME/local」にしています。お好みで「$HOME/.local」や「$HOME」などに変更してください。

$ PREFIX=$HOME/local make install

うまくインストールできると、$HOME/local/bin以下にredis関連のバイナリが設置されます。

Redisの各種バイナリ

ステップ3:Redisを起動してみる→バックグラウンドで起動

インストールができたので、Redisを起動してみます。

$ redis-server

起動に成功すると、次のような画面になります。

Redisを起動したターミナル

SSHをもう1つ開いたりして、redis-cliで接続できるか確かめてみても良いです。Redisの停止はCtrl+Cでできます。(当たり前)

もし~/local/bin以下にパスが通っていないと、redis-serverでは起動できません。~/local/bin/redis-serverと指定するか、PATHを正しく設定すれば良し。

$ export PATH=$HOME/local/bin:$PATH

Redisの起動が確認できたら、今度はRedisをバックグラウンドで起動します。SSHを閉じてもRedisが動きつづけないと意味がないですよね。そこで、nohupを使います。

$ nohup redis-server &

これでバックグランドで起動できたはずです。(もしnohupがない場合は、screenやtmuxなどを調べてみてください。)起動した後、redis-cliで接続できれば成功です。

redis-cliで起動したRedisに接続

バックグラウンドで起動したRedisを停止するには、nohupで起動した後に表示されるPIDのプロセスをKillすればOK。詳しく解説しませんが、以下のスクショを参考にしてみてください。

nohupで立ち上げたRedisを終了させる

Redisをレンタルサーバー上で長期間安定させて使う方法

Redisをレンタルサーバー上で長期間安定させて使う方法

Redisのインストールはできましたが、この状態だとレンタルサーバー上で長期間安定させて使うことは難しい。2年前にも僕はRedisをレンタルサーバーにインストールして使っていたのですが、

ふと気づいたらRedisのプロセスが死んでいる!(Redisが使えなくなっている)

なんてことになっていました。そうならないために、僕が講じている対策は次の2つです。

Redisのプロセスが死んだ場合に自動で復帰させる

Redisが気づいたら死んでいるという問題の解決はかんたんです。Redisが生きているかどうか監視して、死んでいた場合に自動でRedisを起動すれば良いのです。

僕は、次のようなスクリプトを作り、Cronで一分おきに実行しています。

if [ ! -e "/home/user/tmp/redis.pid" ]; then
  nohup /home/user/local/bin/redis-server /home/user/local/etc/redis.conf &
fi

Redisを$HOME/localにインストールした場合、Redisのデフォルトの設定ファイルは$HOME/etc/redis.confに生成されます。

上記のスクリプトでは、redis.confの「pidfile」が「/home/user/tmp/redis.pid」に設定されているものとしています。

Redisが死んでしまう原因が、リソース制限による強制終了でない限り、上のスクリプトで対応できるはず。

Redisとの通信はUNIXドメインソケットを使う

Redisが死なないための対策、そして、Redisのセキュリティ対策として、Redisとの通信にUNIXドメインソケットを使う、という方法があります。

Redisへの通信方法は、

  • TCP/IP(ホスト名とポート番号を指定するタイプ)
  • UNIXドメインソケット(特殊なファイルを経由して通信)

の2種類から選べます。デフォルトはTCP/IPですが、TCP/IPには、以下のようなデメリットがあります。

  • 他の人がそのポート番号を使えなくなる→場合によっては運営会社が困る
  • 他のユーザーにRedisに接続されるかもしれない
  • UNIXドメインソケットより低速

一方、UNIXドメインソケットなら、他の人に迷惑がかからないだけでなく、基本的に他の人がRedisに接続できない+高速というメリットがあります。

僕はTCP/IPを無効にして、UNIXドメインソケットの設定でRedisを運用しています。必要な設定は、redis.confにおいて

  • portを0にする
  • unixsocketで/home/user/tmp/redis.sockなどとソケットファイルを指定
  • unixsocketpermを700にする(セキュリティ対策)

です。これらの設定をした場合、起動時には、設定ファイルを指定して起動する必要があります。

$ nohup redis-server /home/user/local/etc/redis.conf &

カラフルボックスでRedisを運用した結果

カラフルボックスでRedisを運用した結果

初めにも書きましたが、本サイトではカラフルボックス を使っています。そして、そのカラフルボックス上にRedisをインストールし、WordPressのオブジェクトキャッシュ基盤として使っています。

レンタルサーバーで半ば強引にRedisを使うのは、実際どうなのか、共有したい。

全く問題なくRedisが使える

今のところ、全く問題は起きていません。RedisはKillされることなくずっと起動したままですし、WordPressのキャッシュプラグインLiteSpeed CacheからもRedisに接続できています。

LiteSpeedCacheでRedisに接続できている

複数のWebアプリからRedisを使ってもOK

僕は現在カラフルボックス上にインストールしたRedisを3つのWebアプリから使っています。しかし、これでも全く問題なし。

メモリ使用量もアカウント全体で1GB以内に収まっているので、リソース的にも余裕です。かなり気に入ったので、Memcachedとかも動かす予定です。

まとめ:Redisでレンタルサーバーを活用しませんか?

レンタルサーバーにRedisをインストールして運用するのは、思っているよりもずっとかんたんです。レンタルサーバーを契約していれば、追加料金がいらないのでお財布に優しい。

WordPressのオブジェクトキャッシュにも使えるし、他のアプリでも使えて便利です。たとえば、NextCloudにRedisを設定すれば、快適なオンラインストレージができあがります。NextCloudは以下の記事で紹介しました。

最近のレンタルサーバーは非常にスペックが高くなった割に、あまり使いこなせていない人が多いと思います。ぜひRedisをインストールして使い倒してみてほしい。

コメント

タイトルとURLをコピーしました