当前位置 IIS7博客首页 > redis的编译安装 最大化 缩小

    redis的编译安装

    作者:Linuxbugs 栏目:未分类 时间:2020-06-30 10:02:34

    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