redis的编译安装

本操作基于 CentOS7.6操作系统
redis版本为 6.0.5

关闭防火墙以及selinux

关闭防火墙

iptables -F #临时关闭防火墙
systemctl stop firewalld # 关闭防火墙
systemctl disable firewalld # 开机防火墙不启动

关闭selinux

临时关闭

setenforce 0

永久关闭

vim /etc/selinux/conf

SELINUX=enforcing改为SELINUX=disabled

安装编译工具包

CentOS有一套很好的编译工具包,只需要安装即可编译redis
安装命令:

yum groupinstall "Development Tools"

下载redis并编译安装

我使用的版本是6.0.5 ,下面是下载地址:
https://redis.io/download

下载完毕,上传到服务器上
解压:

tar -xvf redis-6.0.5.tar.gz

解压完毕,进入解压后的文件夹,进行编译安装
我习惯性安装在/app 下,如果该目录不存在,可以新建

cd ./redis-6.0.5
make PREFIX=/app/redis install

没有完成编译,报错了,centos7 默认的 gcc 版本为:4.8.5 < 5.3 无法编译
所以安装如下内容:

yum install 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 #  临时有效,退出 shell 或重启会恢复原 gcc 版本

然后在执行编译:

make PREFIX=/app/redis install

编译安装完成后,在/app/redis 中只有一个bin目录,里面有几个可执行文件:

.
├── bin
│   ├── redis-benchmark
│   ├── redis-check-aof
│   ├── redis-check-rdb
│   ├── redis-cli
│   ├── redis-sentinel -> redis-server
│   └── redis-server

然后在/app/redis/下创建我需要的目录,如下:

.
├── bin
│   ├── redis-benchmark
│   ├── redis-check-aof
│   ├── redis-check-rdb
│   ├── redis-cli
│   ├── redis-sentinel -> redis-server
│   └── redis-server
├── conf
├── data
├── logs

然后将解压的redis目录中的两个配置文件拷贝到安装目录的conf下面

.
├── bin
│   ├── redis-benchmark
│   ├── redis-check-aof
│   ├── redis-check-rdb
│   ├── redis-cli
│   ├── redis-sentinel -> redis-server
│   └── redis-server
├── conf
│   ├── redis.conf
│   └── sentinel.conf
├── data
├── logs

然后备份一下原配置文件,然后对配置文件进行修改,修改完毕的配置文件如下:

cp ~/redis-6.0.5/{redis.conf,sentinel.conf}    /app/redis/conf
bind 20.58.32.11
protected-mode no
port 16379
tcp-backlog 511
daemonize no
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile "/app/redis/logs/redis-server.log"
always-show-logo yes
dir /app/redis/data

appendonly no
appendfilename "appendonly.aof"
appendfsync everysec

配置守护进程并启动

我喜欢使用supervisor作为守护进程在管理应用,所以在此,使用该软件来管理redis的开机启动等
安装supervisor

yum install -y supervisor

vim /etc/supervisord.conf 
cd /etc/supervisord.d/

修改主配置/etc/supervisord.conf

[unix_http_server]
file=/var/run/supervisor/supervisor.sock   ; (the path to the socket file)


[supervisord]
logfile=/var/log/supervisor/supervisord.log  ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=50MB       ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=10          ; (num of main logfile rotation backups;default 10)
loglevel=info               ; (log level;default info; others: debug,warn,trace)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
nodaemon=false              ; (start in foreground if true;default false)
minfds=1024                 ; (min. avail startup file descriptors;default 1024)
minprocs=200                ; (min. avail process descriptors;default 200)


[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///var/run/supervisor/supervisor.sock ; use a unix:// URL  for a unix socket


[include]
files = supervisord.d/*.ini

添加redis的配置

cd  /etc/supervisord.d/
vim redis.ini

内容如下:

[program:redis]
command=/app/redis/bin/redis-server /app/redis/conf/redis.conf  ; 程序启动命令
autostart=true       ; 在supervisord启动的时候也自动启动
startsecs=10         ; 启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒
autorestart=true     ; 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启
startretries=3       ; 启动失败自动重试次数,默认是3
user=root          ; 用哪个用户启动进程,默认是root
priority=999         ; 进程启动优先级,默认999,值小的优先启动
redirect_stderr=true ; 把stderr重定向到stdout,默认false
stdout_logfile_maxbytes=20MB  ; stdout 日志文件大小,默认50MB
stdout_logfile_backups = 20   ; stdout 日志文件备份数,默认是10
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stdout_logfile=/app/redis/logs/redis_supervisor.log
stopasgroup=false     ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=false     ;默认为false,向进程组发送kill信号,包括子进程

然后在~/.bashrc中添加alias,这样,我们在执行supervisorctl命令时,就不用在后面跟上配置文件

vim  ~/.bashrc

添加如下配置

export REDIS_HOME='/app/redis'  # redis命令的环境变量
export PATH=$REDIS_HOME/bin/:$PATH
# 添加alias
alias supervisorctl="sudo supervisorctl -c /etc/supervisord.conf"

然后从新加载配置文件

source ~/.bashrc

启动supervisor,redis会跟随启动

systemctl start supervisord
systemctl enable supervisord # 设置supervisor开机启动

下面是查看redis状态和启动重启redis的命令

supervisorctl status
supervisorctl restart redis
supervisorctl start redis
posted @ 2020-06-30 09:57  Linuxbugs  阅读(3428)  评论(0编辑  收藏  举报