Skip to content

CentOS 离线编译安装 Redis

此文档适用于联网主机和离线主机为同一操作系统架构和版本的情况。

一、离线环境准备(联网主机操作)

下载 Redis 源码包

下载地址:https://download.redis.io/releases/

shell
# 如:下载 redis-8.2.1.tar.gz 到 /opt/redis 目录
curl -# -o /opt/redis/redis-8.2.1.tar.gz --create-dirs https://download.redis.io/releases/redis-8.2.1.tar.gz

# 或
wget -P /opt/redis https://download.redis.io/releases/redis-8.2.1.tar.gz

下载编译依赖包

获取编译所需的所有 .deb 依赖包:

shell
# 依赖目录 
mkdir -p /opt/redis/rpms && cd /opt/redis/rpms

# 开放目录权限(解决 _apt 用户无法访问错误)
chmod -R 777 /opt/redis

获取基本的编译环境,包括 gcc make glibc-devel tcl 等核心工具。

shell
# 检查系统上是否有这些东西(如:gcc --version)
gcc -v
make -v

# glibc-devel(OpenEuler 上默认有)
ldd -v

# 下载基本的编译环境软件包及其所有依赖:
dnf download --resolve gcc-c++ make tcl

打包传输

/opt/redis 目录压缩:

bash
cd /opt

# 打包 redis 目录(包含 redis/ 目录)
tar -czvf redis_offline.tar.gz redis/

然后复制到离线机器。

二、离线安装步骤(目标主机操作)

安装编译依赖

bash
cd /home

# 解压到指定目录(-C 命令指定的目录要通过 mkdir -p 先创建出来)
tar -xvf redis_offline.tar.gz -C /opt

cd /opt/redis/rpms

# 安装编译环境软件包及其所有依赖。使用 dnf localinstall 或 rpm -ivh 安装
#(推荐)
dnf localinstall -y *.rpm

# 或
rpm -ivh *.rpm
  • dnf localinstall 会尝试处理依赖关系(如果所有依赖包都在当前目录下)。
  • rpm -ivh 直接安装,但如果遇到缺少的依赖会报错,需要你手动按依赖顺序安装。

安装 Redis

shell
#进入到压缩包所在目录
cd /home/redis

# 解压
tar -xvf redis-8.2.1.tar.gz

cd redis-8.2.1

# 使用 make distclean 先清除所有生成的文件,防止刚开未安装 gcc 等情况下执行 make 存在残留文件导致报错
# make distclean

# make 编译的过程有点长,耐心等待完成。
make

# 执行 make test 测试一下是否有需要的依赖包未安装。
# make test
# 如果有报错则根据提示信息安装依赖包。

cd src

# 执行 make install 安装命令,并指定安装路径
make install PREFIX=/usr/local/redis

修改 redis.conf 配置

shell
cd /usr/local/redis/bin

# 从解压的包里面复制配置文件 redis.conf 到 /usr/local/redis/bin/ 目录下
cp /home/redis/redis-8.2.1/redis.conf redis.conf

vi redis.conf

redis.conf 开发环境

shell
# 下面这一行最前面加上 # , 意思是注释掉这一行。解除 redis 只能本机访问的限制。
# 这个指明,只能在本地(运行的节点)访问redis
# 如果改为其他的,比如 bind * -::* 或者 bind *0.0.0.0 这都全网可访问了
# 一般开发环境需要允许外网访问 redis,因此,bind 要开放(注释掉或修改为 *0.0.0.0)
# 并且关闭保护模式,即 protected-mode 设置为 no
# bind 127.0.0.1 -::1

# protected-mode 从 yes 修改为 no。关闭保护模式。
# 保护模式是一个避免你在互联网(外网)访问redis的机制。
# 当启用保护模式,而且没有密码时,服务器只接受来自IPv4地址(127.0.0.1)、IPv6地址(::1)或Unix套接字本地连接。(没密码+保护模式启动=本地访问)
# 默认是 yes 开启的。(如果你要从外部访问它,甚至没有认证(不设置密码,不绑定可访问ip)的去访问, 那就弄成 no 自己负责!)
protected-mode no

# 端口号可以使用默认的 6379,也可以修改。
port 6379

# daemonize 默认为 no
# daemonize 从 no 修改为 yes。意思是否要用守护线程的方式启动。
# daemonize:yes:
# redis采用的是单进程多线程的模式。当redis.conf中选项daemonize设置成yes时,代表开启守护进程模式。
# 在该模式下,redis会在后台运行,并将进程pid号写入至redis.conf选项pidfile设置的文件中,此时redis将一直运行,除非手动kill该进程。
# daemonize:no:
# 当daemonize选项设置成no时,当前界面将进入redis的命令行界面,exit强制退出或者关闭连接工具(putty,xshell等)都会导致redis进程退出。
daemonize yes

# 如果需要密码,则可以设置一个你想要的密码。
# 开发环境开放了外网连接,为了安全起见,凡开放外网连接,就需要设置密码
requirepass 123456

# 设置最大内存
maxmemory 1GB

redis.conf 生产环境

shell
# 默认值,无需修改。现在只能本机访问。
bind 127.0.0.1 -::1

# 默认值,无需修改。现在只能本机访问。
protected-mode yes

# 端口号可以使用默认的 6379,也可以修改。
port 6379

# daemonize 从 no 修改为 yes。意思是否要用守护线程的方式启动。
daemonize yes

# 限制了只能本机访问,可以不需要密码。
# 如果需要密码,则去掉这个前面的 #,并设置一个你想要的密码。
# requirepass 123456

# 设置最大内存
maxmemory 1GB

指定配置文件,启动

shell
./redis-server redis.conf

# 查看进程
ps -ef | grep redis

# 本机连接测试
./redis-cli -h 127.0.0.1 -p 6379 -n 1

127.0.0.1:6379[1]>

# 这里表示本地连接成功,输入 exit 即可退出 redis 命令界面。
127.0.0.1:6379[1]> exit

# 停止服务
./redis-cli shutdown

# 本机连接 - 带密码
# ./redis-cli -h 127.0.0.1 -a '123456' -p 6379 -n 1

设置开机自动启动

shell
# 创建一个 redis.service 文件
vi /usr/lib/systemd/system/redis.service
# 进入编辑模式后,输入下面一段内容,并保存,退出。
shell
[Unit]
Description=redis-server
After=network.target

[Service]
Type=forking
# 如果你的安装路径不在 /usr/local/redis 则需要对应修改路径。
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf
PrivateTmp=true

[Install]
WantedBy=multi-user.target

然后设置开机自动启动

shell
# 开机自动启动
systemctl enable redis.service

启动、停止、重启服务

shell
systemctl daemon-reload
# 开机自动启动
systemctl enable redis.service
# 启动redis服务
systemctl start redis.service
# 查看服务状态
systemctl status redis.service
# 停止服务
systemctl stop redis.service
# 取消开机自动启动(卸载服务)
systemctl disable redis.service