Redis部署脚本(完成-第一版)

主要包含redis的一键部署脚本和redis启动脚本文件

当前可以完成一键部署,还需改进语法

install.sh

#!/bin/bash
systemctl stop firewalld
systemctl disable firewalld
#!/bin/bash
if ! command -v yum &> /dev/null; then
    echo -e "\e[31m yum not installed,start install yum... \e[0m\n"
    sudo apt update sudo
    apt install yum
else 
    echo -e "\e[31m yum is installed \e[0m\n"
fi

echo -e "\e[31m Starts verifying whether GCC is installed \e[0m\n"
if ! command -v gcc &> /dev/null; then
    echo -e "\e[31m gcc not installed,start install gcc... \e[0m\n"
    sudo yum install gcc 
else
    echo -e "\e[31m gcc is installed \e[0m\n"
fi

if ! command -v g++ &> /dev/null; then
    echo -e "\e[31m g++ not installed,start install g++... \e[0m\n"
    sudo yum install g++ 
else
    echo -e "\e[31m g++ is installed \e[0m\n" 
fi

echo -e "\e[31m Started upgrading the GCC version \e[0m\n"
if [ "$(gcc -dumpversion)" == "4.8.5" ]; then
    echo -e "\e[31m The GCC version is 4.8.5 to prevent Redis compilation failures and start upgrading GCC... \e[0m\n"
    yum -y install centos-release-scl
    yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
    scl enable devtoolset-9 bash
    echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile
    gcc -dumpversion
    if [ "$(gcc -dumpversion)" != "4.8.5" ]; then
        echo -e "\e[31m If the GCC upgrade fails, manually upgrade the GCC version to prevent Redis compilation failures \e[0m\n"
        exit 1
    else
        echo "\e[31m The GCC upgrade is complete \e[0m\n"
        exit 0
    fi
fi


if ! command -v make &> /dev/null; then
    echo -e "\e[31m Make is not installed, start installing make... \e[0m\n"
    sudo yum install make 
else
    echo -e "\e[31m make is installed \e[0m\n"
fi

if ! command -v vim &> /dev/null; then
    echo -e "\e[31m vim does not install,start install vim... \e[0m\n"
    sudo yum install vim 
else
    echo -e "\e[31m vim is installed \e[0m\n" 
fi

echo -e "\e[31m start install Redis \e[0m\n"
REDIS_VERSION="4.0.1"
REDIS_SRC_FILENAME="redis-$REDIS_VERSION.tar.gz"
REDIS_SRC_DIRNAME="redis-$REDIS_VERSION"
tar -xvzf $REDIS_SRC_FILENAME
echo -e "\e[31m The Redis installation is complete \e[0m\n"

echo -e "\e[31m Start compiling Redis \e[0m\n"
cd $REDIS_SRC_DIRNAME
make
make install
echo -e "\e[31m Redis compilation is complete \e[0m\n"
dir1="/data/redis/data"

mkdir -p $dir1
dir2="/etc/redis/"
mkdir -p $dir2

echo -e "\e[31m Configure a Redis configuration file,reids.conf \e[0m\n"
if [ $? -eq 0 ]; then
cat > /etc/redis/6379.conf <<EOF
bind 0.0.0.0
protected-mode no
port 6379
pidfile "/data/redis/redis_6379.pid"
logfile "/data/redis/redis_6379.log"
dir "/data/redis/data"
daemonize yes
requirepass promace@123
appendonly yes
appendfilename "appendonly-41.aof"
EOF
echo -e "\e[31m reids.conf The configuration successful \e[0m\n" 
else
    echo -e "\e[31m reids.conf The configuration failed!!! \e[0m\n" 
fi

#此处目录在redis-4.0.1
current_dir=$(pwd)
cd ../
##此处目录在redis
current_dir2=$(pwd)

cp $current_dir2/redis-init $current_dir2/redis
echo -e "\e[31m Configure the Redis startup script file \e[0m\n"
sed -i '5a EXEC='$current_dir'/src/redis-server' $current_dir2/redis
sed -i '5a CLIEXEC='$current_dir'/src/redis-cli' $current_dir2/redis

mv $current_dir2/redis /etc/init.d/
echo -e "\e[31m The Redis startup script is successfully configured \e[0m\n"
echo -e "\e[31m /etc/init.d/redis The file configuration is successful!  \e[0m\n" 

sudo chmod +x /etc/init.d/redis
sudo chkconfig --add redis
sudo chkconfig redis on


current_dir3=$(pwd)
if [ $? -eq 0 ]; then
cat > $current_dir3/start.sh<<EOF
service redis start
EOF
echo -e "\e[31m start.sh The creation is successful! \e[0m\n"
else
    echo -e "\e[31m start.sh Creation failed! \e[0m\n"
fi

if [ $? -eq 0 ]; then
cat > $current_dir3/stop.sh<<EOF
service redis stop
EOF
echo -e "\e[31m stop.sh The creation is successful! \e[0m\n"
else
    echo -e "\e[31m stop.sh Creation failed! \e[0m\n"
fi


exit 0

redis-init(Redis启动脚本)

#!/bin/sh
# chkconfig: 2345 80 90
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
REDISPORT=6379
PIDFILE=/data/redis/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.conf"
case "$1" in
    start)
        if [ -f $PIDFILE ]; then
                echo -e "\e[31m $PIDFILE exists, process is already running or crashed \e[0m\n"
                cd /data/redis/
                rm -rf redis_${REDISPORT}.pid
                echo -e "\e[31m Redis Stopping ... ,please re-execute sh start.sh \e[0m\n"
        else
                echo -e "\e[31m Starting Redis server... \e[0m\n"
                $EXEC $CONF
        fi
        ;;
    stop)
        if [ ! -f $PIDFILE ]; then
                echo -e "\e[31m $PIDFILE does not exist, process is not running \e[0m\n"
        else
                PID=$(cat $PIDFILE)
                echo -e "\e[31m Stopping ... \e[0m\n"
                kill -9 $PID
                while [ -x /proc/${PID} ]
                do
                    echo -e "\e[31m Waiting for Redis to shutdown ... \e[0m\n"
                    sleep 1
                done
                echo -e "\e[31m Redis stopped \e[0m\n"
        fi
        ;;
    *)
        echo -e "\e[31m Please use start or stop as first argument \e[0m\n"
        ;;
esac

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/175596.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于51单片机的超声波测距系统【程序+proteus仿真+参考论文+原理图+PCB等16个文件夹资料】

一、项目功能简介 整个设计系统由STC89C52单片机LCD1602显示模块声光报警模块存储模块超声波模块按键模块组成。 具体功能&#xff1a; 1、超声波测量距离&#xff0c;显示在LCD1602。 2、存储模块可以存储超声波报警值。 3、通过按键可设置报警值大小。 4、超声波报警距…

ViLT 论文精读【论文精读】

ViLT 论文精读【论文精读】_哔哩哔哩_bilibili 目录 ViLT 论文精读【论文精读】_哔哩哔哩_bilibili 1 地位 2 ViLT做了什么能让它成为这种里程碑式的工作&#xff1f; 3 ViLT到底把模型简化到了什么程度&#xff1f;到底能加速到什么程度&#xff1f; 2.1 过去的方法是怎…

浏览器如何读取本地Excel表格

浏览器可以读取Excel表格数据吗&#xff1f; 答案是否定的&#xff0c;目前主流浏览器都无法打开本地Excel文档。 答案也是肯定的&#xff0c;这就来看看具体实现方法&#xff01;&#xff01;&#xff01; 首先准备一个Excel表格文件 保存在D:\\temp\测试表.xls…

python计算概率分布

目录 1、泊松分布 2、卡方分布 3、正态分布 4、t分布 5、F分布 1、泊松分布 泊松分布是一种离散概率分布&#xff0c;描述了在固定时间或空间范围内&#xff0c;某个事件发生的次数的概率分布。该分布以法国数学家西蒙德尼泊松的名字命名&#xff0c;他在19世纪早期对这种…

2023_Spark_实验二十一:Zookeeper单机安装与配置

zookeeper单机安装与配置一、zookeeper的安装 1.上传zookeeper-3.4.5.tar.gz到/tools目录下 2.解压安装zookeeper到/training中 tar -zvcf zookeeper-3.4.5.tar.gz -C /opt/soft_installed/zookeeper-3.4.53.配置环境变量 vim /home/lh/.bashrc# 添加内容如下 export ZK_HOME…

六、Lua 运算符

文章目录 一、Lua 运算符&#xff08;一&#xff09;算术运算符&#xff08;二&#xff09;关系运算符&#xff08;三&#xff09;逻辑运算符&#xff08;四&#xff09;其他运算符 二、运算符优先级 一、Lua 运算符 运算符是一个特殊的符号&#xff0c;用于告诉解释器执行特定…

小航助学题库蓝桥杯题库stem选拔赛(21年3月)(含题库教师学生账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09;_程序猿下山的博客-CSDN博客 需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09;_程序猿下山的博客-CSD…

【系统移植】 移植主线U-Boot(v2024.01-rc3)到RK3399

一、编译环境 PC 机用的是 Ubuntu 18.04,执行以下命令安装必要工具: sudo apt-get install repo git ssh make gcc libssl-dev liblz4-tool \ expect g++ patchelf chrpath gawk texinfo chrpath diffstat binfmt-support \ qemu-user-static live-build bison flex fakero…

Ant Design布局:Flex, Grid, Layout

文章目录 FlexGridLayout React初步antd初步 任何UI工具&#xff0c;布局都是设计过程中必不可少的一环&#xff0c;前端更是如此。但网页和桌面应用还有区别&#xff0c;正常的网页&#xff0c;无论在手机还是PC上&#xff0c;基本都是自上而下排布的信息流&#xff0c;这种浏…

【JavaScript】封装自己的JavaScript公共工具函数,并上传到npm中 进行下载

js公共方法封装方式都有哪些 全局函数 function greet(name) {console.log("Hello, " name "!"); }greet("Alice"); // 调用全局函数对象字面量 var utils {add: function(a, b) {return a b;},subtract: function(a, b) {return a - b;}…

python爬虫进阶篇(异步)

学习完前面的基础知识后&#xff0c;我们会发现这些爬虫的效率实在是太低了。那么我们需要学习一些新的爬虫方式来进行信息的获取。 异步 使用python3.7后的版本中的异步进行爬取&#xff0c;多线程虽然快&#xff0c;但是异步才是爬虫真爱。 基本概念讲解 1.什么是异步&…

智能优化算法应用:基于郊狼算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于郊狼算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于郊狼算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.郊狼算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

第13周 预习、实验与作业:Java网络编程

目录 1 课前问题列表 1.编写一个网络程序&#xff0c;为了与其他网络程序通信&#xff0c;至少要知道对方的什么信息&#xff1f; 2.TCP与UDP协议有什么不同的呢&#xff1f;什么时候该选择哪种协议&#xff1f;HTTP使用的是TCP还是UDP&#xff1f;不重要的短信息传送之类的功能…

销售漏斗是什么?

销售漏斗是一个重要的销售管理工具&#xff0c;它可以帮助销售人员更好地管理和跟踪潜在客户。销售漏斗模型通常被广泛应用于B2B销售中&#xff0c;它可以将销售过程细分为多个阶段&#xff0c;例如潜在客户、初步沟通、方案报价、谈判和签约等。 销售漏斗有以下作用&#xff…

java继承和多态之接口

Java 中的继承和多态是非常重要的概念&#xff0c;它们是 Java 面向对象编程的核心特性。在 Java 中&#xff0c;继承是指一个类&#xff08;子类&#xff09;可以继承另一个类&#xff08;父类&#xff09;的属性和方法。多态是指一个接口或类的多种实现方式&#xff0c;它允许…

静态方法和属性的经典使用-单例设计模式

单例设计模式 一、设计模式二、单例模式1、饿汉式2、懒汉式3、区别 单例设计模式是静态方法和属性的经典使用。 一、设计模式 设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式。设计模式就像是经典的棋谱&#xff0c;不同的棋局&…

基于C#实现梳排序

为什么取名为梳&#xff0c;可能每个梳都有自己的 gap 吧&#xff0c;大梳子 gap 大一点&#xff0c;小梳子 gap 小一点。上一篇我们看到鸡尾酒排序是在冒泡排序上做了一些优化&#xff0c;将单向的比较变成了双向&#xff0c;同样这里的梳排序也是在冒泡排序上做了一些优化。 …

基于注解配置的AOP

注解方式AOP基本使用 Spring的AOP也提供了注解方式配置&#xff0c;使用相应的注解代替之前的xml配置。 xml配置&#xff1a; <aop:config> <!-- 配置切入点 目的是指定哪些方法增强--><aop:pointcut id"myPointCut1" expression"execu…

[Linux] 正则表达式及grep和awk

一、正则表达式 1.1 什么是正则表达式 正则表达式是一种用于匹配和操作文本的强大工具&#xff0c;它是由一系列字符和特殊字符组成的模式&#xff0c;用于描述要匹配的文本模式。 正则表达式可以在文本中查找、替换、提取和验证特定的模式。 正则表达式和通配符的区别 正则…

Isaac Sim:使用 Replicator Composer 生成合成数据

训练感知模型需要大量多样的数据集。组装这些数据集可能耗时耗钱又危险&#xff0c;甚至在某些极端情况下无法进行。利用 Isaac Sim 的 Omniverse Replicator&#xff0c;开发者可以启动训练任务。在项目的早期阶段&#xff0c;合成数据可以加速概念验证或验证 ML 工作流。在开…