概述

本文内容:创建用户和目录、下载源码、编译安装、systemd管理。

  • 源码目录:/usr/src
  • 数据目录 datadir: /var/lib/redis (配置文件: dir /var/lib/redis)
  • 日志目录 logdir: /var/log/redis (配置文件: logfile /var/log/redis/redis.log)

创建用户和目录

出于安全考虑,非系统进程一般不以root用户运行,而是使用专属的用户运行程序,因此预先创建一个无法登陆、仅用于运行该服务的账号。

1
2
3
4
5
# -s, --shell: 指定登录shell, 可指定 /bin/false 或 /usr/sbin/nologin 禁止其登陆
# -M, --no-create-home, 即不创建对应的 /home/user 目录
useradd -M -s /usr/sbin/nologin redis

# remark: 可以使用 userdel -r redis 删除该用户

创建数据目录和日志目录,并修改文件拥有者

1
2
3
4
5
mkdir /var/lib/redis
chown -R redis:redis /var/lib/redis

mkdir /var/log/redis
chown -R redis:redis /var/log/redis

下载

将源码压缩包下载到 /usr/src 并解压缩。

1
2
3
4
5
6
7
8
9
10
11
# case1: 在当前目录下载官方最新的稳定版(该链接长期有效)
wget https://download.redis.io/redis-stable.tar.gz

# case2: 使用 `-O` 选项指定保存的路径和文件名
wget -O /usr/src/redis-stable.tar.gz https://download.redis.io/redis-stable.tar.gz

# case3: 下载特定版本:将{version}替换为具体的版本号。可参考官网地址 https://redis.io/download/
wget -O /usr/src/redis-{version}.tar.gz https://github.com/redis/redis/archive/{version}.tar.gz

# 解压缩
tar zxf redis-stable.tar.gz

编译安装

由于会用到两个编译选项:BUILD_TLS=yes(TLS支持)和 USE_SYSTEMD=yes(systemd支持),需要先安装对应的的工具:

1
2
3
4
5
# TLS support
sudo yum install -y systemd-devel

# systemd support
sudo yum install -y openssl-devel

更多选项可参考 github: redis

执行构建:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 进入源码目录
cd redis-stable

# 使用两个选项进行编译。如果不添加 systemd 支持,则无法通过 systemctl start redis 的方式进行管理。
make USE_SYSTEMD=yes BUILD_TLS=yes

# 将编译后的可执行文件复制到系统目录
sudo make install

# (可选) 清除编译文件,以便重新编译
make distclean

# (可选) 删除源码
rm -rf /usr/src/redis-stable

将配置文件放到 /etc/redis

1
2
3
mkdir /etc/redis
cp redis.conf sentinel.conf /etc/redis
chown -R redis:redis /etc/redis

编辑配置:指定各种文件的目录

1
2
3
4
# 日志文件
logfile /var/log/redis/redis.log
# rdb文件所在
dir /var/lib/redis

通过systemd管理redis服务

/etc/systemd/system/ 目录下添加service unit: redis.service (一个文本文件),内容为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[Unit]
Description=Redis Server
After=network.target
After=network-online.target
Wants=network-online.target

[Service]
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf --supervised systemd
ExecStop=/usr/local/bin/redis-cli shutdown
Type=notify
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755

[Install]
WantedBy=multi-user.target

确保 redis-server, redis-cli 和配置文件 /etc/redis/redis.conf 的位置没有问题。选项--supervised systemd指定服务由 systemd 管理(配置文件里的 supervised 可以任意设置)。

1
2
3
4
5
6
7
8
9
10
11
# 重新加载 service unit
systemctl daemon-reload

# systemd运行redis服务
systemctl start redis

# 查看运行状态
systemctl status redis

# 开机启动
systemctl enable redis