当前位置: 首页 > news >正文

Redis自动部署脚本编写

#!/bin/bash

ck_ok()
{
    if [ $? -ne 0 ]
    then 
        echo "$1 error."
        exit 1
    fi
}

download_redis()
{    
    cd /usr/local/src
    if [ -f redis-7.0.4.tar.gz ]
    then
        echo "当前目录已经存在redis-7.0.4.tar.gz"
        echo "检测MD5"
        file_md5=`md5sum redis-7.0.4.tar.gz | awk '{print $1}'`
        if [ ${file_md5} == '3a2ce76ef8f5ca3cc6463c487f2d532c' ]
        then 
            return 0
        else
            echo "file redis-7.0.4.tar.gz md5 check failed"
            /bin/mv redis-7.0.4.tar.gz redis-7.0.4.tar.gz.old
        fi
    fi
    sudo curl -o redis-7.0.4.tar.gz https://codeload.github.com/redis/redis/tar.gz/refs/tags/7.0.4
    ck_ok " 下载redis"    
}

install_redis()
{
    cd /usr/local/src
    if [ -d redis-7.0.4/ ]
    then
        rm -rf redis-7.0.4/
    fi

    sudo tar zxf redis-7.0.4.tar.gz
    ck_ok "解压redis源码包"
    cd redis-7.0.4/
    sudo make && sudo make PREFIX=/usr/local/redis install
    ck_ok "编译和安装redis"

    sudo mkdir -p /usr/local/redis/{conf,log}
    sudo mkdir -p /data/redis
    if id redis &>/dev/null
    then
        echo "系统已经创建了redis用户,跳过创建"
    else
        echo "创建redis用户"
        sudo useradd -s /sbin/nologin redis
    fi
    ck_ok "创建redis用户"
    sudo chown -R redis /data/redis /usr/local/redis/log
}

config_redis()
{
    echo "配置redis.conf"
    sudo /bin/cp /usr/local/src/redis-7.0.4/redis.conf /usr/local/redis/conf/redis.conf
    sudo sed -i 's/daemonize no/daemonize yes/' /usr/local/redis/conf/redis.conf
    sudo sed -i 's@logfile ""@logfile "/usr/local/redis/log/redis.log"@' /usr/local/redis/conf/redis.conf
    sudo sed -i 's@dir ./@dir /data/redis@' /usr/local/redis/conf/redis.conf
    sudo sed -i 's@pidfile /var/run/redis_6379.pid@pidfile /usr/local/redis/log/redis_6379.pid@' /usr/local/redis/conf/redis.conf
    sudo sed -i '/# requirepass foobared/a requirepass aminglinux.Com' /usr/local/redis/conf/redis.conf

    echo "配置systemd service"
    cat >/lib/systemd/system/redis.service <<EOF
[Unit]
Description=redis
After=network.target
[Service]
User=redis
Type=forking
TimeoutSec=0
PIDFile=/usr/local/redis/log/redis_6379.pid
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
    sudo mv /tmp/redis.service /lib/systemd/system/redis.service
    
    echo "更新内核"
    grep -q 'net.core.somaxconn = 2048' /etc/sysctl.conf || echo "net.core.somaxconn = 2048" || sudo tee -a /etc/sysctl.conf
    grep -q 'vm.overcommit_memory = 1' /etc/sysctl.conf || echo "vm.overcommit_memory = 1" || sudo tee -a /etc/sysctl.conf
    sudo sysctl -p
    sudo systemctl daemon-reload
    sudo systemctl enable redis
    echo "启动redis服务"
    sudo systemctl start redis
    ck_ok "启动redis服务"    
}

download_redis
install_redis
config_redis
 

http://www.lryc.cn/news/268644.html

相关文章:

  • Tinker 环境下数据表的用法
  • 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之线性布局容器Row组件
  • JAVA——JDBC学习
  • Flask 用户信息编辑系统
  • Spring DefaultListableBeanFactory源码分析
  • 关于MySQL、分布式系统、SpringCloud面试题
  • 2023年中职“网络安全”——B-5:网络安全事件响应(Server2216)
  • 【论文解读】Learning based fast H.264 to H.265 transcoding
  • [vue]Echart使用手册
  • 视频人脸识别马赛克处理
  • 2023-12-27 Python PC获取鼠标位置,移动鼠标到相应的位置 定时自动模拟鼠标点击,用于简单测试app用
  • 如何解决服务器CA证书过期的问题
  • 计算机基础面试题总结
  • 【算法练习】leetcode链表算法题合集
  • 2023.12.28每日一题
  • 231227-9步在RHEL8.8配置本地yum源仓库
  • 5. 创建型模式 - 单例模式
  • 机器学习之人工神经网络(Artificial Neural Networks,ANN)
  • GetLastError()详细介绍
  • 【unity3D-粒子系统】粒子系统主模块-Particle System篇
  • Windows搭建FTP服务器教学以及计算机端口介绍
  • 安防视频监控系统EasyCVR实现H.265视频在3秒内起播的注意事项
  • CNN实现对手写字体的迭代
  • docker学习笔记01-安装docker
  • 【《设计模式之美》】如何取舍继承与组合
  • 一步到位:用Python实现PC屏幕截图并自动发送邮件,实现屏幕监控
  • Spring Boot+RocketMQ 实现多实例分布式环境下的事件驱动
  • oracle ORA-01704: string literal too long ORACLE数据库clob类型
  • 微星主板强刷BIOS(以微星X370gaming plus 为例)
  • matlab 图像上生成指定中心,指定大小的矩形窗