美文网首页
Centos7安装编译安装redis且开机自启动

Centos7安装编译安装redis且开机自启动

作者: liurongming | 来源:发表于2021-12-22 15:02 被阅读0次

    Centos7编译安装redis

    一、准备环境

    1、操作系统:CentOS Linux release 7.4.1708 (Core)
    2、必要工具:

    # 安装并升级GCC
    yum install gcc-c++ -y
    
    # 查看版本:
    gcc -v
    gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
    
    # CentOS7安装有默认GCC环境,默认4.8.5版本!编译redis-6.x,要求C5.3以上编译器,否则会遇到大量的错误。主要原因是从 redis-6.x # 开始的多线程代码依赖C标准库中的新增类型_Atomic。但是注意gcc从 4.9 版本才开始正式和完整地支持stdatomic(gcc-4.8.5部分支
    # 持)。centos7默认的gcc版本为:4.8.5 < 5.3无法编译。
    # 升级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
    
    # 验证:gcc -v
    gcc -v
    gcc version 9.3.1 20200408 (Red Hat 9.3.1-2) (GCC)0
    
    # 可选安装必要工具
    yum -y install gcc gcc-c++ cmake make autoconf libtool-ltdl-devel gd-devel freetype-devel libxml2-devel libjpeg-devel libpng-devel openssl-devel curl-devel bison patch unzip libmcrypt-devel libmhash-devel libevent-devel ncurses-devel mlocate flex libaio-devel ntp openldap-devel libcurl-devel perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker iotop bzip2* ntpdate wget zip htop vim iftop nc nmap dstat sysstat lrzsz screen lftp curl strace lsof telnet tree tcpdump nmon busybox screen zlib zlib-devel glib glib-devel bzip2-devel pcre-devel openssl python-devel readline-devel tk-devel libselinux-python vim net-snmp net-snmp-devel net-snmp-utils nfs-utils rpcbind man glibc glibc-devel glib2 glib2-devel e2fsprogs-devel libxslt libxslt-devel openldap-clients openldap-servers parted
    

    二、原生方式安装

    # 官网下载安装包
    cd /usr/local/src &&  mkdir redis
    cd /usr/local/src/redis
    
    # 下载稳定版本源码:
    https://download.redis.io/releases/redis-6.2.4.tar.gz
    cd redis-6.2.4/
    # 编译
    make
    # 指定目录安装:
    make install PREFIX=/usr/local/redis
    
    # 配置文件
    # 进入bin文件夹所在目录新建conf文件夹:
    cd /usr/local/redis/bin
    mkdir -p /usr/local/redis/conf
    
    # 复制配置文件:
    cp redis-6.2.0/redis.conf conf/
    
    # 配置redis
    vim conf/redis.conf
    # 找到daemonize no 改成 daemonize yes
    # 大约在250行前后
    
    # 启动redis
    ./bin/redis-server conf/redis.conf
    
    # 查看redis进程:
    ps -ef | grep redis
    
    # 客户端连接:
    # 关闭连接:SHUTDOWN
    # 退出服务:exit
    ./bin/redis-cli -p 6379
    
    # 如果已开启防火墙:
    # 建议都关闭防火墙同时关闭selinux
    firewall-cmd --zone=public --add-port=6379/tcp --permanent
    firewall-cmd --reload
    
    # 配置远程连接
    ./bin/redis-cli -h localhost  -p  6379
    ./redis-cli -h  IP  -p  6379
    
    # 再次编辑配置文件
    # redis不建议开放公网
    # 仅开放内网能使用即可
    vim conf/redis.conf
    bind 0.0.0.0 
    protected-mode no
    
    # 重启服务器
    ps -ef|grep redis 
    kill -9 redis进程
    ./bin/redis-server conf/redis.conf
    
    # 设置打印日志
    # redis默认日志为在控制台打印
    # 保存后退出vi, 重启redis服务,即可。 
    vim /etc/redis/redis.conf
    # 指定日志路径
    # 没有挂数据盘:
    logfile "/var/log/redis/redis.log"
    # 挂数据盘使用:logfile "/data/logs/redis/redis.log"
    mkdir -p /var/log/redis/
    cd /var/log/redis/ && touch redis.log
    
    # 设置开机启动
    cd /opt/usr/redis/redis-6.2.4/utils
    # 执行install_server
    # 依照实际路径进行配置
    ./install_server.sh
    
    # 查看状态
    systemctl status redis_6379
    # 启动
    systemctl start redis_6379
    # 设置开机自启动
    systemctl enable redis_6379
    
    # 检查开机自启动项
    chkconfig --list
    systemctl list-unit-files | grep enable
    
    # 配置密码
    vim /etc/redis.conf
    # 去掉前面的注释,并修改为所需要的密码:
    # requirepass foobared
    
    # 重启服务
    systemctl restart redis_6379
    # 或者
    /path/to/redis/bin/redis-cli  shutdown
    /path/to/redis/redis-server /etc/redis.conf
    
    # 连接: 用redis-cli
    /path/to/redis/bin/redis-cli [-h localhost -p 6379 ]
    

    三、docker 方式安装

    # 安装docker环境,省略
    # docker 安装 
    docker search redis
    
    # 获取 redis 镜像
    # 或docker search redis 查看镜像来源
    docker pull redis
    
    #查看镜像
    docker images
    mkdir -p /usr/local/docker/redis
    touch /usr/local/docker/redis/redis.conf
    vim /usr/local/docker/redis/redis.conf
    appendonly yes
    
    # 启动redis
    docker run -p 6379:6379 --name redis -v /usr/local/docker/redis/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes
    
    # 命令解释说明:
    -p 6379:6379 端口映射:前表示主机部分,:后表示容器部分。
    --name myredis  指定该容器名称,查看和进行操作都比较方便。
    -v 挂载目录,规则与端口映射相同。
    -d redis 表示后台启动redis
    redis-server /etc/redis/redis.conf  以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录/usr/local/docker/redis/redis.conf
    appendonly yes 开启redis 持久化
    
    # 使用docker ps 查看redis已经运行了
    # 使用 docker exec -it redis /bin/bash进入redis
    # 使用 redis-cli 可以测试连接
    
    # 设置开机启动redis
    docker container update --restart=always 容器名字
    docker  update --restart=always aa1c2b3a996a
    
    # docker参数--restart=always
    # 创建容器时没有添加参数  --restart=always ,导致的后果是:当 Docker 重启时,容器未能自动启动。
    # --restart=always : 开机启动,失败也会一直重启;
    # --restart=on-failure:10 : 表示最多重启10次
    # –restart具体参数值详细信息:
    #       no -  容器退出时,不重启容器;
    #       on-failure - 只有在非0状态退出时才从新启动容器;
    #       always - 无论退出状态是如何,都重启容器;
    
    # 如果是已经在运行中的容器要加上该参数:
    docker  update --restart=always  容器名字或者容器ID
    # 想立即生效就重启docker 不然就等到它下次重启自动生效。
    systemctl restart docker
    

    四、安装redis-4.0.11

    此前版本,可能与新版本安装方式不一致,生产环境建议安装旧版稳定版本。

    # 官网下载安装包
    cd /usr/local/src &&  mkdir redis
    cd /usr/local/src/redis
    wget http://download.redis.io/releases/redis-4.0.11.tar.gz
    
    # 检查包签名
    # md5sum redis-4.0.11.tar.gz 
    e62d3793f86a6a0021609c9f905cb960  redis-4.0.11.tar.gz
    
    # 查看编译器版本
    gcc -v
    gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
    
    # 解压安装
    tar zxvf redis-4.0.11.tar.gz
    cd redis-4.0.11
    # 编译
    make
    # 指定目录安装:
    make install PREFIX=/usr/local/redis
    
    # 配置文件
    # 进入bin文件夹所在目录新建conf文件夹:
    cd /usr/local/redis/bin
    mkdir -p /usr/local/redis/conf
    cp -p /usr/local/src/redis/redis-4.0.11/redis.conf ./
    
    # 配置redis
    vim conf/redis.conf
    # 130行
    # bind 改成内网IP
    # 暴露公网改成 0.0.0.0(危险)
    # 一般不会暴露出去
    bind 10.104.16.1 127.0.0.1
    
    # 找到daemonize no 改成 
    daemonize yes
    # 在136行
    # protected-mode 改为 no
    protected-mode no
    
    # 186行
    databases 256
    
    # 配置密码
    # 去掉前面的注释,并修改为所需要的密码:
    # 500行,打开注释改为:密码
    # requirepass foobared
    # 随机生成:cat /dev/urandom | LC_ALL=C tr -dc "[:alnum:]" | fold -w 10 |head -10
     requirepass password
     
     # 设置打印日志
    # redis默认日志为在控制台打印
    # 指定日志路径
    # 没有挂数据盘:
    logfile "/var/log/redis/redis.log"
    # 挂数据盘使用:logfile "/data/logs/redis/redis.log"
    mkdir -p /var/log/redis/
    cd /var/log/redis/ && touch redis.log
    
    # 内核优化
    # net.core.somaxconn= 1024
    # vm.overcommit_memory = 1
    vim /etc/sysctl.conf
    net.ipv4.ip_forward = 0
    net.ipv4.conf.default.rp_filter = 1
    net.ipv4.conf.default.accept_source_route = 0
    net.ipv4.tcp_keepalive_time = 300
    net.ipv4.tcp_syncookies = 1
    net.ipv4.tcp_timestamps = 0
    net.ipv4.tcp_fin_timeout = 15
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_synack_retries = 1
    net.ipv4.tcp_syn_retries = 1
    net.ipv4.ip_local_port_range = 1024 65535
    net.ipv4.tcp_max_syn_backlog = 8192
    net.ipv4.tcp_max_tw_buckets = 20000
    net.ipv4.tcp_mem = 94500000 915000000 927000000
    net.ipv4.tcp_max_orphans = 3276800
    net.core.somaxconn= 1024
    vm.overcommit_memory = 1
    
    
    # 立即生效 
    sysctl -p
    
    # 优化
    # vi /etc/rc.d/rc.local
    # echo never > /sys/kernel/mm/transparent_hugepage/enabled
    chmod +x /etc/rc.d/rc.local
    if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
       echo never > /sys/kernel/mm/transparent_hugepage/enabled
    fi
    
     # 启动redis
    ./bin/redis-server conf/redis.conf
    
    # 查看redis进程:
    ps -ef | grep redis
    
    # 客户端连接:
    # 关闭连接:SHUTDOWN
    # 退出服务:exit
    ./bin/redis-cli -p 6379
    
    # 如果已开启防火墙:
    # 建议都关闭防火墙同时关闭selinux
    firewall-cmd --zone=public --add-port=6379/tcp --permanent
    firewall-cmd --reload
    
    # 配置远程连接
    ./bin/redis-cli -h localhost  -p  6379
    ./redis-cli -h  IP  -p  6379
    
    # 设置开机启动
    cd /usr/local/src/redis/redis-4.0.11/utils
    # 执行install_server
    # 依照实际路径进行配置
    ./install_server.sh
    
    # 选择配置参考
    Selected config:
    Port           : 6379
    Config file    : /etc/redis/redis.conf
    Log file       : /var/log/redis/redis.log
    Data dir       : /data/redis/db
    Executable     : /usr/local/redis/bin/redis-server
    
    # ps -ef 查看 kill 手动进程
    # 再次通过systemctl启动
    
    # 查看状态
    systemctl status redis_6379.service
    # 启动
    systemctl start redis_6379.service
    
    # 检查开机自启动项
    chkconfig --list
    
    # 在启动文件中,加入密码
    # 在echo "Stopping ..."下
    # 不然加入了密码无法停止
    vim /etc/init.d/redis_6379
    $CLIEXEC -a "password" -p $REDISPORT shutdown
    # 重新加载
    systemctl daemon-reload
    

    相关文章

      网友评论

          本文标题:Centos7安装编译安装redis且开机自启动

          本文链接:https://www.haomeiwen.com/subject/rsvqqrtx.html