1.下载redis 7.0源码后解压缩备用
https://redis.io/download/
2.下载最新版本的config.guess和config.sub
redis 用到了jemalloc库,如果不更新redis 7源码自带的config.guess和config.sub文件,会在编译redis 源码的过程中提示include jemalloc的头文件失败(zmalloc.h:50:31: fatal error: jemalloc/jemalloc.h: No such file or directory),之前有人下载最新版的jemalloc自己进行编译,其实没有必要,redis源码的deps路径下面已经带了jemalloc库的源码了,核心问题是提供正确的config.guess和config.sub文件就可以了,这两个文件可以从这里下载得到:
$ wget -O config.guess 'https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD'
$ wget -O config.sub 'https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD'
将这两个文件放到redis 7源码/deps/jemalloc/build-aux路径下覆盖原有的两个同名文件。
3.你如果之前执行过make 尝试编译过redis源码,需要先清理一下: make distclean,如果没有编译过,回到redis源码目录,直接make就可以编译成功了。
make install 安装,然后可以启动一下看看:
4.将redis 7配置为系统服务
make install
mkdir -p /etc/redis/conf
cp ./redis.conf /etc/redis/conf
vi /etc/redis/conf/redis.conf
#修改监听ip
bind 0.0.0.0 -::*
#修改dir ./为 dir /var/lib/redis 并记好这个路径
dir /var/lib/redis
#设置为systemd启动
supervised systemd
#创建为系统服务
vi /lib/systemd/system/redis.service
复制以下内容进去
Description=Redis In-Memory Data Store
After=network.target
[Service]
User=redis
Group=redis
Environment=statedir=/run/redis
PermissionsStartOnly=true
PIDFile=/run/redis/redis.pid
ExecStartPre=/bin/touch /var/log/redis.log
ExecStartPre=/bin/chown redis:redis /var/log/redis.log
ExecStartPre=/bin/mkdir -p ${statedir}
ExecStartPre=/bin/chown -R redis:redis ${statedir}
ExecStart=/usr/local/bin/redis-server /etc/redis/conf/redis.conf --supervised systemd
ExecStop=/usr/local/bin/redis-cli shutdown
ExecReload=/bin/kill -USR2 $MAINPID
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
创建redis用户及redis组,设置redis用户可以访问之前在redis.conf里面配置的dir 路径有访问权限。
sudo adduser --system --group --no-create-home redis
sudo mkdir -p /var/lib/redis
sudo chown redis:redis /var/lib/redis
sudo chmod 770 /var/lib/redis
sudo chown redis:redis -R /etc/redis
systemctl daemon-reload
systemctl enable redis
systemctl start redis