首先,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到服务器然后 打包命令拉取项目直接打包运行。

spring boot添加本地JSTL标签_shell

/

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

vim /etc/profile

spring boot添加本地JSTL标签_maven_02

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

source /etc/profile

查看环境变量是否配置好

mvn -version

spring boot添加本地JSTL标签_maven_03

如果出现权限不够执行

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

spring boot添加本地JSTL标签_maven_04

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

安装git:

yum install git -y

不然打包的时候会报错。

打包时会出现

 

二:编写自动打包命令

1.自动打包名字

spring boot添加本地JSTL标签_linux_05

注:第二行注释的是因为项目会有私服地址情况下,因为私服仓库里面的代码会改变,这里需要删除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
 firm -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包名字,后面的端口可以不加,加了就指定端口运行

spring boot添加本地JSTL标签_maven_06

三:开始执行

进入项目运行环境下

cd /usr/local/peasant

赋予sh执行权限

chmod 777 *.sh

执行命令

./update.sh

 

1.maven自动下载jar包

spring boot添加本地JSTL标签_linux_07

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

spring boot添加本地JSTL标签_spring_08

3.maven打包后执行jar包

spring boot添加本地JSTL标签_git_09

 

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

spring boot添加本地JSTL标签_git_10

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