redis安装脚本(集群搭建)

12 篇文章 0 订阅
3 篇文章 0 订阅
这是一个用于在Linux系统中自动安装Redis6.2.6的bash脚本,包括下载安装包、解压、编译安装、设置配置文件、启动和管理系统服务等步骤。脚本还包含了日志记录和错误处理功能,确保安装过程的可追踪性和可靠性。
摘要由CSDN通过智能技术生成

#!/bin/bash

#Author Mr.Wu

#Redis安装脚本

#登录初始密码为123123,请修改!!!

#2023年2月20日10:11:14

########################################

#定义变量

dev_dir="/dev/null"

redis_rpm="$(pwd)/redis-6.2.6.tar.gz"

redis_log="$(pwd)/redis-install.log"

src_dir="/usr/local/src"

redis_dir="/usr/local/redis"

ip="$(ip a | awk '/scope global/{print $2}' | cut -d "/" -f 1 | sed -n "1p")"

messages=("清理缓存并重新加载缓存" "检查Redis安装包是否存在" "下载Redis安装包" "解压并安装辅助工具" "编译安装" "设置软链接及主配置文件" "设置Redis启动管理" "使用systemctl控制Redis服务")

colour=(31 34)

result=("失败!!!" "成功!!!")

########################################

#定义函数

delimiter(){#定义分隔符

echo -e "\033[32;1m※※※※※※※※※※※※※※※※※※※※※※※※※※\033[0m"

}

echoinfo(){#定义输入选项

echo -e "\033[35;1m#$1\033[0m"

}

echoresult(){#定义输出选项

echo -e "\033[$1;1m$2$3\033[0m"

}

if_test(){#if语句判断

if [ $? -eq 0 ];then

echoresult ${colour[1]} $1 ${result[1]}

else

echoresult ${colour[0]} $1 ${result[0]}

exit

fi

}

clean(){#清理缓存并重新加载缓存

delimiter | tee -a $redis_log

echoinfo ${messages[0]} | tee -a $redis_log

yum clean all &>> $redis_log

yum makecache &>> $redis_log

sleep 3

if_test ${messages[0]} | tee -a $redis_log

}

check_rpm(){#检查Redis安装包是否存在

delimiter | tee -a $redis_log

echoinfo ${messages[1]} | tee -a $redis_log

if [ ! -f $redis_rpm ];then

echo -e "\033[45;37;1m$redis_rpm包不存在,请下载!!!\033[0m" | tee -a $redis_log

else

echo -e "\033[44;37;1m $redis_rpm已经存在,请解压安装!!!\033[0m" | tee -a $redis_log

fi

}

get_rpm(){#下载Redis安装包

delimiter | tee -a $redis_log

echoinfo ${messages[2]} | tee -a $redis_log

wget https://download.redis.io/releases/redis-6.2.6.tar.gz &> $dev_dir

sleep 3

if_test ${messages[2]} | tee -a $redis_log

}

tar_ins(){#解压并安装辅助工具

delimiter | tee -a $redis_log

echoinfo ${messages[3]} | tee -a $redis_log

tar -zxvf $redis_rpm -C $src_dir/ &>> $redis_log

yum install -y gcc gcc-c++ &> $dev_dir

sleep 3

if_test ${messages[3]} | tee -a $redis_log

}

make_ins(){#编译安装

delimiter | tee -a $redis_log

echoinfo ${messages[4]} | tee -a $redis_log

aa="$(ls /usr/local/src/)"

cd $src_dir/$aa &> $dev_dir

make PREFIX=$redis_dir/ install &>> $redis_log

sleep 3

if_test ${messages[4]} | tee -a $redis_log

}

set_cnf(){#设置软链接及主配置文件

delimiter | tee -a $redis_log

echoinfo ${messages[5]} | tee -a $redis_log

mkdir $redis_dir/etc/

cd $src_dir/redis-6.2.6/

cp $(ls /usr/local/src/redis-6.2.6/ | grep "redis.conf") $redis_dir/etc/redis6379.conf &> $dev_dir

cp $(ls /usr/local/src/redis-6.2.6/ | grep "redis.conf") $redis_dir/etc/redis6380.conf &> $dev_dir

ln -s $redis_dir/bin/* /usr/local/bin/ &> $dev_dir

ls $redis_dir/etc/ &>> $redis_log

ls /usr/local/bin/ &>> $redis_log

sed -i '/daemonize no/c \daemonize yes' $redis_dir/etc/redis6379.conf &>> $redis_log

sed -i "/bind 127.0.0.1 -::1/c \bind 127.0.0.1 -::1 $ip" $redis_dir/etc/redis6379.conf &>> $redis_log

sed -i '/daemonize no/c \daemonize yes' $redis_dir/etc/redis6380.conf &>> $redis_log

sed -i "/bind 127.0.0.1 -::1/c \bind 127.0.0.1 -::1 $ip" $redis_dir/etc/redis6380.conf &>> $redis_log

sed -i "/port 6379/c \port 6380" $redis_dir/etc/redis6380.conf &>> $redis_log

redis-server /usr/local/redis/etc/redis6379.conf &> $dev_dir

redis-server /usr/local/redis/etc/redis6380.conf &> $dev_dir

pkill redis-server &> $dev_dir

echo '*softnofile102400' &>> /etc/security/limits.conf | tee -a $redis_log

echo '*hardnofile102400' &>> /etc/security/limits.conf | tee -a $redis_log

sed -i 'N;2asession required /usr/lib64/security/pam_limits.so' /etc/pam.d/login &>> $redis_log

echo 'net.core.somaxconn = 511' &>> /etc/sysctl.conf | tee -a $redis_log

echo 'vm.overcommit_memory = 1' &>> /etc/sysctl.conf | tee -a $redis_log

mkdir /var/log/redis/

sed -i '/logfile ""/c \logfile "/var/log/redis/redis_6379.log"' $redis_dir/etc/redis6379.conf &>> $redis_log

sed -i '/logfile ""/c \logfile "/var/log/redis/redis_6380.log"' $redis_dir/etc/redis6380.conf &>> $redis_log

sed -i '/# requirepass foobared/c \requirepass 123123' $redis_dir/etc/redis6379.conf &>> $redis_log

sed -i '/# requirepass foobared/c \requirepass 123123' $redis_dir/etc/redis6380.conf &>> $redis_log

sleep 3

if_test ${messages[5]} | tee -a $redis_log

}

set_star(){#设置Redis启动管理

delimiter | tee -a $redis_log

echoinfo ${messages[6]} | tee -a $redis_log

redis-server $redis_dir/etc/redis.conf &> $dev_dir

sleep 3

netstat -antup | grep redis &>> $redis_log

ps -ef | grep redis | grep -v "grep" | grep -v "redis-install.sh" &>> $redis_log

pkill redis-server &> $dev_dir

sleep 3

netstat -antup | grep redis &>> $redis_log

ps -ef | grep redis | grep -v "grep" | grep -v "redis-install.sh" &>> $redis_log

num1="$(ps -ef | grep redis | grep -v "grep" | grep -v "redis-install.sh" | wc -l)"

if [ $num1 -eq 0 ];then

echo -e "\033[45;37;1m Redis服务已关闭!!!\033[0m" &>> $redis_log

else

echo -e "\033[43;37;1m Redis服务关闭失败!!!\033[0m" &>> $redis_log

pkill redis-server &> $dev_dir

num1="$(ps -ef | grep redis | grep -v "grep" | grep -v "redis-install.sh" | wc -l)"

sleep 3

if [ $num1 -eq 0 ];then

echo -e "\033[45;37;1m Redis服务已关闭!!!\033[0m" &>> $redis_log

else

echo -e "\033[43;37;1m WARNING!!!WARNING!!!WARNING!!!\033[0m" &>> $redis_log

fi

fi

chmod a+x /etc/rc.d/rc.local &> $dev_dir

echo "/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis6379.conf" &>> /etc/rc.d/rc.local | tee -a $redis_log

echo "/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis6380.conf" &>> /etc/rc.d/rc.local | tee -a $redis_log

source /etc/rc.d/rc.local &>> $redis_log

sleep 3

netstat -antup | grep redis &>> $redis_log

ps -ef | grep redis | grep -v "grep" | grep -v "redis-install.sh" &>> $redis_log

sleep 3

if_test ${messages[6]} | tee -a $redis_log

pkill redis-server &> $dev_dir

sed -i '/redis-server/d' /etc/rc.d/rc.local &>> $redis_log

source /etc/rc.d/rc.local &>> $redis_log

}

sys_star(){#使用systemctl控制Redis服务

delimiter | tee -a $redis_log

echoinfo ${messages[7]} | tee -a $redis_log

pkill redis-server &> $dev_dir

echo "[Unit]

Description=Redis

After=network.target

[Service]

Type=forking

ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis6379.conf

ExecReload=/usr/local/redis/bin/redis-server -s reload

ExecStop=/usr/local/redis/bin/redis-server -s stop

PrivateTmp=true

[Install]

WantedBy=multi-user.target" &> /etc/systemd/system/redis6379.service | tee -a $redis_log

systemctl daemon-reload &> $dev_dir

systemctl start redis6379.service &> $dev_dir

systemctl enable redis6379.service &> $dev_dir

sleep 3

systemctl status redis6379.service &>> $redis_log

echo "[Unit]

Description=Redis

After=network.target

[Service]

Type=forking

ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis6380.conf

ExecReload=/usr/local/redis/bin/redis-server -s reload

ExecStop=/usr/local/redis/bin/redis-server -s stop

PrivateTmp=true

[Install]

WantedBy=multi-user.target" &> /etc/systemd/system/redis6380.service | tee -a $redis_log

systemctl daemon-reload &> $dev_dir

systemctl start redis6380.service &> $dev_dir

systemctl enable redis6380.service &> $dev_dir

sleep 3

systemctl status redis6380.service &>> $redis_log

netstat -antup | grep redis &>> $redis_log

ps -ef | grep redis | grep -v "grep" | grep -v "redis-install.sh" &>> $redis_log

num2="$(ps -ef | grep redis | grep -v "grep" | grep -v "redis-install.sh" | wc -l)"

if [ $num2 -ne 0 ];then

echo -e "\033[45;37;1m Redis服务已经启动,可以使用!!!\033[0m" | tee -a $redis_log

elif [ $num2 -eq 0 ];then

echo -e "\033[43;37;1m Redis服务未启动,请联系管理员!!!\033[0m" | tee -a $redis_log

fi

sleep 3

delimiter | tee -a $redis_log

}

########################################

#调用函数

echo "################BEGIN!!!$(date)################" | tee -a $redis_log

clean

wait

check_rpm

wait

get_rpm

wait

tar_ins

wait

make_ins

wait

set_cnf

wait

set_star

wait

sys_star

wait

echo "################END!!!$(date)################" | tee -a $redis_log

########################################

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值