SpringBoot项目部署

springboot部署

一、通过遍历文件启动springboot项目

所需文件war包的classes和lib文件夹
将classes和lib文件夹放入同一个文件下
windows服务器
同时放入下方的.bat脚本

@ECHO OFF
@ECHO STARTUP App
@ECHO 设置环境变量,循环当前目录下的lib目录下所有jar文件,并设置CLASSPATH


SET CLASSPATH=classes
FOR %%F IN (lib\*.jar) DO call :addcp %%F
goto extlibe
:addcp
SET CLASSPATH=%CLASSPATH%;%1
goto :eof
:extlibe



@ECHO
SET CLASSPATH=%CLASSPATH%;
@ECHO 
SET CLASSPATH
@ECHO 
java -server com.power.app.AppApplication

修改最后的com.power.app.AppApplication为启动类
LInux服务器
同时放入sh脚本
JAVA_HOME:jdk目录
APP_HOME:文件夹路径
APP_MAINCLASS:启动类路径

#!/bin/sh
##description: Starts, stops Netty
#
#chkconfig: 2345 20 80
#dscription: Startup script for Netty server on CentOS. Place in /etc/init.d
JAVA_HOME="/usr/java/jdk1.8.0_191-amd64"
 
RUNNING_USER=root
 
APP_HOME=/data/monitor
 
APP_MAINCLASS=com.anlyse.monitor.DiApplicationMain
 
CLASSPATH=$APP_HOME/classes
for i in "$APP_HOME"/lib/*.jar; do
   CLASSPATH="$CLASSPATH":"$i"
done
 
LOGS_DIR=$APP_HOME/logs
if [ ! -d $LOGS_DIR ]; then
    mkdir $LOGS_DIR
fi
STDOUT_FILE=$LOGS_DIR/stdout.log
 
JAVA_OPTS="-ms512m -mx2048m -Xmn256m -Djava.awt.headless=true -XX:MaxPermSize=256m"
 
psid=0
 
checkpid() {
   javaps=`$JAVA_HOME/bin/jps -l | grep $APP_MAINCLASS`
 
   if [ -n "$javaps" ]; then
      psid=`echo $javaps | awk '{print $1}'`
   else
      psid=0
   fi
}

start() {
   checkpid
 
   if [ $psid -ne 0 ]; then
      echo "================================"
      echo "warn: $APP_MAINCLASS already started! (pid=$psid)"
      echo "================================"
   else
      echo -n "Starting $APP_MAINCLASS ..."
      JAVA_CMD="nohup $JAVA_HOME/bin/java $JAVA_OPTS -classpath $CLASSPATH $APP_MAINCLASS >$STDOUT_FILE 2>&1 &"
      su - $RUNNING_USER -c "$JAVA_CMD"
      checkpid
      if [ $psid -ne 0 ]; then
         echo "(pid=$psid) [OK]"
      else
         echo "[Failed]"
      fi
   fi
}

stop() {
   checkpid
 
   if [ $psid -ne 0 ]; then
      echo -n "Stopping $APP_MAINCLASS ...(pid=$psid) "
      su - $RUNNING_USER -c "kill -9 $psid"
      if [ $? -eq 0 ]; then
         echo "[OK]"
      else
         echo "[Failed]"
      fi
 
      checkpid
      if [ $psid -ne 0 ]; then
         stop
      fi
   else
      echo "================================"
      echo "warn: $APP_MAINCLASS is not running"
      echo "================================"
   fi
}

status() {
   checkpid
 
   if [ $psid -ne 0 ];  then
      echo "$APP_MAINCLASS is running! (pid=$psid)"
   else
      echo "$APP_MAINCLASS is not running"
   fi
}

info() {
   echo "System Information:"
   echo "****************************"
   echo `head -n 1 /etc/issue`
   echo `uname -a`
   echo
   echo "JAVA_HOME=$JAVA_HOME"
   echo `$JAVA_HOME/bin/java -version`
   echo
   echo "APP_HOME=$APP_HOME"
   echo "APP_MAINCLASS=$APP_MAINCLASS"
   echo "****************************"
}
 

case "$1" in
   'start')
      start
      ;;
   'stop')
     stop
     ;;
   'restart')
     stop
     start
     ;;
   'status')
     status
     ;;
   'info')
     info
     ;;
	*)
	echo "Usage: $0 {start|stop|restart|status|info}"
    exit 1
   ;;
   esac
   exit 0
二、放入tomcat启动

pom文件要除去springboot的tomcat

<!-- 打war包时加入此项, 告诉spring-boot tomcat相关jar包用外部的,不要打进去 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>
<!-- springboot自带的tomcat并没有携带tomcat-embed-jasper的依赖,如果不引入tomcat-embed-jasper依赖,使用SPringboot启动项目则会无法成功-->
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
</dependency>

启动类要改为以下形式

public class AppApplication extends SpringBootServletInitializer {
    public static void main(String[] args) {
        SpringApplication.run(AppApplication.class, args);
    }
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(AppApplication.class);
    }

}

将war包文件解压放入tomcat目录的webapps目录下
设置Host 的appBase属性为空(如果不设置的话springboot项目会发生重复启动),并添加下列代码

    <Context path="/" docBase="D:\QMDownload\apache-tomcat-8.0.50\webapps\power" reloadable="true" debug="0"/>

docBase的路径为解压文件的目录
点击bin/startup.bat 即可

三、命令启动

优点跨平台,简单

java -jar power-app.war --spring.profiles.active=dev

-jar 后跟项目的war包或jar包即可;
spring.profiles.active后跟的是配置文件模式,dev开发;beta测试;prod生产;
对应 application-dev.properties

Tomcat的server.xml文件的一些属性的含义:

Host:
appBase:启动的默认文件夹
autoDeploy: true<当.xml文件、war文件发生改变时,自动重启tomcat>
context:
path:访问路径
docBase:启动的文件,绝对路径或相对于appBase的路径
reloadable:true 项目内部文件发生变更,重新启动项目

对比这两种方式部署的理解:
1、整个war包或jar包启动:
适用于产品级别的部署,或者大版本的迭代,整块一起搞上去,也不需要在一到底改了什么,每次部署的包可能都非常大。
2、采用解压文件,遍历文件Java启动的方式:
适用于开发阶段,测试阶段,小版本的迭代,或者bug的修复,可以每次部署一个小小的文件,部署操作简化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值