通过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