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

相关推荐
kakacc:1 分钟前
记录一次巧妙的SQL:一对多关联导致的 sum () 、count()等group函数重复计算问题
数据库·sql
心随雨下21 分钟前
Redis中Geospatial 实际应用指南
数据库·redis·分布式·缓存
黑夜管理员23 分钟前
Sql Server安装报错“服务没有及时响应启动或控制请求”
数据库·sql server
NineData1 小时前
NineData云原生智能数据管理平台新功能发布|2025年9月版
数据库·云原生·devops·ninedata·数据库迁移·数据复制·风险sql管控
junnhwan1 小时前
【苍穹外卖笔记】Day04--套餐管理模块
java·数据库·spring boot·后端·苍穹外卖·crud
月临水2 小时前
Redis 学习笔记(二)
redis·笔记·学习
一枚正在学习的小白2 小时前
PG数据文件位置迁移
linux·运维·服务器·数据库
真的想不出名儿2 小时前
上传头像到腾讯云对象存储-前端基于antdv
java·数据库·腾讯云
Dreams_l2 小时前
初识redis(分布式系统, redis的特性, 基本命令)
数据库·redis·缓存
数据库知识分享者小北2 小时前
Qoder + ADB Supabase :5分钟GET超火AI手办生图APP
数据库·后端