UAT预发布环境

环境准备

apache-maven-3.6.2

apache-tomcat-8.5.50

jdk1.8.0_181

/etc/profile

export JAVA_HOME=/usr/local/java/jdk1.8.0_181

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

export PATH=${JAVA_HOME}/bin:$PATH

image.png

配置部署

基本认识

.jar 包的文件可直接用 java -jar .jar包名可直接运行 .jar包文件

.war 包需要将文件放入tomcat下的webapps目录下,并且配置conf/server.xml文件才能自动解压运行

具体添加如下:

debug ="0" privileged ="true" reloadable ="false" >

而后启动tomcat就能运行文件,访问IP:9090/hello 得到.war包的程序

image.png

实现自动化的脚本

#!/bin/bash

#传入项目名

PROJECT_NAME=$1

#获取应用网页状态码

curl -I `hostname -i`:9090/${PROJECT_NAME}/ > /root/a.txt

#导入配置文件

conf=" "

#导入配置文件的位置

let location=$(cat /usr/local/tomcat-8.5/conf/server.xml |wc -l )-4

cp /app/*.[jw]ar /usr/local/tomcat-8.5/webapps/

#将包移动到tomcat目录下

sed -ri "${location}i ${conf}" /usr/local/tomcat-8.5/conf/server.xml

#添加配置文件以启动app

sh /usr/local/tomcat-8.5/bin/startup.sh

#启动tomcat

#检查端口

if [ $(ss -ntal |grep 9090|awk -F':::' '{print$2}') -eq 9090 ];then

echo "tomcat的9090端口已经成功启动拉!"

else

echo "tomcat的9090端口未能成功启动"

fi

#读取状态码文件

while read line

do

if [ $(grep -o 200 /root/a.txt) -eq 200 ];then

echo "应用访问成功"

else

echo "应用访问失败"

fi

uniq -d

done

image.png

而后我们执行ansible命令来执行这个脚本就能部署到生产环境了,或者直接在命令里改成ansible的命令

此过程最大的难点就是配置文件加入的位置,与动态变化的应用路由,如果是同一个应用的更新,配置文件会一直重叠下去,可能会导致路由混乱,再有就是配置文件在预生产环境下可以这样做,生产环境则不行,生产环境必须在gitlab上建一个配置文件仓库,一旦配置文件更新,就参数构建触发更新,将这个新的配置文件覆盖过去,替换旧的文件,但这样做其实也有风险,修改配置文件的人员必须修改正确!

java程序发布与部署_java程序UAT的部署相关推荐

  1. java程序卡住的原因_Java程序卡住问题的解决

    最近又遇到一个奇怪的事情,一个非常简单的程序,就是web调用一下从数据库读取一批数据出来显示,程序刚开始一点问题没有,过一段时间就突然死掉了,所有的查询都没有反应. 探索+折磨: 刚开始用的办法真的叫 ...

  2. 关于uniapp小程序发布新版本,小程序不及时更新问题记录

    小程序更新机制 开发者在管理后台发布新版本的小程序之后,微信客户端会有若干个时机去检查本地缓存的小程序有没有新版本,并进行小程序的代码包更新.但如果用户本地有小程序的历史版本,此时打开的可能还是旧版本 ...

  3. java 链接占用太多_Java程序链接数过多导致java.net.SocketException: No buffer space available问题...

    发布时间: Aug 29, 2020 更新时间: Aug 29, 2020 总字数:482 阅读时间:1m 作者: 谢先斌 Java程序链接数过多导致java.net.SocketException: ...

  4. java技术栈有哪些_Java程序员必备的21个核心技术,你都掌握了哪些?

    前言 经过这么多年的Java开发,以及结合平时面试Java开发者的一些经验,我觉得对于J2SE方面主要就是要掌握以下的一些内容. ​1. JVM相关 对于刚刚接触Java的人来说,JVM相关的知识不一 ...

  5. java程序员技术规划_Java程序员职业生涯规划

    Java程序员职业生涯规划 发布时间:2018-09-28 14:10, 浏览次数:429 , 标签: Java <>一.规划 工作3年了,感觉自己的技术现在到了一个瓶颈,在做一些重复性的 ...

  6. java 启动加载顺序_Java 程序的加载运行过程 | 学步园

    为了叙述方便,我写了个小例子 class Three{ private static int s3 = getS3(); private int y = getY(); public Three(){ ...

  7. java程序试岗内容_java程序员修炼之路基础篇四:继承

    上一篇文章我跟大家聊了一下"封装",今天我们聊一下同样作为java语言三大特征之一的"继承". 简单说"继承"就是从一个已知类派生出新类的过 ...

  8. 导入Java文件还是class文件_java程序运行的时候,是把所有的class文件都加载到内存吗?还是用的什么加载什么?...

    这一块还没有深入了解,不敢误人子弟. 我知道的,虚拟机在运行的时候,会预先加载一个常用的class,比如java.lang包下面的. 至于你在程序中自己引用的class文件/jar包之类的,是有一个加 ...

  9. java简述对象的组合_Java程序运行和对象创建过程简述

    Java中一个对象创建分为两个步骤: 加载类,创建对象. 加载类是将所写的程序.java文件编译生成的.class文件加载到内存中,保证了对象创建的预置环境.类加载完毕后才可以创建该类的对象. 第一步 ...

最新文章

  1. 为什么工作时间长了。技术反而变低了。
  2. 二叉树 -php实现先序、中序、后序遍历二叉树
  3. C# GC 垃圾回收机制原理
  4. JEE_Ajax技术
  5. SetMutableGraph
  6. 开源在线视频播放器flowplayer
  7. win7计算机管理快捷键,win7系统中的常用快捷键
  8. ecshop二次开发攻略
  9. 显示硬件发展与视频开发系列(6)----显示标注与视频处理单元(4):GPGPU
  10. 第八章 软件项目团队管理
  11. pyecharts学习笔记
  12. 麻将项目开发--bug mj157
  13. xmanager5链接linux配置,xmanager连接linux5的方法
  14. MySQL中ESCAPE关键字的用法详解
  15. oracle job interval(关于时间误差)
  16. MySQL中事务的提交和回滚机制
  17. 物联网学习篇:Python SDK接入阿里云物联网平台,接收服务端订阅消息
  18. 二手笔记本中常见三叉插头以及英标欧标和美标的区别!
  19. 分治思想应用:数学归纳法、递归、归并排序、MapReduce
  20. Swift ——协议

热门文章

  1. 内毒素检测——内毒素检测-LAL显色试剂盒
  2. java教程pdf文本文档版
  3. 工作上遇到问题,但又不敢问领导,该怎么办
  4. MatLab画贝塞尔函数曲线
  5. 解决android程序调用摄像头黑屏
  6. ARCore之路-前言
  7. 商城开发者必备:快递单号信息查询及上门取件订单物流类API开放接口
  8. python中save是什么意思_如何在Python中生成save函数
  9. Java 输入输出 习题
  10. Node.js 基础篇(十三):Express快速入门