1、前言
今天帮朋友处理了一个服务器的漏洞修复,过程遇到了一些坑,特记录分享给大家,朋友原服务器默认yum源安装的gcc 是4.8.5 ,默认安装redis是 3.2.12,今天被机构检测发现了一些安全问题(下图),其实这些问题在redis后续版本中均已修复,最终决定直接升级最新版redis,即Redis7.0.10
2、升级GCC
升级新版redis需要更高级的gcc支持,这里我们就选择升级gcc9
#更新源
yum update
#安装scl源
yum install -y centos-release-scl
#安装gcc工具链
yum install -y devtoolset-9-toolchain
#临时覆盖旧版本gcc引用,针对本次会话有效
scl enable devtoolset-9 bash
#为了避免需要再次激活devtoolset-9使其长期有效
echo "source/opt/rh/devtoolset-9/enable">>/etc/profile
#查看gcc版本
gcc -v
出现gcc9版本号则升级成功
3、下载编译Redis
如果已经使用yum安装了低版本redis的,可以先删除redis
yum remove redis
登录Redis官网下载页 https://redis.io/download/#redis-downloads 下拉找到最新稳定版的固定连接
这里顺便附上官方各安装类型文档 https://redis.io/docs/getting-started/ 方便大家查阅
#创建下载包存放目录(自行存放自己想要的目录)
mkdir -p /usr/tools/redis
#切换进入目录
cd /usr/tools/redis/
#使用wget下载压缩包
wget https://download.redis.io/redis-stable.tar.gz
#解压到 /usr/local/目录,解压出来的文件夹为 redis-stable
tar -xzf redis-stable.tar.gz -C /usr/local/
#切换进入目录
cd /usr/local/redis-stable
#编译
make install
按照官方说明 make命令编译 Redis 源码,会在 redis-stable/src 目录下生成 redis-server 和 redis-cli 可执行文件,如果需要安装到/usr/local/bin则运行make install(实际上该命令即会在src生成同时也在/usr/local/bin生成)
4、配置Redis
按照官方文档分别构建Redis配置文件目录和数据目录
构建目录如下
mkdir /etc/redis
mkdir /var/redis
配置开机启动脚本redis_6379
#切换目录
cd /usr/local/redis-stable/
cp utils/redis_init_script /etc/init.d/redis_6379
#复制配置文件至/etc/redis/
cp redis.conf /etc/redis/6379.conf
#在/var/redis中创建一个目录,作为Redis实例的数据和工作目录
mkdir /var/redis/6379
修改6379.conf配置文件
vim /etc/redis/6379.conf
由于redis配置文件内容比较多,可以在非编辑模式下输入 ngg 跳转到第n行(n代表行号),例如跳转到第100行就 100gg
- 修改绑定:第87行 (87gg)
# 原 bind 127.0.0.1 -::1 修改为
bind 0.0.0.0
#很多人会误解这个bind是配置允许外部访问的IP地址
#其实不然0.0.0.0 在服务器的环境中,指的就是服务器上所有的ipv4地址
#如果机器上有2个ip 192.168.1.18 和 100.1.2.25
#redis在配置中,如果配置监听在 0.0.0.0 这个地址上,这2个ip地址都是能够连接到这个redis服务的包括127.0.0.1
- 开启守护进程:第309行 (309gg)
daemonize yes
- 设置日志目录:第354行 (354gg)
logfile /var/log/redis_6379.log
- 修改数据目录:第504行 (504gg)
dir /var/redis/6379
- 修改密码:第1034行 (1034gg)
#默认无密码,设置密码关闭redis的时候会报错见下文讲解
requirepass 你的密码
设置开机启动
按照官方的文档操作,发现在Centos系统下会报错,其它Linux可以采用,如Ubuntu
sudo update-rc.d redis_6379 defaults
Centos采用这个方法
#rc.local 文件里写入执行脚本的指令
echo "sudo /etc/init.d/redis_6379 start &" >> /etc/rc.local
#设置权限
chmod +x /etc/rc.d/rc.local
5、启动Redis
#启动
sudo /etc/init.d/redis_6379 start
#关闭
sudo /etc/init.d/redis_6379 stop
在上述redis配置中博主提到了如果设置了密码后stop会报错出现:
(error) NOAUTH Authentication required.
Waiting for Redis to shutdown
Waiting for Redis to shutdown
Waiting for Redis to shutdown
另外还有注意的:当使用杀进程的时候强制关闭redis 如:使用 kill -9 pid 的方式再次启动会报pid文件存在的错误,使用 rm -rf 命令强制删除redis_6379.pid
rm -rf /var/run/redis_6379.pid
如果你设置了密码可以修改启动脚本文件进行解决
第38行
vim /etc/init.d/redis_6379
#修改为
$CLIEXEC -p $REDISPORT -a 你的密码 shutdown
6、总结
以上就是升级GCC + 最新稳定版Redis7.0.10的全部记录,分享出来也希望能够帮助到大家~ 如果你觉得有用请点点赞、加加关注,谢谢!