序章

Redisは、柔軟性、パフォーマンス、幅広い言語サポートで知られるメモリ内のKey-Valueストアです。 このガイドでは、Ubuntu16.04サーバーにRedisをインストールして構成する方法を示します。

前提条件

このガイドを完了するには、Ubuntu16.04サーバーにアクセスする必要があります。 root以外のユーザーが必要になります sudo このプロセスに必要な管理機能を実行するための特権。 Ubuntu 16.04初期サーバーセットアップガイドに従って、これらの特権でアカウントをセットアップする方法を学ぶことができます。

始める準備ができたら、Ubuntu16.04サーバーにログインします。 sudo ユーザーと以下に進みます。

ビルドとテストの依存関係をインストールします

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

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

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

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

Redisをダウンロード、コンパイル、およびインストールする

次に、Redisの構築を開始できます。

ソースコードをダウンロードして抽出する

コンパイルするソースコードを長期間保持する必要がないため(いつでも再ダウンロードできます)、 /tmp ディレクトリ。 今すぐそこに移動しましょう:

  1. cd /tmp

次に、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をビルドしてインストールする

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

  1. make

バイナリがコンパイルされたら、テストスイートを実行して、すべてが正しく構築されていることを確認します。 これを行うには、次のように入力します。

  1. make test

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

  1. sudo make install

Redisを構成する

これでRedisがインストールされたので、構成を開始できます。

まず、構成ディレクトリを作成する必要があります。 従来型を使用します /etc/redis 次のように入力して作成できるディレクトリ。

  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 指令。 現在、これはに設定されています no. systemd initシステムを使用するオペレーティングシステムを実行しているため、これを次のように変更できます。 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 このためのディレクトリ。これはすぐに作成します。

/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

. . .

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

Redissystemdユニットファイルを作成する

次に、initシステムがRedisプロセスを管理できるように、systemdユニットファイルを作成できます。

を作成して開きます /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を使用できます shutdown コマンド。これは、 redis-cli バイナリ。 また、可能な場合はRedisを障害から回復させたいので、 Restart 「常に」への指示:

/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

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

Redisユーザー、グループ、ディレクトリを作成する

ここで、前の2つのファイルで参照したユーザー、グループ、およびディレクトリを作成する必要があります。

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

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

今、私たちは作成することができます /var/lib/redis 次のように入力してディレクトリを作成します。

  1. sudo mkdir /var/lib/redis

私たちは与えるべきです redis このディレクトリに対するユーザーとグループの所有権:

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

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

  1. sudo chmod 770 /var/lib/redis

Redisの起動とテスト

これで、Redisサーバーを起動する準備が整いました。

Redisサービスを開始します

次のように入力して、systemdサービスを起動します。

  1. sudo systemctl start redis

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

  1. sudo systemctl status redis

次のようなものが表示されます。

Output
● redis.service - Redis Server Loaded: loaded (/etc/systemd/system/redis.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2016-05-11 14:38:08 EDT; 1min 43s ago Process: 3115 ExecStop=/usr/local/bin/redis-cli shutdown (code=exited, status=0/SUCCESS) Main PID: 3124 (redis-server) Tasks: 3 (limit: 512) Memory: 864.0K CPU: 179ms CGroup: /system.slice/redis.service └─3124 /usr/local/bin/redis-server 127.0.0.1:6379 . . .

Redisインスタンスの機能をテストする

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

  1. redis-cli

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

  1. ping

君は見るべきだ:

Output
PONG

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

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

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

  1. get test

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

Output
"It's working!"

Redisプロンプトを終了して、シェルに戻ります。

  1. exit

最後のテストとして、Redisインスタンスを再起動しましょう。

  1. sudo systemctl restart redis

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

  1. redis-cli
  1. get test

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

Output
"It's working!"

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

  1. exit

起動時にRedisを起動できるようにする

すべてのテストが機能し、サーバーの起動時に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.

結論

これで、Ubuntu16.04サーバーにRedisインスタンスがインストールおよび構成されているはずです。 Redisインストールを保護する方法の詳細については、 Ubuntu 14.04 でRedisインストールを保護する方法(手順3以降)を参照してください。 Ubuntu 14.04を念頭に置いて作成されていますが、ほとんどの場合16.04でも機能するはずです。