1. 脚本功能
1)自动替换jar包中的配置文件。
2)自动备份老版本的Jar包
3) 自动判断是初次启动还是更新服务
2. 脚本准备
进入/home目录新建springcloud文件夹,并进入
然后新建文件夹shell、DockerBuilder、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/html alias shell="cd /home/springcloud/shell"
刷新环境变量使其生效
source /etc/profile
配置全局java环境
1.查看已经安装的JDK yum list installed |grep java 2.卸载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 -version 5.执行java,javac命令显示帮助信息则安装成功 6.执行javac 报错:javac: command not found 解决方案: yum install java-1.8.0-openjdk-devel.x86_64
配置全局node环境
#安装源 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" ]; then echo "备份文件夹不存在,自动创建中"; mkdir $Jar/backup; fi if [ -f "$dockersrc/$bmc" ];then echo "旧版本存在,自动备份中" mv $dockersrc/$bmc $Jar/backup/$bmc.$version fi echo '第二步:替换JAR包配置文件' #找到替换文件路径 if [ ! -f "$Jar/$bmc" ];then echo "$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 ]; then echo "java命令不存在,请安装JDK" exit 1; fi if [ -f "$dockersrc/$file1" ]; then echo '替换bootstrap配置文件' jar -xvf $bmc $filesrc1 #删掉原文件 sudo rm -f $filesrc1 #换掉文件 cp $file1 $filesrc1 #重新将文件加入到jar包中 jar -uvf $bmc $filesrc1 fi if [ -f "$dockersrc/$file2" ]; then echo '替换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 ]; then echo "不存在容器,需要初始化容器"; docker build -t zhhq-$appname . if [ $? != 0 ]; then echo "docker构建失败,请检查Docker" && exit 1 fi if [[ "$appname" == "manager" ]]; then echo "发布管理端后台" docker run -d --network host --name zhhq-$appname -p 7001:7001 --restart always zhhq-$appname elif [[ "$appname" == "user" ]]; then echo "发布用户端后台" docker run -d --network host --name zhhq-$appname -p 7011:7011 --restart always zhhq-$appname else echo "发布$appname服务" docker run -d --name zhhq-$appname --restart always zhhq-$appname fi if [ $? -eq 0 ]; then echo "$appname发布成功!" && exit 0 else echo -e '\033[31m[ error ]$appname 发布失败 \033[0m' && exit 1 fi if [ $? -eq 0 ]; then echo "$appname发布成功!" else echo -e '\033[31m[ error ]$appname 发布失败 \033[0m' && exit 1 fi else echo "已经存在容器,需要更新容器"; conid=$(docker ps |grep $appname |awk '{print $1}') docker cp $Jar/$appname-server-web-1.0.jar $conid:/$appname-server-web-1.0.jar docker restart $conid if [ $? -eq 0 ]; then echo "发布成功!" else echo -e '\033[31m[ error ] 发布失败 \033[0m' && exit 1 fi 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" ]; then echo "备份文件夹不存在,自动创建中"; mkdir $Front/backup; fi if [ ! -d "$Front/$bmc" ];then echo '更新包不存在请检查' && exit 1 else echo "准备更新$appname" fi if [ -f "$NginxHtml/$bmc" ];then echo "旧版本存在,自动备份中" mv $NginxHtml/$bmc $Front/backup/$bmc.$version fi mv $Front/$bmc $NginxHtml/ echo "发布成功!"