一键发布脚本(含备份、发布、回滚等功能)

本文介绍了一个一键发布的脚本,适用于双节点负载均衡架构的项目。脚本包括后端节点的功能脚本(如前端页面和微服务),以及预发布端的执行脚本,通过SSH进行远程调用。脚本实现了服务的停、启、备份、回滚和文件同步等功能。
摘要由CSDN通过智能技术生成

前言:最近写了个一键发布脚本,这个脚本改进了很多次,踩了一些坑,放在这里的是最终版,稍微复杂的地方我都打了注释。

一、项目架构

在这里插入图片描述
很常见的双节点负载均衡架构
预发布服务器IP:192.168.1.100
后端节点服务器1:192.168.1.201
后端节点服务器2:192.168.1.202
上边部署了若干服务,脚本里是1个前端页面3个微服务

二、后端节点服务器脚本——功能脚本

以下脚本需在后端节点服务器上都要放在相同位置,用于被预发布服务器上的执行脚本调用。这里只写一个前端页面的和微服务的,有多少个项目就分别制作多少个,照葫芦画瓢即可。

1、前端页面脚本,因不需要重启服务,所以只要做备份和回滚功能就好了。将功能通过函数的方式模块化方便再利用和修改。

mkdir /usr/local/scripts
vim client.sh
#!/bin/bash
NOW_DATE=`date "+%Y-%m-%d"`
NOW_TIME=`date "+%H%M%S"`
client_dir=/var/www/html/client
backup_dir=/usr/local/backup


backup() {
   
	echo -e "\033[33m===== 前端页面 开始备份... =====\033[0m"
	if [ -d ${backup_dir}/html-client-${NOW_DATE} ];then
		mv ${client_dir} ${backup_dir}/html-client-${NOW_DATE}/${NOW_TIME}
	else
		mkdir -p ${backup_dir}/html-client-${NOW_DATE} && mv ${client_dir} ${backup_dir}/html-client-${NOW_DATE}/${NOW_TIME}
	fi
	echo -e "\033[33m===== 前端页面 备份完毕 =====\033[0m"
}

rollback() {
   
#找出最后备份的目录
declare -a list
list=()
i=0
for j in `ls ${
    backup_dir}/html-client-${
    NOW_DATE}`
do
list[$i]=$j
i=`expr $i + 1`
done

MAX=${list[0]}
#换算成10进制进行计算,不然当小时分钟是08.09时会被当成8进制数出现value too great for base的数值错误
for I in ${!list[@]};do

        if [[ 10#${MAX} -le 10#${list[${I}]} ]];then

            MAX=${list[${I}]}

        fi

done
#删除现有目录,回滚至最新版本
rm -rf $client_dir && cp -R ${backup_dir}/html-client-${NOW_DATE}/${MAX} $client_dir
echo -e "\033[33m===== 前端页面 回滚完成 =====\033[0m"
}

case $1 in

backup) backup;;
rollback) rollback;;
*) echo "本 $0 发布脚本需携带参数 backup|rollback"
esac

2、jar微服务脚本

这里我用sfa-web项目的脚本举例,其他项目如果大同小异就只需更改变量部分即可。功能比前端多了”停服务,起服务和查状态”。

vim /usr/local/scripts/sfa-web.sh
#!/bin/bash
jdk=/usr/servers/jdk1.8.0_151/bin/java
NOW_DATE=`date "+%Y-%m-%d"`
NOW_TIME=`date "+%H%M%S"`
backup_dir=/usr/local/backup
proj_dir=/usr/local/sfa-web-18081
jar=/usr/local/sfa-web-18081/sfa-web.jar
proj=sfa-web


checkpid() {
   
   pid=`jps -l | grep  $proj | grep -v "grep" | awk '{print $1}'`
}

status() {
   
    checkpid
    [ ! -z $pid 2>/dev/null ] && echo "$proj项目正在运行中,进程ID: $pid" || 
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值