Linux下springboot jar包 自动化部署运行(傻瓜式无需上传项目)

首先,linux下必须先装有项目构建工具maven,代码管理工具git/svn等等。

以本项目为例:

原理就是在服务器上有一个项目对应git服务器代码的应发布项目,用git来管理,每次本地代码更新,直接push到git服务器上,然后在服务器下进行pull,这样服务器上的代码就和git服务器上的预发布代码是一样的,然后利用maven来对服务器代码进行打包,再把jar包从项目路径下cpoy到预发布路径下,执行 java -classpath -jar  *.jar ,这样一个自动部署就OK了。

每次执行update.sh 文件就行,是不是很简单。。。。

---------------------------------------------------------------------start-------------------------------------------------------------------------

一.首先建立三个文件夹分别是:

mvn:maven项目的仓库和maven安装包

peasant:放置项目的运行环境

peasant-update:放置预打包项目 

注:放置项目的时候最好放置可更新项目。

例;svn git 等等,直接把项目push到服务器然后 打包命令拉取项目直接打包运行。

Linux下springboot jar包 自动化部署运行(傻瓜式无需上传项目)_第1张图片/

二:配置mavn环境变量,配置git/svn 当前以git为准

vim /etc/profile

Linux下springboot jar包 自动化部署运行(傻瓜式无需上传项目)_第2张图片

配置好环境后刷新一下环境变量

source /etc/profile

查看环境变量是否配置好

mvn -version

如果出现权限不够执行

chmod a+x /usr/local/mvn/apache-maven-3.5.0/bin/mvn

Linux下springboot jar包 自动化部署运行(傻瓜式无需上传项目)_第3张图片

配置好后,检查一下maven的setting.xml文件的仓库是不是你指定的地址(usr/local/mvn/mvn-repo),不然就下载到默认地址咯

安装git:

yum install git -y

不然打包的时候会报错。

打包时会出现

 

二:编写自动打包命令

1.自动打包名字

Linux下springboot jar包 自动化部署运行(傻瓜式无需上传项目)_第4张图片

注:第二行注释的是因为项目会有私服地址情况下,因为私服仓库里面的代码会改变,这里需要删除jar包然后重新下载,若没有不需写这句话

私服仓库的jar最好放在仓库一个指定的文件夹下,那么删除时(rm -rf /usr/local/mvn/mvn-repo/sifu/*)直接删除对应的文件夹,而不需要删除整个仓库,第一次可能会有点慢,因为要去下载jar包,不知道直接把仓库搬到下面会不会快点,你们可以试下。

 

整体命令:

#删除maven仓库的加载jar包
#rm -rf /usr/local/mvn/mvn-repo/*
#进入git下载工程的目录
cd //usr/local/peasant-update/manage
#执行更新操作
git pull
#进入git下载工程的目录下载工程的service目录
cd //usr/local/peasant-update/manage
#执行打包脚本
mvn clean package -Dmaven.test.skip=true
#删除服务器部署工程的jar包
rm -rf /usr/local/peasant/*.jar
#把新打好的jar包copy到工程的下
cp /usr/local/peasant-update/target/peasant.jar  /usr/local/peasant/
cd /usr/local/peasant/
./restart.sh

 

./restart.sh命令就是自动运行命令

2.自动运行命令

执行jar包命令

#!/bin/sh

SERVER_PORT=20986
APP_PATH=`pwd`
FILE=
KILL_FLAG="1"
if [ -f "$FILE" ]; then
    TP_ID=`cat tpid`
    if  [ $TP_ID ] ;then
        LIVE_TPID=`ps -ef|grep $TP_ID|grep -v grep|grep -v kill|awk '{print $2}'`
        if [ $LIVE_TPID ] && [ "$TP_ID" == "$LIVE_TPID" ] ;then
            echo "$TP_ID Stop Process..."
            kill -15 $TP_ID
            sleep 3
            LIVE_TPID=`ps -ef|grep $TP_ID|grep -v grep|grep -v kill|awk '{print $2}'`
            if [ $LIVE_TPID ] && [ "$TP_ID" == "$LIVE_TPID" ] ; then
                echo 'Kill Process!'
                kill -9 $TP_ID
            else
                echo '$TP_ID Stop Success!'
                KILL_FLAG=""
            fi
        fi
    fi
fi

rm -f tpid

if  [ $KILL_FLAG ] ;then
    LIVE_TPID=`ps -ef|grep $APP_PATH|grep -v grep|grep -v kill|awk '{print $2}'`
    if [ $LIVE_TPID ] ;then
        echo "$LIVE_TPID Stop Process..."
        kill -15 $LIVE_TPID
        sleep 3
        LIVE_TPID=`ps -ef|grep $APP_PATH|grep -v grep|grep -v kill|awk '{print $2}'`
        if [ $LIVE_TPID ] ; then
            echo 'Kill Process!'
            kill -9 $LIVE_TPID
        else
            echo '$LIVE_TPID Stop Success!'
        fi
    fi
fi

#JAVA_OPTS=" -server -Xms2g -Xmx2g -Xss256k -Djava.rmi.server.hostname=localhost -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

JAVA_OPTS=" -server -Xms512m -Xmx512m -Xss256k -Dapp.server.path=$APP_PATH -Ddubbo.protocol.port=$SERVER_PORT -XX:+DisableExplicitGC -XX:+CMSParallelRemarkEnabled -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70"

JAVA_DEBUG_OPTS=""
if [ "$1" = "debug" ]; then
     JAVA_DEBUG_OPTS=" -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=9082,server=y,suspend=n "
fi

# nohup java -jar myapp.jar --spring.config.location=application.yml > /dev/null 2>&1 &
nohup java $JAVA_OPTS $JAVA_DEBUG_OPTS -jar peasant.jar --server.port:80 > stdout.log 2>&1 &

echo $! > tpid
echo Start Success!

tail -f stdout.log
注:此处的jar执行必须是你项目打包后的jar包名字,后面的端口可以不加,加了就指定端口运行

Linux下springboot jar包 自动化部署运行(傻瓜式无需上传项目)_第5张图片三:开始执行

进入项目运行环境下

cd /usr/local/peasant

赋予sh执行权限

chmod 777 *.sh

执行命令

./update.sh

 

1.maven自动下载jar包

Linux下springboot jar包 自动化部署运行(傻瓜式无需上传项目)_第6张图片

2.打包完成后可以看项目下是否会有一个项目jar包

Linux下springboot jar包 自动化部署运行(傻瓜式无需上传项目)_第7张图片

3.maven打包后执行jar包

Linux下springboot jar包 自动化部署运行(傻瓜式无需上传项目)_第8张图片

 

4.大功告成!success!!!!!

Linux下springboot jar包 自动化部署运行(傻瓜式无需上传项目)_第9张图片

------------------------------------------------------------------------------------end----------------------------------------------------------------------

你可能感兴趣的:(java,linux,maven,git,spring,boot,jar,自动化部署,jar自动化运行)