用于Spring Boot Jar部署的shell脚本

用于在Jenkins将jar发送到目标节点之后的部署操作, 包含deploy, start, stop, restart功能. 在deploy时会自动备份原jar至指定目录

# Please define the absolute path of tomcat instance
JAVA_HOME=/opt/java/jdk1.8.0_101
RUN_BASE=/home/tomcat/run
BUILD_FOLDER=/home/tomcat/builds
ARCHIVE_FOLDER=/home/tomcat/archives
JAVA_OPTS="-server -Xms512m -Xmx512m -XX:MaxNewSize=256m -Djava.awt.headless=true"

start() {
  echo -n "[$(date +%Y%m%d-%H%M%S)] Start: "

  case "$1" in
    some-common.jar)
        JAVA_OPTS="-server -Xms1024m -Xmx1024m -XX:MaxNewSize=512m -Djava.awt.headless=true"
        echo "Use Xms1024m JAVA_OPTS"
        ;;
    *)
        echo "Use default JAVA_OPTS"
  esac

  pid=`ps -ef|grep ${JAR_FILE}|grep -v ‘grep‘|grep ‘java‘|awk ‘{print $2}‘`
  if [ -z ${pid} ] ; then
    echo $1 port:$2
    nohup ${JAVA_HOME}/bin/java ${JAVA_OPTS} -jar ${JAR_FILE} --server.port=$2 >/dev/null 2>&1 &
  else
    echo $1‘ is running at pid: ‘${pid}
  fi
}

stop() {
  if [ -z $1 ]; then
    exit 1
  fi

  echo -n "[$(date +%Y%m%d-%H%M%S)] Stop: "
  pid=`ps -ef|grep ${JAR_FILE}|grep -v ‘grep‘|grep ‘java‘|awk ‘{print $2}‘`
  if [ -z $pid ] ; then
    echo $1‘ is not running‘
  else
    echo $1‘ is running at pid:‘${pid}
    kill $pid
    sleep 5
  fi

  pid=`ps -ef|grep ${JAR_FILE}|grep -v ‘grep‘|grep ‘java‘|awk ‘{print $2}‘`
  if [ -z $pid ] ; then
    echo ‘Done‘
  else
    echo ‘Still running, now killing with pid:‘${pid}
    ps -ef|grep ${JAR_FILE}|grep -v ‘grep‘|grep ‘java‘|awk ‘{print $2}‘|xargs kill -s 9
  fi
}

restart() {
  stop $1
  start $1 $2
}

deploy() {
  if [ -z $2 ]; then
    echo $"Usage: $0 $1 [port]"
    exit 2
  fi
  # -f filename - Check for regular file existence not a directory
  [ -f ${BUILD_FOLDER}/$1 ] || exit 1

  stop $1
  df -h
  echo ‘‘

  local BACKUP_FILENAME=$1.$(date +%Y%m%d-%H%M)
  echo -n "[$(date +%Y%m%d-%H%M%S)] Deploy: "
  echo -n "backup ${BACKUP_FILENAME}... "
  mv ${JAR_FILE} ${ARCHIVE_FOLDER}/${BACKUP_FILENAME}
  echo -n "copy... "
  cp -f ${BUILD_FOLDER}/$1 ${RUN_BASE}/
  echo ‘done‘

  start $1 $2
}

# -z tests for a null string
if [ -z $1 ]; then
  echo $"Usage: $0 {start|stop|restart|deploy} [some.jar] [port]"
  exit 2
elif [ -z $2 ]; then
  echo $"Usage: $0 {start|stop|restart|deploy} [some.jar] [port]"
  exit 2
fi

JAR_FILE=${RUN_BASE}/$2
# -e Check for file existence regardless of type (node, directory, socket)
[ -e ${JAR_FILE} ] || exit 1

case "$1" in
    start)
        if [ -z $3 ]; then
          echo $"Usage: $0 $1 [some.jar] [port]"
          exit 2
        fi
        $1 $2 $3
        ;;
    stop)
        $1 $2
        ;;
    restart)
        $1 $2 $3
        ;;
    deploy)
        if [ -z $3 ]; then
          echo $"Usage: $0 $1 [some.jar] [port]"
          exit 2
        fi
        $1 $2 $3
        ;;
    *)
        echo $"Usage: $0 {start|stop|restart|deploy} $2 [port]"
        exit 2
esac

  

原文地址:https://www.cnblogs.com/milton/p/10525051.html

时间: 2024-07-31 01:18:51

用于Spring Boot Jar部署的shell脚本的相关文章

spring boot jar 部署linux服务器

用命令启动spring boot 项目,一旦终端命令窗口关闭,项目也就关闭了,所以我们采用脚本的方式来运行jar 正常命令 java -jar xxx.jar 脚本启动,vim 创建 start.sh #!/bin/sh rm -f tpid nohup java -jar /data/app/myapp.jar --spring.profiles.active=stg > /dev/null 2>&1 & echo $! > tpid 脚本关闭 tpid=`cat tp

Spring boot centos部署启动停止脚本

原文地址:http://www.cnblogs.com/skyblog/p/7243979.html 使用脚本启动和关闭服务,centos下的脚本启动和关闭可以如下: start(){ now=`date "+%Y%m%d%H%M%S"` exec java -Xms64m -Xmx256m -jar ./simple-service-0.0.1.jar --server.port=7085 --config.name=pro > logs/simple-service.log

玩转spring boot——war部署

前言 之前部署spring boot应用是通过直接输入命令“java -jar”来实现的.而有些情况,由于部署环境的制约,只能把项目从jar转换成war才能部署,如新浪云sae的java环境容器.那怎样转换成war项目呢? 其实非常简单,只需要App类继承SpringBootServletInitializer,并重写“protected SpringApplicationBuilder configure(SpringApplicationBuilder builder)” 方法即可 pack

多个Spring Boot项目部署在一个Tomcat容器无法启动

Tomxin7 Simple, Interesting | 简单,有趣 本文将花费您五分钟时间 业务介绍 最近用Spring Boot开发了一个翻译的小项目,但是服务器上还跑着其他项目,包括一个同样用Spring Boot开发的微信后端服务,本次业务需要在阿里云的Linux使用同一个Tomcat容器部署多个项目. 部署环境:JDK8.Tomcat8.Centos7 遇到的问题 我多个项目一直都是部署在同一个Tomcat下,共用80端口,之前使用的MVC或者Servlet项目都没有问题,但是今天把

spring boot tomcat 部署

前几天springboot项目部署到linux中,整个过程就是个坑啊.踩坑的过程中也学到了许多.spring boot 项目部署时由于其内置了tomcat和jdk,而且还都是8. 所以部署的话就分为两种部署了, 第一种就是使用其内置的tomcat部署, 第二种就是采用外部的tomcat部署.采用内部的tomcat部署又分为两种: 第一种是打包成war包部署,第二种事打包成jar包部署. 两者区别就在于打包成jar包的是无静态资源的,如jsp,HTML等,像只是提供restful接口. 阅读此篇博

Spring Boot 热部署

需要在pom.xml文件中加如下代码: 1 <dependencies> 2 <dependency> 3 <groupId>org.springframework.boot</groupId> 4 <artifactId>spring-boot-devtools</artifactId> 5 <optional>true</optional> 6 </dependency> 7 </depe

Lvs别样的自动部署监控shell脚本

Lvs别样的自动部署监控shell脚本   l 脚本功能: l 实验环境图: l 具体脚本: l 结果验证: l 参考资料: 先申明,本文现在已经在我公司的测试环境和生产测试环境使用.正式环境请用keepalived+lvs. 安装ipvsadm不多说了,先说说脚本的功能,脚本分为redirect server 端和realserver 端,脚本分别为 lvs_redirector.sh 和realserver.sh脚本.另外加一个监控脚本lvs_monitor.sh(此脚本来源网友,做了一点修

linux服务器部署jar包以及shell脚本的书写

背景:记录在linux环境下部署jar程序的过程 1 部署过程记录 1.1 程序结构 这里的main函数就在DemRest2.java 文件中. 为了部署方便,要做到以下两点: 1 在导出的jar包中不包含依赖的jar文件 2 程序用到的配置文件可以让用户进行自定义 ,不将其放在jar包中. 1.2 导出jar包 这里导出普通的jar包即可.为了方便传输,只导出必须的程序文件. 在jar包导出后,进入导出的jar包中,将配置文件tws.properties文件删除. 1.3 程序部署 将所有需要

Spring Boot项目部署到 IBM WebSphere 8.5.5需要注意的地方

遇到问题 对Spring Boot观察了好久,最近终于开始有机会使用Spring Boot来做项目的开发,Spring Boot不需要部署,用jar包模式运行的机制,非常适合做快速开发,能在项目演示和迭代期间起到快速的推进作用.整体来说是一个非常好快速开发框架. 今天着重要说一下的是Spring Boot项目打包成war包,部署到J2EE容器,特别是Websphere遇到的问题. 首先Spring Boot项目build的war包,在Tomcat 7,8,Jetty等容器下,不论是嵌入到ecli