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
转载请标明出处:http://www.cnblogs.com/duzhaoqi/