SpringBoot手动部署到Tomcat和自动化热部署

7 篇文章 0 订阅
3 篇文章 0 订阅

前言:

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

但是我们想把项目的war包部署到服务器的tomcat中,那么就必须做一些修改

 

 

部署到tomcat

环境:

本地:Eclipse、SpringBoot2.1.2、Maven
服务器:CentOs7  JDK1.8  Tomcat9.10

1.修改打包方式为war

在pom.xml中修改:

    <packaging>war</packaging>

 

2.移除嵌入式tomcat插件

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

<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
			 <exclusions>
				<exclusion>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-starter-tomcat</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

因为spring-boot-starter-web中依赖了spring-boot-starter-tomcat,而我们现在是使用服务器上的tomcat,自然要排除这个默认的,所以为了让打包的war包小一些,添加如上代码

 

3.添加servlet依赖

<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<scope>provided</scope>
		</dependency>

 

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 ,在最后加上如下内容

<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="admin" password="password" roles="manager-script"/>
<user username="root" password="password" roles="manager-gui"/>

 

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,如下图:

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

 

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

<plugins>
			<plugin>
				<groupId>org.apache.tomcat.maven</groupId>
				<artifactId>tomcat7-maven-plugin</artifactId>
				<configuration>
					<port>8082</port>
					<url>http://xxx.xx.xx.xx:8082/manager/text</url>
					<username>kevin</username>
					<password>123456</password>
					<path>/webapp</path>   <!-- 应用的部署位置 -->
					<update>true</update>
				</configuration>
			</plugin>
		</plugins>

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

 

4.部署

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

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

 

部署后访问下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,如下图

 

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
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值