前書き

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

このチュートリアルでは、Ubuntu 18.04サーバー上のソースからRedisをインストールおよび構成する方法を示します。 Redisは、公式のUbuntuリポジトリからダウンロードしてインストールすることで、より少ない手順でインストールできることに注意してください。 この方法を使用してRedisをインストールするには、https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-redis-on-ubuntu-18-04のガイドを参照してください。 Ubuntu 18.04上のSecure Redis]。

前提条件

このガイドを完了するには、https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-18-04 [この初期サーバー設定]に従って設定されたUbuntu 18.04サーバーにアクセスする必要がありますガイド]、 `+ sudo +`権限とファイアウォールを持つ非rootユーザーを含みます。

開始する準備ができたら、 `+ sudo +`ユーザーでUbuntu 18.04サーバーにログインし、以下に進みます。

ステップ1-ビルドおよびテストの依存関係のインストール

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

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

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

sudo apt update
sudo apt install build-essential tcl

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

ステップ2-Redisのダウンロード、コンパイル、インストール

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

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

cd /tmp

次に、 `+ curl +`を使用して、Redisの最新の安定バージョンをダウンロードします。 最新バージョンは、常にhttp://download.redis.io/redis-stable.tar.gz [安定したダウンロードURL]にあります。

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

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

tar xzvf redis-stable.tar.gz

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

cd redis-stable

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

make

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

make test

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

sudo make install

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

sudo mkdir /etc/redis

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

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

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

sudo nano /etc/redis/redis.conf

ファイル内で、 `+ supervised `ディレクティブを見つけます。 このディレクティブを使用すると、Redisをサービスとして管理するinitシステムを宣言でき、その操作をより詳細に制御できます。 ` 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

. . .

次に、 `+ 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

. . .

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

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

ステップ3-Redis systemdユニットファイルの作成

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

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

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

中に入ったら、サービスの説明を追加し、開始する前にネットワークが利用可能でなければならないという要件を定義することで、 `+ [Unit] +`セクションを開始します。

/etc/systemd/system/redis.service

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

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

/etc/systemd/system/redis.service

[Unit]
Description=Redis In-Memory Data Store
After=network.target

最後に、 `+ [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

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

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

ステップ4-Redisユーザー、グループ、およびディレクトリの作成

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

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

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

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

sudo mkdir /var/lib/redis

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

sudo chown redis:redis /var/lib/redis

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

sudo chmod 770 /var/lib/redis

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

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

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

sudo systemctl start redis

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

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サーバーに接続します。

redis-cli

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

ping

これは戻ります:

OutputPONG

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

set test "It's working!"
OutputOK

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

get test

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

Output"It's working!"

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

exit

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

sudo systemctl restart redis

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

redis-cli
get test

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

Output"It's working!"

終了したら、シェルを再度終了します。

exit

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

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

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

結論

このチュートリアルでは、ソースコードからRedisをインストール、コンパイル、ビルドし、systemdサービスとして実行するように構成し、Redisインストールが正しく機能することを検証しました。 次のステップとして、https://www.digitalocean.com/community/tutorials/how-to-secure-your-redis-installation-on-のガイドに従って、Redisのインストールを保護することを*強く*推奨します。 ubuntu-18-04 [Ubuntu 18.04でRedisインストールを保護する方法]。