SpringBoot项目部署详细步骤(jar包+war包+Tomcat下部署多个war包)

SpringBoot项目部署详细步骤(jar包+war包+Tomcat下部署多个war包)

文章目录1. 打成 jar 包2. 打成 war 包2.1 入口类继承SpringBootServletInitializer重写configure方法2.2 配置pom.xml文件2.3 IDEA生成war包2.4 部署环境配置tomcat运行项目2.5 配置Tomcat开机自启动(非必须,根据自己情况)3. Tomcat同时部署多个war包4. 警告 [main] org.apache.catalina.webresources.Cache.getResource 无法将位于[/WEB-INF/classes/static/layui/images/face/25.gif]的资源添加到Web应用程序[]的缓存中,因为在清除过期缓存条目后可用空间仍不足 - 请考虑增加缓存的最大空间。1. 打成 jar 包简单一步

直接使用IDEA的快捷方式>>install即可

这样就出来了两个包,我们只要.jar的即可

那么.jar.original是什么?

该解释参考blog https://blog.csdn.net/wupan6688/article/details/103629664

官方文档给的解释:

https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html#getting-started-first-application

谷歌翻译: 您还应该在target目录中看到一个更小的文件myproject-0.0.1-SNAPSHOT.jar.original。这是Maven在Spring Boot重新打包之前创建的原始jar文件 。 (只包含少量用户的类,不包含依赖)

代码语言:javascript代码运行次数:0运行复制.jar.original 是普通jar包,不包含依赖

.jar 是可执行jar包,包含了pom中的所有依赖,可以直接用java -jar 命令执行

如果是部署,就用.jar

如果是给别的项目用,就要给.jar.original这个包2. 打成 war 包参考blog:https://www.cnblogs.com/vipstone/p/9540325.html

这里的部署环境已经准备好了JDK8+Tomcat9的环境

2.1 入口类继承SpringBootServletInitializer重写configure方法如果要进行生产环境部署,需要单独配置一下Spring Boot 的入口类,需要继承SpringBootServletInitializer类,重写configure方法,因为默认情况外部Tomcat不能读取到Spring Boot 入口类的main方法启动程序加载,使用需要继承,代码如下:

代码语言:javascript代码运行次数:0运行复制package com.onemsg.hncj;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.boot.builder.SpringApplicationBuilder;

import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

/**

* 启动类,程序入口

*/

@SpringBootApplication

public class DemoApplication extends SpringBootServletInitializer{

public static void main(String[] args) {

SpringApplication.run(DemoApplication.class, args);

}

/**

* 重写configure方法,加载启动类

* @param application

* @return

*/

@Override

protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {

return application.sources(DemoApplication.class);

}

}2.2 配置pom.xml文件(1)先让IDEA知道你这次要配war包

代码语言:javascript代码运行次数:0运行复制 war(2) 需要排除一下内置tomcat的jar包,防止打包之后与外面Tomcat jar 包冲突,导致项目启动失败,配置如下

代码语言:javascript代码运行次数:0运行复制

org.springframework.boot

spring-boot-starter-tomcat

provided

(3) 修改生成文件的文件名称,可以设置build下的finalName属性,代码如下

代码语言:javascript代码运行次数:0运行复制

hncj-data-visualization

2.3 IDEA生成war包(1)Build>>Build Artifacts

(2)选中war>>Build

出现下面就OK

2.4 部署环境配置tomcat运行项目(1)把war文件复制到tomcat的webapps目录下

(2)配置conf/server.xml

在Host标签内添加Context设置,docBase属性填写war文件名称,配置如下:

代码语言:javascript代码运行次数:0运行复制

(3)启动Tomcat

Tomcat安装目录>>bin/startup.bat

浏览器输入localhost:8080/hncj-data-visualization(刚刚配的项目名)

到此jar包和war包都都打好了

2.5 配置Tomcat开机自启动(非必须,根据自己情况)(1)进入tomcat安装目录/bin中,找到service.bat批处理文件

(2)打开cmd命令窗口,将service.bat文件拖动到cmd命令窗口中,接着输入空格 install tomcat9回车,进行服务安装。

(3)安装完成后,在windows服务中进行查看是否安装成功,也可以通过命令查看。

自启动的开启可以通过服务管理界面用鼠标完成,也可以用命令行

代码语言:javascript代码运行次数:0运行复制启动服务:net start 服务名

停止服务:net stop 服务名

服务自启:sc config 服务名 start=auto

禁用服务:sc config 服务名 start=disabled3. Tomcat同时部署多个war包注:鄙人不是运维相关专业技术人员,大佬勿喷,仅提供基本的学习和使用,欢迎指出不足

网上有很多种方法,很遗憾,在我这儿都不好用,总是出现冲突问题(可能是版本等一系列问题,不是这方面的技术人员,我也不太懂底层的原理,不过最终还是成功了),我这里依然还是Tomcat9+Jdk8的环境

开发环境和我一样的朋友可以参考blog最后的server.xml文件进行大致的部署(这里是两个war包)

我这里为了减少出错,直接一个项目一个端口

原来的server.xml默认给了一个Service(端口是8080,包存放位置是webapps),上面介绍war包部署的时候就是用的这个,我直接复制两份Service粘贴到了下面,下面说一下部署到localhost需要注意的配置

service_name我没改,还是用的Catalina,为了区分开,最好改一下,例如Catalina1和Catalina2接下来我以其中一个为例讲一哈(1)port。端口号修改,我这里第一个项目修改为8083

(2)host-name。默认是localhost,需要部署到外网的话需要修改,这里先不动

(3)host-appBase。默认是webapps,我这里为了区分开就另外新建项目文件夹叫hncjrygj

(4)Context。和上面介绍war包部署的时候一样,配置一下docBase(war包名)就可以了

代码语言:javascript代码运行次数:0运行复制

connectionTimeout="20000"

redirectPort="8443" />

resourceName="UserDatabase"/>

unpackWARs="true" autoDeploy="true">

prefix="localhost_access_log" suffix=".txt"

pattern="%h %l %u %t "%r" %s %b" />

接下来相信应该就可以比葫芦画瓢,想同时部署几个就部署几个了吧。。。

最后附上我的server.xml文件(仅供参考,请根据实际需求进行配置)

代码语言:javascript代码运行次数:0运行复制

type="org.apache.catalina.UserDatabase"

description="User database that can be updated and saved"

factory="org.apache.catalina.users.MemoryUserDatabaseFactory"

pathname="conf/tomcat-users.xml" />

connectionTimeout="20000"

redirectPort="8443" />

resourceName="UserDatabase"/>

unpackWARs="true" autoDeploy="true">

prefix="localhost_access_log" suffix=".txt"

pattern="%h %l %u %t "%r" %s %b" />

connectionTimeout="20000"

redirectPort="8443" />

resourceName="UserDatabase"/>

unpackWARs="true" autoDeploy="true">

prefix="localhost_access_log" suffix=".txt"

pattern="%h %l %u %t "%r" %s %b" />

connectionTimeout="20000"

redirectPort="8443" />

resourceName="UserDatabase"/>

unpackWARs="true" autoDeploy="true">

prefix="localhost_access_log" suffix=".txt"

pattern="%h %l %u %t "%r" %s %b" />

我这里配的是localhost,远程部署到学校数据中心的话修改一下对应的host就可以了

4. 警告 [main] org.apache.catalina.webresources.Cache.getResource 无法将位于[/WEB-INF/classes/static/layui/images/face/25.gif]的资源添加到Web应用程序[]的缓存中,因为在清除过期缓存条目后可用空间仍不足 - 请考虑增加缓存的最大空间。部署的时候如果出现此错误

只用在../conf/context.xml里加一行

代码语言:javascript代码运行次数:0运行复制即可