カテゴリー:
環境構築
タグ:
 Redis systemd supervisor

このエントリーをはてなブックマークに追加
更新日時:
2017年10月17日(火)
作成日時:
2017年10月17日(火)

前の記事 / 次の記事

サクッとできるつもりが意外と戸惑ったのでメモ。

環境

  • CentOS: 7.1.1708
  • Redis: 4.0.2

参考

目次

インストール

まずはインストール、ここはサクッとパッケージで、入りません!!
いや、入るんだけど3.2とかいう微妙なのが入るので手動で入れます。

リポジトリ設定してパッケージで入れる方法もあるっぽいけど、
設定してる最中に「ていうか手動で入れた方が楽じゃね?」と思ってしまったので手動で。

参考:Redis/Download

任意の場所にダウンロードしてコンパイル。

$ wget http://download.redis.io/releases/redis-4.0.2.tar.gz
$ tar xzf redis-4.0.2.tar.gz
$ cd redis-4.0.2
$ make
$ make install

設定

設定自体は簡単だが、
設定すべきヶ所が分散してるので漏れがないように一つずつ確実にやっつける。

ユーザ&グループ設定

redisはredisグループのredisユーザーで動くのでその辺設定。

参考:Redis ユーザ及びグループの作成

$ sudo groupadd redis
$ sudo useradd -s /sbin/nologin -M -g redis redis

ディレクトリ設定

Redisが動くのに幾つかのディレクトリが必要なので、それを設定する。
これはコンフィグファイルで柔軟に設定可能な値なので、好きにつくって構わない。

$ mkdir /etc/redis     # 設定ファイルを配置
$ mkdir /var/log/redis # ログ及びrdbファイルを配置

$ chmod 755 /etc/redis
$ chmod 755 /var/log/redis

$ chown redis:redis /etc/redis 
$ chown redis:redis /var/log/redis

ちなみに、デフォルトのログファイルであるredis.confを見ると、

pidfile /var/run/redis_6379.pid

という設定ヶ所があり、/etc/redis /var/log/redis とかやってる勢いで、
/var/run/redis というディレクトリをつくりたい欲望に駆られるかも知れないが、
CentOS7では、再起動時に/var/run以下に作成したディレクトリが消去されるという
仕様になっているので、敢えて苦労したい人以外は/var/run配下に消えると困るディレクトリを作成してはいけない。

今回の場合も /var/run/redis を作成してそこのpidを格納するように設定してしまうと、
再起動時に /var/run/redis ディレクトリがないから起動できませんと言われてしまうので、
今回は /var/run に格納するように設定する(デフォルト値)。

設定ファイルの作成

参考:Redis 設定ファイルのコピー

ダウンロード&解凍時に既に設定ファイルの雛形を入手しているので、
それをコピーして使う。

Rdisの解凍先にあるredis.confをredisの設定ファイル格納場所にコピー。
ファイル名はなんでもいい。

ただ、将来的にRedisを複数稼働させる場合はportによって使い分けることになると
思うのでファイル名にポート番号が含まれていると便利だと思われる。

$ cp /redis-4.0.2/redis.conf /etc/redis/6379.conf

設定ファイルの設定

参考:Redis 設定ファイルの編集

設定したヶ所

$ vi /etc/redis/6379.conf

daemonize no    # 今回はデーモン化しない
supervised auto # サービス化するために必要
port 6379       # 必要に応じて
pidfile /var/run/redis_6379.pid
bind 127.0.0.1  # 内部からしかアクセスしない場合はこのままでいい
loglevel notice
logfile /var/log/redis/6379.log
dbfilename 6379.rdb     # dumpファイル名
dir /var/log/redis      # dumpファイル格納場所
requirepass thepassword
maxclients 1024 

ちなみに設定ファイルを読むとパスワードは死ぬほど長くしないと意味無いからって
書いてあるので、実際に設定する場合は死ぬほど長くして使う。

とりあえず起動してみる

一通り設定したところで動くかどうか確認。

起動(引数の設定ファイルを使って起動)

$ /usr/local/bin/redis-server /etc/redis/6379.conf

接続

$ redis-cli
127.0.0.1:6379> auth thepassword
OK
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> quit

終了

$ /usr/local/bin/redis-cli -a thepassword shutdown

ポートをデフォルト値以外にしてる場合は -p オプションを渡す。

$ /usr/local/bin/redis-cli -p 6380 -a thepassword shutdown

問題なく起動、接続、終了できたら、OS再起動時に自動起動するように設定する。

自動起動の設定

参考

CentOS7からサービスの管理方法が変わっていて、chkconfigが使えなかったので、
新しい方法で設定。

この方法で起動させる場合、Redisの設定ファイル(/etc/redis/6379.conf)を

daemonize no
supervised auto # or systemd

のように設定しておく必要があり、daemonizeはnoに設定する必要があるので注意。

$ vi /etc/systemd/system/redis_6379.service

[Unit]
Description=Redis

[Service]
Type=notify
ExecStart=/usr/local/bin/redis-server /etc/redis/6379.conf
ExecStop=/usr/local/bin/redis-cli -p 6379-a thepassword shutdown
User=redis
Group=redis

[Install]
WantedBy=multi-user.target

設定を書いて保存したら動くかどうか確認。

起動確認

$ systemctl daemon-reload
$ systemctl start redis_6379
$ systemctl status redis_6379

# なんか色々出力されるけど3行目辺りに、
# Active: active (running) 
# という1文が出力されていればOKだと思う。

終了確認

$ systemctl stop redis
$ systemctl status redis

# こちらも同様に色々出力されるけど3行目辺りに、
# Active: inactive (dead)
# という1文が出力されていればOKかと。

systemctl で起動と終了ができることを確認できたら、サービスとして登録しましょう。

$ systemctl enable redis_6379
# Created symlink from なんたらかんたら
# と出てきてシンボリックリンクが作成されれば成功です。

ちなみにサービスとして稼働させるのをやめたい場合は、
disableで登録を解除できます。

$ systemctl disable redis_6379

再起動して使えるか確認

再起動のタイミングでredisが使えなくならないことが目的なので、
最後に再起動してもちゃんと起きてくるか確認します。

$ reboot

再起動後特に何もしなくてもアクセスできれば完了です。

$ redis-cli
127.0.0.1:6379> auth thepassword
OK
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> quit

おしまい。