当前位置: > 其它学习 > 日常运维 >

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

时间:2019-01-24 05:37来源:未知 作者:IT


首先,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到服务器然后 打包命令拉取项目直接打包运行。
 
/
 
二:配置mavn环境变量,配置git/svn 当前以git为准
 
vim /etc/profile
 
 
 
配置好环境后刷新一下环境变量
 
source /etc/profile
 
查看环境变量是否配置好
 
mvn -version
 
 
 
如果出现权限不够执行
 
chmod a+x /usr/local/mvn/apache-maven-3.5.0/bin/mvn
 
 
 
配置好后,检查一下maven的setting.xml文件的仓库是不是你指定的地址(usr/local/mvn/mvn-repo),不然就下载到默认地址咯
 
安装git:
 
yum install git -y
 
不然打包的时候会报错。
 
打包时会出现
 
 
 
二:编写自动打包命令
 
1.自动打包名字
 
 
 
注:第二行注释的是因为项目会有私服地址情况下,因为私服仓库里面的代码会改变,这里需要删除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包名字,后面的端口可以不加,加了就指定端口运行
 
三:开始执行
 
进入项目运行环境下
 
cd /usr/local/peasant
 
赋予sh执行权限
 
chmod 777 *.sh
 
执行命令
 
./update.sh
 
 
 
1.maven自动下载jar包
 
 
 
2.打包完成后可以看项目下是否会有一个项目jar包
 
 
 
3.maven打包后执行jar包
 
 
 
 
 
4.大功告成!success!!!!!
 
 
 
------------------------------------------------------------------------------------end----------------------------------------------------------------------
--------------------- 
作者:tangzheBk 
来源:CSDN 
原文:https://blog.csdn.net/qq_32915215/article/details/81146858 
版权声明:本文为博主原创文章,转载请附上博文链接!
(责任编辑:IT)
------分隔线----------------------------