您的位置:首页 > 游戏 > 游戏 > 微商平台app_今天郑州最新通告_高端网站建设定制_企业网络营销系统分析报告

微商平台app_今天郑州最新通告_高端网站建设定制_企业网络营销系统分析报告

2024/12/27 17:38:47 来源:https://blog.csdn.net/weixin_44957529/article/details/144539938  浏览:    关键词:微商平台app_今天郑州最新通告_高端网站建设定制_企业网络营销系统分析报告
微商平台app_今天郑州最新通告_高端网站建设定制_企业网络营销系统分析报告

redis离线安装脚本

    • 说明
    • 脚本使用
    • 完整脚本
    • 脚本内容说明
      • 1、参数校验
      • 2、文件及文件夹检查
      • 3、检查是否有同名服务
      • 4、解压、编译安装
      • 5、修改配置文件
      • 6、配置服务及开机自启动

说明

经常装服务器环境,根据以前的安装经验写了个安装脚本。本人不是专业运维,也是边百度边写的,发现问题还请指正,交流。

服务器架构 x86
系统 CentOS Linux release 8.2.2004 (Core)
redis版本 6.2.14

安装环境会影响脚本执行。例如redis的编译需要gcc,缺少得先装上。

脚本及安装包下载:https://download.csdn.net/download/weixin_44957529/90145789

脚本使用

传参格式:sh redis_insatll.sh 安装包 安装路径 端口 ‘密码’ 服务名
密码请使用单引号括住,避免特殊字符影响

sh redis_install.sh redis-6.2.14.tar.gz /usr/local/redis 6379 'sdyyhb1qaz?' redis

会根据参数自动创建安装路径,配置端口、密码,创建系统服务,并设置开机自启。

完整脚本

#!/bin/bash
#安装包路径
installationPackage=$1
#安装路径
installPath=$2
#脚本用法提示
echo "传参格式:sh $0 安装包 安装路径 端口 '密码' 服务名"
echo "示例:sh $0 redis-6.2.14.tar.gz /usr/local/redis 6379 'sdyyhb1qaz?' redis"
echo "密码请使用单引号括住,避免特殊字符影响"
#判断参数
if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ] || [ -z "$4" ] || [ -z "$5" ]; thenecho -e "\e[31m 缺少参数,请核对 \e[0m"echo "传参格式:sh $0 安装包 安装路径 端口 密码 服务名"echo "示例:sh $0 redis-6.2.14.tar.gz /usr/local/redis 6379 sdyyhb1qaz? redis"exit 0
fi
#相对路径修改为绝对路径
if [[ $1 == /* ]]; thenecho -e "\e[32m 安装包为绝对路径 \e[0m"
elseecho -e "\e[33m 安装包为相对路径,转为绝对路径 \e[0m"installationPackage="$(pwd)/$1"echo "绝对路径为:$installationPackage"
fi
if [[ $2 == /* ]]; thenecho -e "\e[32m 安装路径为绝对路径 \e[0m"
elseecho -e "\e[33m 安装路径为相对路径,转为绝对路径 \e[0m"installPath="$(pwd)/$2"echo "绝对路径为:$installPath"
fi
# 判断安装包文件是否存在
if [ -f $installationPackage ]; thenecho "安装包文件:$installationPackage"
elseecho -e "\e[31m 安装包不存在,退出安装程序 \e[0m"exit 0
fi
# 判断文件夹是否存在
if [ -d "$installPath" ]; then# 判断文件夹是否为空if [ ! "$(ls -A $installPath)" ]; thenecho -e "\e[32m 安装目录可用 \e[0m"elseecho -e "\e[31m 安装目录不为空,退出安装程序 \e[0m"exit 0fi
elseecho "创建安装目录 $installPath"mkdir -p "$installPath"
fi
# 检查是否有同名服务
if [ -e /etc/systemd/system/"$5".service ]; thenecho -e "\e[31m 存在同名服务,无法创建服务 \e[0m"echo "退出安装程序"exit 0
fi
#截取解压目录
redis_install_temp=${installationPackage//.tar/}
redis_install_temp=${redis_install_temp//.gz/}
echo $redis_install_temp
#解压
echo "解压安装包$1"
tar -zxf "$1"
cd "$redis_install_temp"
echo "$redis_install_temp"
make && make install PREFIX="$installPath"
#复制配置文件
echo "复制配置文件"
cp "$redis_install_temp/redis.conf" "$installPath"
rm -rf "$redis_install_temp" 
cd "$installPath"
#修改配置文件
sed -i 's/^bind/#bind/g' redis.conf
sed -i 's/^protected-mode yes/protected-mode no/g' redis.conf
sed -i 's/^daemonize no/daemonize yes/g' redis.conf
sed -i 's/^port 6379/port '"$3"'/g' redis.conf
sed -i 's/^\# requirepass foobared/requirepass '"$4"'/g' redis.conf#配置服务,开机自启动
echo "[Unit]" >> /etc/systemd/system/"$5".service
echo "Description=$5-server" >> /etc/systemd/system/"$5".service
echo "After=network.target" >> /etc/systemd/system/"$5".service
echo "[Service]" >> /etc/systemd/system/"$5".service
echo "Type=forking" >> /etc/systemd/system/"$5".service
echo "ExecStart=$installPath/bin/redis-server $installPath/redis.conf" >> /etc/systemd/system/"$5".service
echo "PrivateTmp=true" >> /etc/systemd/system/"$5".service
echo "[Install]" >> /etc/systemd/system/"$5".service
echo "WantedBy=multi-user.target" >> /etc/systemd/system/"$5".service
systemctl daemon-reload
systemctl enable "$5"
systemctl start "$5"
systemctl status "$5"
echo -e "\e[32m redis安装完成,已启动,已配置开机自启 \e[0m"
echo -e "\e[32m 访问端口为:$3 \e[0m"
echo -e "\e[32m 密码为:$4 \e[0m"
echo -e "\e[32m 启动命令:systemctl start $5.service \e[0m"
echo -e "\e[32m 停止命令:systemctl stop $5.service \e[0m"
echo -e "\e[32m 重启命令:systemctl restart $5.service \e[0m"
# 检查-e "\e[32m  firewalld 服务的状态
if systemctl status firewalld > /dev/null 2>&1; thenecho -e "\e[33m 防火墙正在运行,开放端口:$3 \e[0m"firewall-cmd --zone=public --add-port="$3"/tcp --permanentfirewall-cmd --reload
elseecho -e "\e[33m 防火墙未运行 \e[0m"
fi
#配置redis-cli软连接,方便全局调用
echo "配置redis-cli软连接,方便全局调用"
ln -s "$installPath"/bin/redis-cli /usr/bin/redis-cli

脚本内容说明

1、参数校验

脚本使用提示,校验参数,参数必须写全才能继续执行

#脚本用法提示
echo "传参格式:sh $0 安装包 安装路径 端口 '密码' 服务名"
echo "示例:sh $0 redis-6.2.14.tar.gz /usr/local/redis 6379 'sdyyhb1qaz?' redis"
echo "密码请使用单引号括住,避免特殊字符影响"
#判断参数
if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ] || [ -z "$4" ] || [ -z "$5" ]; thenecho -e "\e[31m 缺少参数,请核对 \e[0m"echo "传参格式:sh $0 安装包 安装路径 端口 密码 服务名"echo "示例:sh $0 redis-6.2.14.tar.gz /usr/local/redis 6379 sdyyhb1qaz? redis"exit 0
fi

2、文件及文件夹检查

将相对路径转换为绝对路径,方便后续使用。
检查安装包是否存在,不存在提示并退出安装
检查安装路径是否存在,不存在创建;存在且不为空,提示并退出安装。

#相对路径修改为绝对路径
if [[ $1 == /* ]]; thenecho -e "\e[32m 安装包为绝对路径 \e[0m"
elseecho -e "\e[33m 安装包为相对路径,转为绝对路径 \e[0m"installationPackage="$(pwd)/$1"echo "绝对路径为:$installationPackage"
fi
if [[ $2 == /* ]]; thenecho -e "\e[32m 安装路径为绝对路径 \e[0m"
elseecho -e "\e[33m 安装路径为相对路径,转为绝对路径 \e[0m"installPath="$(pwd)/$2"echo "绝对路径为:$installPath"
fi
# 判断安装包文件是否存在
if [ -f $installationPackage ]; thenecho "安装包文件:$installationPackage"
elseecho -e "\e[31m 安装包不存在,退出安装程序 \e[0m"exit 0
fi
# 判断文件夹是否存在
if [ -d "$installPath" ]; then# 判断文件夹是否为空if [ ! "$(ls -A $installPath)" ]; thenecho -e "\e[32m 安装目录可用 \e[0m"elseecho -e "\e[31m 安装目录不为空,退出安装程序 \e[0m"exit 0fi
elseecho "创建安装目录 $installPath"mkdir -p "$installPath"
fi

3、检查是否有同名服务

有同名服务,提示并退出安装

# 检查是否有同名服务
if [ -e /etc/systemd/system/"$5".service ]; thenecho -e "\e[31m 存在同名服务,无法创建服务 \e[0m"echo "退出安装程序"exit 0
fi

4、解压、编译安装

将安装包解压,编译、安装并指定安装目录

#截取解压目录
redis_install_temp=${installationPackage//.tar/}
redis_install_temp=${redis_install_temp//.gz/}
echo $redis_install_temp
#解压
echo "解压安装包$1"
tar -zxf "$1"
cd "$redis_install_temp"
echo "$redis_install_temp"
make && make install PREFIX="$installPath"

5、修改配置文件

根据参数修改配置文件,并开启远程访问

#复制配置文件
echo "复制配置文件"
cp "$redis_install_temp/redis.conf" "$installPath"
rm -rf "$redis_install_temp" 
cd "$installPath"
#修改配置文件
sed -i 's/^bind/#bind/g' redis.conf
sed -i 's/^protected-mode yes/protected-mode no/g' redis.conf
sed -i 's/^daemonize no/daemonize yes/g' redis.conf
sed -i 's/^port 6379/port '"$3"'/g' redis.conf
sed -i 's/^\# requirepass foobared/requirepass '"$4"'/g' redis.conf

6、配置服务及开机自启动

配置服务及开机自启动,输出:启、停、查看状态等命令。
如果使用的firewalld防火墙,判断防火墙是否启动,并开启对应端口
将redis-cli添加到环境变量,方便全局调用

#配置服务,开机自启动
echo "[Unit]" >> /etc/systemd/system/"$5".service
echo "Description=$5-server" >> /etc/systemd/system/"$5".service
echo "After=network.target" >> /etc/systemd/system/"$5".service
echo "[Service]" >> /etc/systemd/system/"$5".service
echo "Type=forking" >> /etc/systemd/system/"$5".service
echo "ExecStart=$installPath/bin/redis-server $installPath/redis.conf" >> /etc/systemd/system/"$5".service
echo "PrivateTmp=true" >> /etc/systemd/system/"$5".service
echo "[Install]" >> /etc/systemd/system/"$5".service
echo "WantedBy=multi-user.target" >> /etc/systemd/system/"$5".service
systemctl daemon-reload
systemctl enable "$5"
systemctl start "$5"
systemctl status "$5"
echo -e "\e[32m redis安装完成,已启动,已配置开机自启 \e[0m"
echo -e "\e[32m 访问端口为:$3 \e[0m"
echo -e "\e[32m 密码为:$4 \e[0m"
echo -e "\e[32m 启动命令:systemctl start $5.service \e[0m"
echo -e "\e[32m 停止命令:systemctl stop $5.service \e[0m"
echo -e "\e[32m 重启命令:systemctl restart $5.service \e[0m"
# 检查-e "\e[32m  firewalld 服务的状态
if systemctl status firewalld > /dev/null 2>&1; thenecho -e "\e[33m 防火墙正在运行,开放端口:$3 \e[0m"firewall-cmd --zone=public --add-port="$3"/tcp --permanentfirewall-cmd --reload
elseecho -e "\e[33m 防火墙未运行 \e[0m"
fi
#配置redis-cli软连接,方便全局调用
echo "配置redis-cli软连接,方便全局调用"
ln -s "$installPath"/bin/redis-cli /usr/bin/redis-cli

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com