博文記錄
Centos 2020-12-05 16:13:15 1178 0

通过 CentOS7 编译安装最新的 Redis,解决过程中会遇到编译错误的 gcc 问题,最终手动创建 redis 服务文件,将其设立为系统服务并运行。

安装

如果没有,首先安装 gcc:

yum -y install gcc gcc-c++

参考官网教程 ( https://redis.io/download ),下载最新 Redis,解压后执行编译:

wget https://download.redis.io/releases/redis-6.0.9.tar.gz
tar xzf redis-6.0.9.tar.gz
cd redis-6.0.9
make

错误

过程中会遇到 gcc 库的报错,需要升级 gcc 版本:

yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash

替换完后,继续编译:

make
make  install

此时你可以直接启动 redis 了:

redis-server redis.conf

服务

首先将配置文件复制一份到系统配置中:

cp redis.conf /etc/redis.conf

记得将 redis 配置中的数据存放目录更改一下,否则再次在不同目录启动 redis 时会丢失数据:

将 /etc/redis.conf 中的 dir ./ 更改为 自己实际的目录,如: dir /data/redis

创建 redis 执行用户:

groupadd -g 888 redis && useradd -r -u 888 -g 888 redis -s /sbin/nologin

自己编译的 redis 没有服务文件,需要自己创建:/usr/lib/systemd/system/redis.service

[Unit]
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target

[Service]
ExecStart=/usr/local/bin/redis-server /etc/redis.conf --supervised systemd
ExecStop=/usr/libexec/redis-shutdown
#Type=notify
Type=forking
#TimeoutStartSec=100
#TimeoutStopSec=100
User=redis
Group=redis
#RuntimeDirectory=redis
#RuntimeDirectoryMode=0755
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

配置中的 notify 更改为了 forking,否则 redis 启动时会卡住。

刷新并以服务方式运行 redis:

systemctl daemon-reload
systemctl start redis.service

将 redis 服务设定为开启自启:

systemctl enable redis.service

最后

如果有任何疑难杂症,记得关闭 selinux

临时关闭:

setenforce 0

执行后立即生效。

永久关闭:

vi /etc/selinux/config

将 SELINUX=enforcing 改为 SELINUX=disabled

重启系统生效。

升级 gcc 版本更多参考

https://www.vpser.net/manage/centos-6-upgrade-gcc.html

media iamge
StudioEIM - 冒险者讲习所
0:00