springboot项目服务器热部署,SpringBoot手动部署到Tomcat和自动化热部署

前言:

在Eclipse中使用springboot项目,运行只须要直接右键默认的启动类DemoApplication.java  ,Run As -->Spring Boot App便可。html

可是咱们想把项目的war包部署到服务器的tomcat中,那么就必须作一些修改java

部署到tomcat

环境:

本地:Eclipse、SpringBoot2.1.二、Maven

服务器:CentOs7  JDK1.8  Tomcat9.10web

1.修改打包方式为warspring

在pom.xml中修改:apache

warapi

2.移除嵌入式tomcat插件tomcat

在pom.xml里找到spring-boot-starter-web依赖节点,将其修改为以下:springboot

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-tomcat

由于spring-boot-starter-web中依赖了spring-boot-starter-tomcat,而咱们如今是使用服务器上的tomcat,天然要排除这个默认的,因此为了让打包的war包小一些,添加如上代码服务器

3.添加servlet依赖app

javax.servlet

javax.servlet-api

provided

4.咱们须要相似于web.xml的配置方式来启动spring上下文,在DemoApplication类的同级添加一个SpringBootStartApplication类,继承SpringBootServletInitializer。其代码以下:

public class SpringBootStartApplication extends SpringBootServletInitializer {

@Override

protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {

// 注意这里要指向原先用main方法执行的Application启动类

return builder.sources(DemoApplication.class);

}

}

5. 打包部署

在项目根目录下(即包含pom.xml的目录),在命令行里输入: mvn clean package,或者项目右键Run As ->Maven install

而后把target目录下的war包放到tomcat的webapps目录下,启动tomcat

访问:http://localhost:[端口号]/[打包项目名]/

注意:这个打包项目名是指你的war包名称,通常咱们会编成xxxServer-0.0.1-SNAPSHOT, 因此访问路径为:

http://ip:8080/xxxServer-0.0.1-SNAPSHOT/xxx

若是须要在springboot中加上request前缀,须要在application.properties或者application.yml中添加server.contextPath=/prefix/便可。其中prefix为前缀名。

可是这个前缀会在war包中失效,取而代之的是war包名称(相似于xxxServer-0.0.1-SNAPSHOT),若是war包名称和prefix相同的话,那么调试环境和正式部署环境就是一个request地址了

配置自动化部署

上面的方法只是打包war包,每次都要受到上传tomcat,并重启tomcat。过于繁琐.

咱们使用tomcat的maven插件完成自动部署,和这篇文章相似,能够参考:https://blog.csdn.net/wcc27857285/article/details/82768550

1.修改服务器上tomcat/conf/tomcat-user.xml ,在最后加上以下内容

2.修改tomcat/webapps/manager/META-INF/context.xml

由于tomcat的manager页面是默认只能本机访问,因此还须要修改下usr/local/tomcat/webapps/manager/META-INF/context.xml 配置文件

将Context节点下的Value节点注释便可

或者加入你的本地机器的ip:101.71.45.321,以下图:

c81b64b86da9a5f3e6dcc65635049245.png

而后重启下tomcat,访问下http://serverip:port/manager/html试试,若配置正确,应该能访问该页面

3.在pom.xml文件下加入插件

org.apache.tomcat.maven

tomcat7-maven-plugin

8082

http://xxx.xx.xx.xx:8082/manager/text

kevin

123456

/webapp

true

username 和password和tomcat-user.xml中配置的一致

4.部署

若是是第一次部署,运行mvn tomcat7:deploy进行自动部署(对于tomcat8,9,也是使用tomcat7命令),若是是更新了代码后从新部署更新,运行mvn tomcat7:redeploy。

若是第一次部署使用mvn tomcat7:redeploy,则只会执行上传war文件,服务器不会自动解压部署。若是路径在tomcat服务器中已存在而且使用mvn tomcat7:deploy命令的话,上面的配置中必定要配置true,否则会报错。

部署后访问下http://serverip:port/[项目名]   ,成功!

遇到的问题:

eclipse-->run as -->maven install

报错:No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

提示找不到能改编译的工具,编译必须用到开发工具,也就是jdk,jre是运行环境,并不具有编译功能。

解决方法:项目右键--> build path --> libraries -->选择jre -->edit-->选择jdk,以下图

b7d229df642c8c5fd630251a421fd972.png

2.eclipse -->run as ->maven build-> tomcat7:deploy   时报错

[INFO] --- tomcat7-maven-plugin:2.2:deploy (default-cli) @ RestApi ---

[INFO] Deploying war to http://localhost:8080/

Uploading: http://localhost:8080/manager/text/deploy?path=%2F

[INFO] I/O exception (java.net.SocketException) caught when processing request: Connection reset by peer: socket write error

这个是由于在webapps下已经存在了这个项目。没法执行覆盖更新命令,须要执行redeploy命令才能够覆盖更新。或者执行undeploy先卸载存在的项目,而后再执行deploy便可。

3.eclipse -->run as ->maven build-> tomcat7:deploy

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值