Centos7 如何安装 Redis 以及常见错误解决
Redis 作为高性能的键值对数据库,在缓存、消息队列等场景中应用广泛。
最近在 Centos7 系统部署 Redis 时,踩了不少坑,记录整理了这份安装教程,从安装到验证再到错误解决,全程干货,希望对大家有帮助。
一、安装准备
安装 Redis 前需要确保系统依赖齐全,避免编译时出错。首先更新系统软件包,同时安装编译所需的依赖工具。
# 更新系统软件包
yum update -y
# 安装编译依赖(gcc、make等,Redis 源码编译需要)
yum install -y gcc gcc-c++ make这里要注意,Centos7 默认的 gcc 版本可能较低,若后续编译出现版本相关错误,可参考下文常见错误部分的版本升级方法。
二、下载 Redis 源码包
推荐从 Redis 官方官网获取稳定版本,这里以 6.2.6 版本(长期支持版)为例。
通过 wget 命令直接下载到服务器,若没有 wget 工具,可先执行 yum install -y wget 安装。
# 进入/usr/local目录(通常用于存放软件安装包)
cd /usr/local
# 下载 Redis 6.2.6 源码包
wget https://download.redis.io/releases/redis-6.2.6.tar.gz
# 解压源码包
tar -zxvf redis-6.2.6.tar.gz
# 进入解压后的目录
cd redis-6.2.6其他版本到 Index of /releases/ 查看
三、编译与安装
Redis 是源码分发的软件,需要编译后才能安装。
执行 make 命令进行编译,编译完成后执行 make install 安装到默认目录。
# 编译源码
make
# 安装到默认目录(默认安装到/usr/local/bin)
make install出现以下日志则编译成功
Hint: It's a good idea to run 'make test' 😉
make[1]: Leaving directory `redis/src'安装完成后,可在 /usr/local/bin 目录下看到 redis-server(Redis 服务端)、redis-cli(Redis 客户端)等可执行文件,说明安装成功。
四、配置 Redis 服务
为了方便管理 Redis 服务,建议创建配置文件目录和数据存储目录,并修改默认配置。
# 创建配置文件目录和数据存储目录
mkdir -p /etc/redis /var/redis/data
# 复制默认配置文件到自定义目录,并修改
cp /usr/local/redis-6.2.6/redis.conf /etc/redis/redis.conf
# 编辑配置文件(使用vi编辑器,按i进入编辑模式,编辑完成后按Esc+:+wq保存退出)
vi /etc/redis/redis.conf需要修改的关键配置项如下(按 / 键搜索配置项快速定位):
-
daemonize:默认 no,改为 yes,让 Redis 以守护进程模式运行(后台运行)。
-
pidfile:默认 /var/run/redis_6379.pid,可改为 /var/redis/redis.pid(与数据目录统一管理)。
-
dir:默认 ./,改为 /var/redis/data(数据存储目录,避免默认目录数据丢失)。
-
bind:默认 127.0.0.1,若需要远程访问,可改为 0.0.0.0(允许所有IP访问,生产环境建议指定具体IP)。
-
requirepass:默认注释,添加 requirepass 你的密码(设置Redis访问密码,提高安全性)。
五、启动 Redis 服务并设置开机自启
通过配置文件启动 Redis 服务,然后创建系统服务脚本,实现开机自启。
# 通过配置文件启动 Redis
redis-server /etc/redis/redis.conf
# 验证服务是否启动成功(查看进程或端口)
ps -ef | grep redis
netstat -tuln | grep 6379(若提示netstat未找到,执行yum install -y net-tools安装)
# 创建系统服务脚本
vi /usr/lib/systemd/system/redis.service在服务脚本中添加以下内容:
[Unit]
Description=Redis Server
After=network.target
[Service]
Type=forking
PIDFile=/var/redis/redis.pid
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli -a 你的密码 shutdown
Restart=always
[Install]
WantedBy=multi-user.target保存后,执行以下命令设置开机自启并管理服务:
# 重新加载系统服务
systemctl daemon-reload
# 设置开机自启
systemctl enable redis
# 启动/停止/重启 Redis 服务
systemctl start redis
systemctl stop redis
systemctl restart redis
# 查看服务状态
systemctl status redis六、验证
查看端口是否启用:
netstat ltnp | grep 6379或者查看进程:
ps -ef | grep redis或者启动客户端连接测试
./redis-cli
127.0.0.1:6379> set myname 'fiveyoboy'
ok
127.0.0.1:6379> get myname
******七、开放远程连接
开放防火墙端口
firewalld
firewall-cmd --add-port=6379/tcp --permanent
firewall-cmd --reloadiptables
# 开放 TCP 6379 端口
sudo iptables -A INPUT -p tcp --dport 6379 -j ACCEPT
# 保存规则(根据系统选择)
sudo iptables-save | sudo tee /etc/sysconfig/iptables # CentOS 6
sudo netfilter-persistent save # Debian/Ubuntu
# 重启服务(如有必要)
sudo systemctl restart iptables八、设置密码(选)
生产环境推荐使用密码
vim /etc/redis/redis.conf
# 找到
# requirepass foobared
# 注释前面的 # 然后修改 foobared 为你的密码
# 重启就可以常见问题
Q1. 编译时提示“gcc: error: ./src/jemalloc.h: No such file or directory”
原因:Redis 依赖 jemalloc 内存分配器,编译时未正确加载。
解决:执行 make distclean 清理之前的编译残留,然后重新编译。
cd /usr/local/redis-6.2.6
make distclean
makeQ2. 远程连接失败
出现类似错误:
Connection: Cancel running commands Connection: Cancel running commands Connection: Disconnect on error: Connection error: Connection refused Connection: CentOS7-******-redis5.0.7 > connection failed Connection: Cancel running commands Connection: Cancel running commands Connection: Cancel running commands Connection: Cancel running commands Connection: Disconnect on error: Connection error: Connection refused
原因:
- redis3.2+之后设置了保护模式 protected-mode 默认是yes,即开启。设置不允许外部网络连接redis服务**
#1. 关闭保护模式+设置ip访问
cd /home/redis
vi redis-conf
/ protected-mode
#修改 protected-mode yes 为protected-mode no
#修改 bind 127.0.0.1 为 bind 0.0.0.0
#保存即可-
修改 Redis 配置文件的 bind 为 0.0.0.0(允许所有IP访问),并重启服务。
-
开放 6379 端口(Centos7 防火墙为 firewalld)
# 开放 6379 端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent
# 重新加载防火墙规则
firewall-cmd --reload
# 查看已开放端口
firewall-cmd --zone=public --list-portsQ3. 启动服务时提示“Job for redis.service failed because the control process exited with error code”
原因:服务脚本配置错误,或 Redis 配置文件有误。
解决:
-
查看服务启动日志,定位具体错误:journalctl -u redis -xe。
-
检查服务脚本中的 PIDFile、ExecStart、ExecStop 路径是否正确,尤其是密码是否与 Redis 配置一致。
-
直接通过配置文件启动,验证配置文件是否正常:redis-server /etc/redis/redis.conf,若有错误会直接输出。
总结
Centos7 安装 Redis 核心是源码编译、配置文件优化和系统服务设置,新手容易在依赖缺失、配置错误和防火墙问题上踩坑,只要按照步骤逐步操作,结合常见错误的解决办法,基本都能顺利完成安装。
如果在实操中遇到其他问题,欢迎在评论区交流。
版权声明
未经授权,禁止转载本文章。
如需转载请保留原文链接并注明出处。即视为默认获得授权。
未保留原文链接未注明出处或删除链接将视为侵权,必追究法律责任!
本文原文链接: https://fiveyoboy.com/articles/centos-7-install-redis/
备用原文链接: https://blog.fiveyoboy.com/articles/centos-7-install-redis/