0
点赞
收藏
分享

微信扫一扫

shellscript-13-一键部署redis

南陵王梁枫 2023-11-27 阅读 30

shellscript-13-一键部署redis

脚本内容

#!/bin/bash

# author: yolo
# 一键部署redis

# 检测执行正常
ch_ok()
{
if [ $? -ne 0 ]
then
echo $1 error
exit 1
fi
}

download_redis()
{
cd /usr/local/src/
if [ -f redis-6.2.12.tar.gz ]
then
echo 当前目录存在redis-6.2.12.tar.gz
echo 检测MD5
file_md5=`md5sum redis-6.2.12.tar.gz | awk '{print $1}'`
if [${file_md5} == '0ae0679c3b8779fa1b0b0f81e86be8a4' ]
then
reture 0
else
echo
/bin/mv redis-6.2.12.tar.gz redis-6.2.12.tar.gz.old
fi
fi
sudo wget -O redis-6.2.12.tar.gz https://codeload.github.com/redis/redis/tar.gz/refs/tags/6.2.12
ch_ok 下载redis完成
}

install_redis()
{
cd /usr/local/src
sudo tar -zxvf redis-6.2.12.tar.gz
ch_ok 解压redis包
cd redis-6.2.12/

echo 安装依赖
if which yum >/dev/null 2>&1
then
# redhat
for pkg in cpp binutils glibc glibc-kernheaders glibc-common glibc-devel gcc make gcc-c++ libstdc++-devel tcl
do
if ! rpm -q $pkg >/dev/null 2>&1
then
sudo yum install -y $pkg
ch_ok yum 安装$pkg
else
echo $pkg已经安装
fi
done
fi

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
ch_ok 创建redis用户
sudo chown -R redis /data/redis /usr/local/redis/log
}

config_redis()
{
echo 配置redis.conf
sudo /bin/cp /usr/local/src/redis-6.2.12/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 's@# requirepass foobared@requirepass yolo@123' /usr/local/redis/conf/redis.conf


echo 配置systemd service
cat > /tmp/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 /bin/mv /tmp/redis.service /lib/systemd/system/redis.service
ch_ok 编辑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
ch_ok 启动redis完成
}

download_redis
install_redis
config_redis
举报

相关推荐

0 条评论