作者:oth0037112 | 来源:互联网 | 2023-10-17 19:08
1. 脚本功能
1)自动替换jar包中的配置文件。
2)自动备份老版本的Jar包
3) 自动判断是初次启动还是更新服务
2. 脚本准备
进入/home目录新建springcloud文件夹,并进入
然后新建文件夹shell、DockerBuilder、Jar、Front
shell | 自动化脚本 | 放置自动化部署脚本,执行脚本即可一键部署或者更新java服务或者前端服务。 |
DockerBuilder | 构建工厂 | 放置服务名对应的各个服务文件夹,服务文件夹下放置application.properties、bootstrap.properties。打包后端Jar会自动替换这些配置文件 |
Jar | 微服务更新包 | 放置所有微服务包 |
Front | 前端更新包 | 放置所有前端包 |
3. 环境变量配置
vi /etc/profile
在文件末尾追加如下环境变量
export DockerBuilder=/home/springcloud/DockerBuilder
export Jar=/home/springcloud/Jar
export FrOnt=/home/springcloud/Front
export NginxHtml=/usr/springcloud/nginx/htmlalias shell="cd /home/springcloud/shell"
刷新环境变量使其生效
source /etc/profile
配置全局java环境
1.查看已经安装的JDKyum list installed |grep java2.卸载CentOS系统Java环境yum -y remove java-1.8.0-openjdk* *表示卸载所有openjdk相关文件输入 yum -y remove tzdata-java.noarch 卸载tzdata-java 3.查看yum库中的Java安装包yum -y list java*3.安装yum install java-1.8.0-openjdk*4.查看java版本java -version5.执行java,javac命令显示帮助信息则安装成功6.执行javac 报错:javac: command not found 解决方案:yum install java-1.8.0-openjdk-devel.x86_64
配置全局node环境
Nodejs官方版本
#安装源
curl -sL https://rpm.nodesource.com/setup_13.x | bash -
#安装Nodejs
yum -y install nodejs
#配置淘宝镜像
npm config set registry http://registry.npm.taobao.org/
#安装cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org
#安装yarn
npm install yarn -g
#配置yarn淘宝镜像
yarn config set registry https://registry.npm.taobao.org -g
yarn config set sass_binary_site http://cdn.npm.taobao.org/dist/node-sass -g
#检查yarn
yarn config get registry // https://registry.npm.taobao.org
yarn config get sass_binary_site // http://cdn.npm.taobao.org/dist/node-sass
4. 启动脚本
shell && sh test.sh
5. 微服务脚本
#!/bin/bash
#auth eric
#date 2021-08-13
#*********脚本入参#*********
appname=${0%\.*}
#Docker脚本位置
dockersrc=$DockerBuilder/$appname
#需要替换的包名称
bmc=$appname-server-web-1.0.jar
#需要替换的文件名称
file1=bootstrap.properties
file2=application.properties
#*********脚本入参#*********
#当前镜像版本
source /etc/profile
version="`date +%Y%m%d%H%M%S`"
echo '第一步:备份老版本'
if [ ! -d "$Jar/backup" ]; thenecho "备份文件夹不存在,自动创建中";mkdir $Jar/backup;
fi
if [ -f "$dockersrc/$bmc" ];thenecho "旧版本存在,自动备份中"mv $dockersrc/$bmc $Jar/backup/$bmc.$version
fi
echo '第二步:替换JAR包配置文件'
#找到替换文件路径
if [ ! -f "$Jar/$bmc" ];thenecho "$Jar/$bmc更新包不存在"exit 1;
fi
#清除上一次的残余
cd $dockersrc
sudo rm -rf *.tar *.jar
cp $Jar/$bmc $dockersrc
filesrc1=`jar -tvf \$bmc|grep \$file1|awk '{print \$NF}'`
filesrc2=`jar -tvf \$bmc|grep \$file2|awk '{print \$NF}'`
if [ $? != 0 ]; thenecho "java命令不存在,请安装JDK"exit 1;
fi
if [ -f "$dockersrc/$file1" ]; thenecho '替换bootstrap配置文件'jar -xvf $bmc $filesrc1#删掉原文件sudo rm -f $filesrc1#换掉文件cp $file1 $filesrc1#重新将文件加入到jar包中jar -uvf $bmc $filesrc1
fi
if [ -f "$dockersrc/$file2" ]; thenecho '替换application配置文件'jar -xvf $bmc $filesrc2#删掉原文件sudo rm -f $filesrc2#换掉文件cp $file2 $filesrc2#重新将文件加入到jar包中jar -uvf $bmc $filesrc2
fi
#删除解压文件
sudo rm -rf BOOT-INF
sudo rm -f *.tmp
echo '替换完成'
echo '第三步:查看是否有容器'
cd $dockersrc
imageresult=$(docker ps |grep $appname | wc -l)
if [ $imageresult -eq 0 ];
thenecho "不存在容器,需要初始化容器";docker build -t zhhq-$appname .if [ $? != 0 ]; thenecho "docker构建失败,请检查Docker" && exit 1fiif [[ "$appname" == "manager" ]]; thenecho "发布管理端后台"docker run -d --network host --name zhhq-$appname -p 7001:7001 --restart always zhhq-$appnameelif [[ "$appname" == "user" ]];thenecho "发布用户端后台"docker run -d --network host --name zhhq-$appname -p 7011:7011 --restart always zhhq-$appnameelseecho "发布$appname服务"docker run -d --name zhhq-$appname --restart always zhhq-$appnamefiif [ $? -eq 0 ];thenecho "$appname发布成功!" && exit 0elseecho -e '\033[31m[ error ]$appname 发布失败 \033[0m' && exit 1fiif [ $? -eq 0 ];thenecho "$appname发布成功!"elseecho -e '\033[31m[ error ]$appname 发布失败 \033[0m' && exit 1fi
elseecho "已经存在容器,需要更新容器";cOnid=$(docker ps |grep $appname |awk '{print $1}')docker cp $Jar/$appname-server-web-1.0.jar $conid:/$appname-server-web-1.0.jardocker restart $conidif [ $? -eq 0 ]; thenecho "发布成功!"else echo -e '\033[31m[ error ] 发布失败 \033[0m' && exit 1fi
fi
6. 前端脚本
#!/bin/bash
#auth eric
#date 2021-08-13
#*********脚本入参#*********
bmc=smartapp
#*********脚本入参#*********
version="`date +%Y%m%d%H%M%S`"
echo '第一步:备份老版本'
if [ ! -d "$Front/backup" ]; thenecho "备份文件夹不存在,自动创建中";mkdir $Front/backup;
fi
if [ ! -d "$Front/$bmc" ];thenecho '更新包不存在请检查' && exit 1
elseecho "准备更新$appname"
fi
if [ -f "$NginxHtml/$bmc" ];thenecho "旧版本存在,自动备份中"mv $NginxHtml/$bmc $Front/backup/$bmc.$version
fi
mv $Front/$bmc $NginxHtml/
echo "发布成功!"