由于公司技术部团队较小,没有专门的运维团队,所以运维工作技术部承包了。

一、纯人工部署是这样的:

1. 本地打包:一般 maven clean package

2. 借助xftp上传到服务器对应目录

3. 借助 xshell连接到服务器

4.开始部署:

a、找到程序运行的进程id:ps -ef | grep java

b、杀死进程: kill -9 pid

c、启动新的jar包: java -jar  包名  --spring.profiles.active=test &

二、使用shell脚本自动化部署

1. 脚本

 
#!/bin/bash
jarName=$1
jarNew=$(find $jarName*jar)
jarHead=$(find $jarName*jar | awk -F '.' '{print $1}')
#echo "jarHead --- ${jarHead}"
echo "本次更新的包名----${jarNew}----"
sleep 3 PID=`ps -aux | grep $jarHead | grep -v grep | grep -v deploy | awk '{print $2}'`
#unset PID
echo " ---旧进程PID:${PID}--"
if [ -n "$PID" ];
then
echo "杀死旧的进程……"
sleep 2
kill -9 $PID
else
echo "无旧服务……"
fi echo "开始启动……"
sleep 1
java -jar $jarNew --spring.profiles.active=test &

2. 只需要把文件命名 deploy.sh,保存到jar包相同目录下

3. 启动命令:

a、切换到jar包目录

b、启动:./deploy.sh  jar包名

比如包名  ticket-gateway-1.0.1-SNAPSHOT-f3dbc36.jar

输入 ./deploy.sh ticket-gateway-1.0.1-SNAPSHOT-f3dbc36

然后回车键

c、如果目录下一个服务有多个jar,那么jar包名需要精确,如果只有一个jar包,输入前面一部分能区分即可。

4. 如果是线上环境,就新建一个文件 deploy-prod.sh,修改脚本最后一行:

     java -jar $jarNew --spring.profiles.active=prod &

注意:shell脚本文件名要包含 “deploy”

三、使用shell脚本依然需要自己打包、上传,后续研究下Jenkins+git+maven自动化部署~

shell脚本自动化部署的更多相关文章

  1. shell脚本自动化部署服务

    shell脚本自动化部署 !/bin/bash #export PATH=$PATH:/export/maven/bin run_flag_dir="/data0/shell/deploy_ ...

  2. linux下使用shell脚本自动化部署项目

    在Java开发项目时经常要把正在开发的项目发布到测试服务器中去测试,一般的话是要把项目先打成war包,然后把war包发布到服务器中,关闭服务器, 最后重新启动服务器,虽然这过程不是很繁琐,但如果是多个 ...

  3. Shell脚本-自动化部署WEB

    #! /bin/ ] then echo "#### 参数有误,\$1:构建号必填" exit fi cd /root/workspace/xinya_erp/xinya_web ...

  4. Shell脚本-自动化部署反向代理、WEB、nfs

    部署nginx反向代理三个web服务,调度算法使用加权轮询(由于物理原因只开启两台服务器) AutoNginxNfsService.sh #/bin/bash systemctl status ngi ...

  5. shell脚本自动化部署Zabbix4.2(修改脚本替换版本)

    #!/bin/bash # 检查操作系统版本,该脚本只能运行在 Centos 7.x 系统上 cat /etc/redhat-release |grep -i centos |grep '7.[[:d ...

  6. shell脚本自动化部署XX的案例(附数组使用)

    #!/bin/sh #Auto Make install MFS Files # cat <<EOF ++++++++++++++++Welcome To Use Auto Install ...

  7. fdisk分区硬盘并shell脚本自动化

    最近工作需要用到对硬盘进行shell脚本自动化分区和mount的操作,google了一些资料,下面做个总结. 如果硬盘没有进行分区(逻辑分区或者扩展分区,关于两者概念,自行google),我们将无法将 ...

  8. Shell脚本一键部署——源码编译安装MySQL及自动补全工具

    Shell脚本一键部署--源码编译安装MySQL及自动补全工具 编译安装MySQL 1.软件包 Mysql安装包 将安装包拖至/opt目录下,编辑一个脚本文件,将以下内容复制进去,然后source或者 ...

  9. jenkins+maven+Tomcat+shell构建自动化部署

    https://yq.aliyun.com/articles/685931 1.官网下载war包:jenkins本质上就是一个web应用,直接下载jenkins的war包通过tomcat运行即可.ht ...

随机推荐

  1. 【转】Hibernate面试问题集锦: 概述

    ImportNew注: 本文是ImportNew编译整理的Java面试题系列文章之一.你可以从这里查看全部的Java面试系列. Q.怎么配置Hibernate? A.Configuration类使用配 ...

  2. redis最新版本安装及开机自启

    的系统是ubuntu,安装方式有多种,一种是通过apt仓库,一种是下载源码,编译安装 1.通过apt仓库 具体命令: sudo apt-get update sudo apt-get install ...

  3. postman传递当前时间戳

    有时我们在请求接口时,需要带上当前时间戳这种动态参数,那么postman能不能自动的填充上呢. 1请求动态参数(例如时间戳) 直接在参数值写 {{$timestamp}} 如下: 我们也可以使用pos ...

  4. Spark 配置参数

    SparkConfiguration 这一章节来看看 Spark的相关配置. 并非仅仅能够应用于 SparkStreaming, 而是对于 Spark的各种类型都有支持. 各个不同. 其中中文参考链接 ...

  5. python命名空间(namespace)

    命名空间: 每一个作用域变量存储的位置,或者解释为 存储作用域中变量的字典. 作用: 获取想查看某个作用域中的变量名.变量值. 使用方法: locals()  #当前命名空间 1. 效果图: 2. 代 ...

  6. 第一篇:python中的判断语句和循环

    python与C语言的代码格式区别: 需注意:1.python中语句结束没有分号 “;” 2.python中严格要求缩进,且在判断和循环等语句中把括号用冒号代替. 3.经常使用tab键进行缩进. 4. ...

  7. dp-最长公共子序列(LCS)

    字符序列 与 字符字串的区别 序列是可以不连续的字符串 , 字串必须要是连续的 . 问题描述 : 给定两串字符串 abcde 和 acdf , 找出 2 串中相同的字符序列,观察知 相同的字符序列为 ...

  8. 2、Automapper安装及配置

    一. 安装 我们安装是在 vs 中使用Nuget的方式进行安装 不过安装时需注意一件事情就是,版本问题,我示例使用的是.net framework 4.5.2,所以我安装AutoMapper的版本是7 ...

  9. RegExp正则表达式基础

    什么是正则表达式 正则表达式用于对字符串模式匹配及检索替换 如何创建正则 有两种创建正则的方法: js风格 new RegExp(pattern [, flags]) perl风格 /pattern/ ...

  10. TensorFlow or PyTorch

    既然你已经读到了这篇文章,我就断定你已经开始了你的深度学习之旅了,并且对人造神经网络的研究已经有一段时间了:或者也许你正打算开始你的学习之旅.无论是哪一种情况,你都是因为发现你陷入了困惑中,才找到了这 ...