spring boot項目在linux下發布腳本

方式一

1 xxx-service.jar解壓java

-rw-r--r--. 1 deploy deploy    462 Nov  1  2016 application.properties
drwxr-xr-x. 3 deploy deploy   4096 Nov  1  2016 com
-rw-r--r--. 1 deploy deploy 700416 Jun 19 19:20 console.log
-rw-r--r--. 1 deploy deploy    276 Nov  1  2016 datasource.properties
drwxr-xr-x. 3 deploy deploy   4096 Nov  1  2016 db
-rw-r--r--. 1 deploy deploy    768 Nov  1  2016 dubbo-consumers.xml
-rw-r--r--. 1 deploy deploy   2204 Nov  1  2016 xxx-memcache.xml
-rwxr-xr-x. 1 deploy deploy    250 Nov  1  2016 xxx-start.sh
drwxr-xr-x. 2 deploy deploy  12288 Nov  1  2016 lib
-rw-r--r--. 1 deploy deploy   1623 Nov  1  2016 logback.xml
-rw-r--r--. 1 deploy deploy    154 Nov  1  2016 memcached.properties
drwxr-xr-x. 3 deploy deploy   4096 Nov  1  2016 META-INF
drwxr-xr-x. 4 deploy deploy   4096 Nov  1  2016 mybatis
-rw-r--r--. 1 deploy deploy    461 Nov  1  2016 mybatis-config.xml
drwxr-xr-x. 3 deploy deploy   4096 Nov  1  2016 org

2 編寫發佈腳本xxx-service-start.sh,內容以下:git

#!/bin/sh
/usr/local/jdk/bin/java -server -Xms64m -Xmx512m -XX:+UseConcMarkSweepGC -Dapplication=xxx-service org.springframework.boot.loader.JarLauncher >> /opt/logs/console.log &2>1
echo 'xxx-service start success '

3 執行腳本 sh  xxx-service-start.shspring

方式二

不解壓xxx-service.jar,直接使用api

nohup java -jar xxx-service-impl-0.0.1.jar & 

方式三

1 新建目錄/root/xxx-apigateway,而後到該目錄下執行git clone url地址,克隆項目bash

2 新建文件deploy1.shmybatis

#!/bin/bash
set -e
CODE_DIR=/root/xxx-apigateway
TARGET_DIR=/root/xxx-apigateway/apigateway/target
JAR_NAME=apigateway
function chkerr()
{
  if [ $? -ne 0 ]
  then
    echo $1
    exit 1
  fi
}

cd $CODE_DIR
chkerr "path not exists"
git pull
chkerr "git pull error"
mvn clean install -Dmaven.test.skip=true
chkerr "mvn error"
cd $TARGET_DIR
chkerr "no target dir"
jarFile="${JAR_NAME}-${xxx_VERSION_DEV}.jar"
if [ ! -f "$jarFile" ]
then
  echo "no jar file ${JAR_NAME}"
  exit 1
fi
curDate=`date '+%m%d'`
cp "$jarFile" /root/bin/${JAR_NAME}-$curDate.jar
cp "$jarFile" /root/bin/${JAR_NAME}.jar
cd /root/bin/
echo "stop..."
PID=$(ps -ef | grep java.*\.jar | grep ${JAR_NAME}  | grep -v grep | awk '{ print $2 }')
if [ -z "$PID" ]
then
    echo "already stopped"
else
    kill $PID
fi
sleep 5
echo "start..."
nohup java -Xmx256m -Xms128m -XX:MaxPermSize=128m -jar ${JAR_NAME}.jar --spring.profiles.active=local >> /dev/null 2>&1 &
echo "success"
exit 0

3 新建文件deploy2.shapp

#!/bin/bash
set -e
function chkerr()
{
  if [ $? -ne 0 ]
  then
    echo $1
    exit 1
  fi
}

cd /root/xxx/xxx-xxx-server
chkerr "path not exists"
git pull
chkerr "git pull error"
mvn clean package -Plocal -U -DskipTests
chkerr "mvn error"
cd xxx-apigateway/target
chkerr "no target dir"
jarFile="xxx-apigateway-0.0.1-SNAPSHOT.jar"
if [ ! -f "$jarFile" ]
then
  echo "no jar file"
  exit 1
fi
curDate=`date '+%m%d'`
cp "$jarFile" /root/bin/xxx-apigateway-$curDate.jar
cp "$jarFile" /root/bin/xxx-apigateway-local.jar
cd /root/bin/
echo "stop..."
PID=$(ps -ef | grep java.*\.jar | grep 'xxx-apigateway-local'  | grep -v grep | awk '{ print $2 }')
if [ -z "$PID" ]
then
    echo "already stopped"
else
    kill $PID
fi
sleep 5
echo "start..."
nohup java -Xmx256m -Xms128m -XX:MaxPermSize=128m -jar xxx-apigateway-local.jar  >> /dev/null 2>&1 &
echo "success"
exit 0

4 以上兩個文件內容基本一致,選其一便可maven

5 執行腳本memcached

 

總結:以上三種方式,第三種方式相對來講較爲方便,省去了每次打包、上傳的麻煩,但腳本比較複雜。

相關文章
相關標籤/搜索