序章

Redis は、柔軟性、パフォーマンス、幅広い言語サポートで知られるメモリ内のKey-Valueストアです。 これは、データベース、キャッシュ、およびメッセージブローカーとして一般的に使用され、幅広いデータ構造をサポートします。

このチュートリアルでは、Ubuntu18.04サーバーにソースからRedisをインストールして構成する方法を示します。 Redisは、公式のUbuntuリポジトリからダウンロードしてインストールすることで、より少ない手順でインストールできることに注意してください。 この方法を使用してRedisをインストールするには、 Ubuntu18.04にRedisをインストールして保護する方法に関するガイドを参照してください。

前提条件

このガイドを完了するには、この初期サーバーセットアップガイドに従ってセットアップされたUbuntu 18.04サーバーにアクセスする必要があります。これには、sudo権限を持つ非rootユーザーとファイアウォールが含まれます。

開始する準備ができたら、sudoユーザーでUbuntu18.04サーバーにログインし、以下を続行します。

ステップ1—ビルドとテストの依存関係をインストールする

最新バージョンのRedisを入手するために、ソフトウェアをソースからコンパイルしてインストールします。 ただし、ソースコードをダウンロードする前に、ソフトウェアをコンパイルできるように、ビルドの依存関係を満たす必要があります。

これを行うには、Ubuntuリポジトリからbuild-essentialメタパッケージをインストールします。 さらに、バイナリのテストに使用できるtclパッケージをダウンロードします。

ローカルのaptパッケージキャッシュを更新し、次のように入力して依存関係をインストールします。

  1. sudo apt update
  2. sudo apt install build-essential tcl

これで、すべてのビルドとテストの依存関係がサーバーにインストールされ、Redis自体のインストールプロセスを開始できます。

ステップ2— Redisのダウンロード、コンパイル、およびインストール

依存関係をインストールしたら、ソースコードをダウンロードしてコンパイルし、ビルドすることでRedisをインストールする準備が整います。 Redisのソースコードを長期間保持する必要がないため(いつでも再ダウンロードできます)、ソースコードを/tmpディレクトリにダウンロードします。

このディレクトリに移動することから始めます。

  1. cd /tmp

次に、curlを使用して、Redisの最新の安定バージョンをダウンロードします。 最新バージョンは常に安定したダウンロードURLで見つけることができます:

  1. curl -O http://download.redis.io/redis-stable.tar.gz

次のように入力して、tarballを解凍します。

  1. tar xzvf redis-stable.tar.gz

次に、抽出したばかりのRedisソースディレクトリ構造に移動します。

  1. cd redis-stable

次のように入力して、Redisバイナリをコンパイルします。

  1. make

バイナリのコンパイルが完了したら、テストスイートを実行して、すべてが正しくビルドされていることを確認します。

  1. make test

これは通常、完了するまでに数分かかります。 テストが完了したら、次のように入力してバイナリをシステムにインストールします。

  1. sudo make install

これでRedisのインストールは完了です。これで、構成を開始する準備が整いました。 このためには、構成ディレクトリを作成する必要があります。 Redis構成ディレクトリは、通常、/etc/ディレクトリ内にあり、次のように入力して作成できます。

  1. sudo mkdir /etc/redis

次に、Redisソースアーカイブに含まれているサンプルのRedis構成ファイルをコピーします。

  1. sudo cp /tmp/redis-stable/redis.conf /etc/redis

好みのテキストエディタでファイルを開き、構成にいくつかの変更を加えます。

  1. sudo nano /etc/redis/redis.conf

ファイル内で、supervisedディレクティブを見つけます。 このディレクティブを使用すると、initシステムを宣言してRedisをサービスとして管理し、その操作をより細かく制御できます。 supervisedディレクティブはデフォルトでnoに設定されています。 systemd initシステムを使用するUbuntuを実行しているので、これをsystemdに変更します。

/etc/redis/redis.conf
. . .

# If you run Redis from upstart or systemd, Redis can interact with your
# supervision tree. Options:
#   supervised no      - no supervision interaction
#   supervised upstart - signal upstart by putting Redis into SIGSTOP mode
#   supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET
#   supervised auto    - detect upstart or systemd method based on
#                        UPSTART_JOB or NOTIFY_SOCKET environment variables
# Note: these supervision methods only signal "process is ready."
#       They do not enable continuous liveness pings back to your supervisor.
supervised systemd

. . .

次に、dirディレクティブを見つけます。 このオプションは、Redisが永続データをダンプするために使用するディレクトリを指定します。 これを、Redisが書き込み権限を持ち、通常のユーザーが表示できない場所に変更する必要があります。

これには/var/lib/redisディレクトリを使用します。 このディレクトリを作成し、その権限を後のステップ4で調整します。

/etc/redis/redis.conf
. . .

# The working directory.
#
# The DB will be written inside this directory, with the filename specified
# above using the 'dbfilename' configuration directive.
#
# The Append Only File will also be created inside this directory.
#
# Note that you must specify a directory here, not a file name.
dir /var/lib/redis

. . .

終了したら、ファイルを保存して閉じます。

これらはすべてRedis構成ファイルに加える必要のある変更ですが、使用を開始する前に、サービスとして実行するようにRedisを構成し、専用のユーザーとグループを作成するなど、実行する必要のあるいくつかの手順があります。それ。

ステップ3—Redissystemdユニットファイルを作成する

Redisの管理方法をさらに制御するために、systemdサービスとして機能できるようにするsystemdユニットファイルを作成できます。 これには、サーバーが起動するたびにRedisを簡単に起動できるようにするという利点もあります。

/etc/systemd/system/redis.serviceファイルを作成して開き、開始します。

  1. sudo nano /etc/systemd/system/redis.service

内部に入ったら、サービスの説明を追加し、開始する前にネットワークが利用可能である必要があるという要件を定義することにより、[Unit]セクションを開始します。

/etc/systemd/system/redis.service
[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service]セクションでは、サービスの動作を指定します。 セキュリティ上の理由から、このサービスをrootとして実行しないでください。 代わりに、専用のユーザーとグループを使用する必要があります。簡単にするために、これらのredisの両方を呼び出すことができます。 これらを瞬間的に作成します。

サービスを開始するには、redis-serverバイナリを呼び出して、構成を指定するだけです。 これを停止するには、redis-cliバイナリで実行できるRedisshutdownコマンドを使用します。 また、可能な限りRedisを障害から回復させることが望ましいため、Restartディレクティブをalwaysに設定します。

/etc/systemd/system/redis.service
[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service]
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always

最後に、[Install]セクションを追加します。 そこで、サービスが有効になっている場合(つまり、起動時に開始するように構成されている場合)にサービスが接続するsystemdターゲットを定義します。

/etc/systemd/system/redis.service
[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service]
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always

[Install]
WantedBy=multi-user.target

終了したら、ファイルを保存して閉じます。

Redissystemdユニットファイルがすべて設定されました。 ただし、使用する前に、[Service]セクションで参照した専用のユーザーとグループを作成し、機能するために必要な権限を付与する必要があります。

ステップ4— Redisユーザー、グループ、およびディレクトリを作成する

Redisを起動してテストする前に最後に行う必要があるのは、前の2つのファイルで参照したユーザー、グループ、およびディレクトリを作成することです。

redisユーザーとグループを作成することから始めます。 次のように入力すると、1つのコマンドでこれを実行できます。

  1. sudo adduser --system --group --no-create-home redis

次に、次のように入力して、/var/lib/redisディレクトリ(手順2で作成したredis.confファイルで参照されます)を作成します。

  1. sudo mkdir /var/lib/redis

このディレクトリに対するredisユーザーとグループの所有権を付与します。

  1. sudo chown redis:redis /var/lib/redis

最後に、通常のユーザーがこの場所にアクセスできないように権限を調整します。

  1. sudo chmod 770 /var/lib/redis

これで、Redisが機能するために必要なすべてのコンポーネントが配置されました。 これで、Redisサービスを開始してその機能をテストする準備が整いました。

ステップ5—Redisの開始とテスト

次のように入力してsystemdサービスを開始します。

  1. sudo systemctl start redis

次のコマンドを実行して、サービスにエラーがないことを確認します。

  1. sudo systemctl status redis

これにより、次のような出力が生成されます。

Output
● redis.service - Redis In-Memory Data Store Loaded: loaded (/etc/systemd/system/redis.service; disabled; vendor preset: enabled) Active: active (running) since Tue 2018-05-29 17:49:11 UTC; 4s ago Main PID: 12720 (redis-server) Tasks: 4 (limit: 4704) CGroup: /system.slice/redis.service └─12720 /usr/local/bin/redis-server 127.0.0.1:6379 . . .

サービスが正しく機能していることをテストするには、コマンドラインクライアントを使用してRedisサーバーに接続します。

  1. redis-cli

次のプロンプトで、次のように入力して接続をテストします。

  1. ping

これは戻ります:

Output
PONG

次に、次のように入力してキーを設定できることを確認します。

  1. set test "It's working!"
Output
OK

次のように入力して、testの値を取得します。

  1. get test

保存した値を取得できるはずです。

Output
"It's working!"

値をフェッチできることを確認したら、Redisプロンプトを終了してシェルに戻ります。

  1. exit

最後のテストとして、Redisがデータを停止または再起動した後もデータを保持できるかどうかを確認します。 これを行うには、最初にRedisインスタンスを再起動します。

  1. sudo systemctl restart redis

次に、クライアントに再度接続して、テスト値がまだ利用可能であることを確認します。

  1. redis-cli
  1. get test

キーの値は引き続きアクセス可能である必要があります。

Output
"It's working!"

終了したら、シェルに戻ります。

  1. exit

これらのテストがすべて機能し、サーバーの起動時にRedisを自動的に起動したい場合は、systemdサービスを有効にします。

  1. sudo systemctl enable redis
Output
Created symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /etc/systemd/system/redis.service.

これで、Redisのインストールは完全に機能します。

結論

このチュートリアルでは、ソースコードからRedisをインストール、コンパイル、ビルドし、systemdサービスとして実行するように構成し、Redisのインストールが正しく機能していることを確認しました。 次のステップとして、強く Ubuntu 18.04 でRedisインストールを保護する方法に関するガイドに従って、Redisインストールを保護することをお勧めします。