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

03.一键编译安装Redis脚本

一键编译安装Redis脚本

#!/bin/bash# 任何命令失败即退出
set -e# 设置版本和安装路径
REDIS_VERSION="redis-7.2.6"
PASSWORD="123456"
INSTALL_DIR="/apps/redis"# 获取 CPU 核心数用于 make -j
CPUS=$(lscpu | awk '/^CPU\(s\)/{print $2}')# 获取系统信息
. /etc/os-release# 颜色函数
color() {RES_COL=60MOVE_TO_COL="echo -en \\033[${RES_COL}G"SETCOLOR_SUCCESS="echo -en \\033[1;32m"SETCOLOR_FAILURE="echo -en \\033[1;31m"SETCOLOR_WARNING="echo -en \\033[1;33m"SETCOLOR_NORMAL="echo -en \E[0m"echo -n "$1" && $MOVE_TO_COLecho -n "["if [ $2 = "success" -o $2 = "0" ]; then${SETCOLOR_SUCCESS}echo -n $"  OK  "elif [ $2 = "failure" -o $2 = "1" ]; then${SETCOLOR_FAILURE}echo -n $"FAILED"else${SETCOLOR_WARNING}echo -n $"WARNING"fi${SETCOLOR_NORMAL}echo -n "]"echo
}# 安装依赖包
prepare() {color "正在安装依赖包..." 2if [[ "$ID" == "centos" || "$ID" == "rocky" ]]; thendnf -y install gcc make jemalloc-devel systemd-devel || { color "依赖安装失败" 1; exit 1; }elseapt update && apt -y install gcc make libjemalloc-dev libsystemd-dev || { color "依赖安装失败" 1; exit 1; }ficolor "依赖包安装完成" 0
}# 下载并编译安装 Redis
install_redis() {color "开始下载并编译 Redis..." 2# 检查是否存在源码包if [ ! -f "${REDIS_VERSION}.tar.gz" ]; thenwget https://download.redis.io/releases/${REDIS_VERSION}.tar.gz || { color "Redis 源码下载失败" 1; exit 1; }fitar xf ${REDIS_VERSION}.tar.gz -C /usr/local/src/cd /usr/local/src/${REDIS_VERSION} || { color "进入源码目录失败" 1; exit 1; }# 编译安装make -j ${CPUS} USE_SYSTEMD=yes PREFIX=${INSTALL_DIR} install || { color "Redis 编译安装失败" 1; exit 1; }color "Redis 编译安装完成" 0# 创建软链接ln -sf ${INSTALL_DIR}/bin/redis-* /usr/local/bin/# 创建相关目录mkdir -p ${INSTALL_DIR}/{etc,log,data,run}# 复制配置文件cp redis.conf ${INSTALL_DIR}/etc/# 修改配置文件sed -i -e 's/^bind .*/bind 0.0.0.0/' \-e "/# requirepass/a requirepass ${PASSWORD}" \-e "/^dir .*/c dir ${INSTALL_DIR}/data/" \-e "/logfile .*/c logfile ${INSTALL_DIR}/log/redis_6379.log" \-e "/^pidfile .*/c pidfile ${INSTALL_DIR}/run/redis_6379.pid" \-e "/^dbfilename .*/c dbfilename dump_6379.rdb" \${INSTALL_DIR}/etc/redis.confcolor "Redis 配置文件已更新" 0
}# 创建 Redis 用户
create_user() {color "正在创建 Redis 用户..." 2if id redis &> /dev/null; thencolor "Redis 用户已存在" 1elseuseradd -r -s /sbin/nologin redis && color "Redis 用户创建成功" 0fichown -R redis:redis ${INSTALL_DIR}
}# 优化系统参数
optimize_system() {color "正在优化系统内核参数..." 2cat >> /etc/sysctl.conf <<EOF
net.core.somaxconn = 4096
vm.overcommit_memory = 1
EOFsysctl -p > /dev/nullcolor "系统参数优化完成" 0
}# 创建 Systemd 服务
setup_systemd() {color "正在配置 Systemd 服务..." 2cat > /lib/systemd/system/redis.service <<EOF
[Unit]
Description=Redis persistent key-value database
After=network.target[Service]
ExecStart=${INSTALL_DIR}/bin/redis-server ${INSTALL_DIR}/etc/redis.conf --supervised systemd
ExecStop=/bin/kill -s QUIT \$MAINPID
Type=notify
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755
LimitNOFILE=1000000[Install]
WantedBy=multi-user.target
EOFsystemctl daemon-reloadsystemctl enable --now redis &> /dev/nullif systemctl is-active --quiet redis; thencolor "Redis 服务启动成功" 0sleep 2redis-cli -a ${PASSWORD} INFO Server 2>/dev/null | grep -i versionelsecolor "Redis 启动失败,请检查日志" 1exit 1fi
}# 执行所有步骤
prepare
install_redis
create_user
optimize_system
setup_systemdcolor "Redis 安装完成!版本信息如下:" 0redis-cli -a ${PASSWORD} INFO Server 2>/dev/null | grep -i version
http://www.dtcms.com/a/313346.html

相关文章:

  • 【MySQL】MySQL 中的数据排序是怎么实现的?
  • 深入理解流式输出:原理、应用与大模型聊天软件中的实现
  • 跨语言模型中的翻译任务:XLM-RoBERTa在翻译任务中的应用
  • python---python中的内存分配
  • AI Agent 重塑产业发展新格局
  • 联想笔记本安装系统之后一直转圈圈的问题了?无法正常进入到系统配置界面,原来是BIOS中的VMD问题
  • Autoswagger:揭露隐藏 API 授权缺陷的开源工具
  • 使用CMake构建项目的完整指南
  • [LINUX操作系统]shell脚本之循环
  • 【Qt】QObject::startTimer: Timers cannot be started from another thread
  • 如何玩转 Kubernetes K8S
  • 【QT】概述
  • 快速搭建一个非生产k8s环境
  • Android 之 网络通信(HTTP/TCP/UDP/JSON)
  • 量子物理学的前沿意义虚无、形式混乱
  • 入门MicroPython+ESP32:ESP32链接WIFI全攻略
  • Dify中自定义工具类的类型
  • 多模态后训练反常识:长思维链SFT和RL的协同困境
  • GitLab 代码管理平台部署及使用
  • CCF-GESP 等级考试 2025年6月认证C++一级真题解析
  • 扩散模型(一)——综述
  • 介绍JAVA语言、介绍greenfoot 工具
  • 案例介绍|JSON数据格式的转换|pyecharts模块简介
  • noob靶机复现笔记
  • 纯JavaScript实现文本选择工具栏:功能详解与源码解析
  • RAG 知识库实战指南:基于 Spring AI 构建 AI 知识问答应用
  • Git用法记录
  • UE5的渲染Debug技巧
  • C语言字符串拷贝的三重境界:从下标到指针的华丽变身
  • 设备健康管理标准规范:技术架构与合规性实现指南