SpringBoot项目打包部署到Tomcat

一、 文章背景

在最近一个项目中,维护行里一个年代较为久远的单体项目,需要将项目打包放到的tomcat服务器下运行,因为毕业就很少接触单体项目,在这里记录一下。

二、 什么是tomcat

Tomcat是一个开源的Java Servlet容器,它实现了Java Servlet和JavaServer Pages(JSP)规范,用于支持在Java环境中运行Web应用程序。Tomcat是Apache软件基金会的一个项目,它提供了一个可靠且高性能的服务器环境,用于部署和运行Java Web应用程序。Tomcat可以作为一个独立的Web服务器运行,也可以与其他HTTP服务器(如Apache HTTP服务器)配合使用,以提供更强大的功能。

三、 什么是单体项目

单体项目是一种传统的软件架构模式,它将一个完整的应用程序作为一个单一的、独立的单元进行开发、部署和运行。在单体项目中,所有的功能模块和业务逻辑都集中在一个应用程序中,通常使用单一的数据库进行数据存储。

在单体项目中,应用程序的不同模块之间通过函数调用或者直接的方法调用进行通信。这种紧密耦合的架构模式使得开发和测试相对简单,但也存在一些问题。随着应用程序的规模不断增大,单体项目往往变得庞大且复杂,导致代码难以维护和扩展。此外,由于所有的功能都集中在一个应用程序中,当某个模块发生故障时,整个应用程序可能会受到影响。

随着微服务架构的兴起,单体项目逐渐被拆分为多个小型、独立的服务,每个服务负责一个特定的业务功能。这种架构模式可以提供更好的可扩展性、可维护性和可靠性。

四、 什么是war包

WAR(Web Application Archive)是一种用于打包和部署Java Web应用程序的文件格式。它是一种特殊的JAR(Java Archive)文件,用于将Web应用程序的相关文件(如HTML、JSP、Java类、配置文件、静态资源等)打包在一起。

WAR包是一种标准的部署格式,可以在Java Servlet容器中(如Tomcat、Jetty等)进行部署和运行。它提供了一种方便的方式来分发和部署Web应用程序,使得开发人员可以将应用程序打包成一个独立的文件,然后将其部署到目标服务器上。

在部署WAR包时,Servlet容器会将其解压并将其中的文件放置到适当的位置,然后启动Web应用程序。通常,WAR包中的WEB-INF目录包含了应用程序的配置文件、类文件和其他资源,而静态资源(如HTML、CSS、JavaScript文件)通常位于WAR包的根目录或者一个名为"webapp"的目录下。

总而言之,WAR包是一种用于打包和部署Java Web应用程序的文件格式,方便了应用程序的分发和部署。

五、 war包和jar的区别

WAR包和JAR包是两种不同的文件格式,用于打包和部署不同类型的Java应用程序。

  1. 用途不同:WAR包主要用于打包和部署Java Web应用程序,而JAR包主要用于打包和分发Java应用程序的库、组件或可执行文件。
  2. 目录结构不同:WAR包通常包含一个特定的目录结构,其中包括WEB-INF目录和静态资源文件,用于部署Web应用程序。而JAR包没有特定的目录结构要求,可以根据需要自由组织文件。
  3. 部署方式不同:WAR包通常被部署到Java Servlet容器(如Tomcat、Jetty)中,用于运行Web应用程序。而JAR包可以直接运行,或者作为依赖项被其他Java应用程序引用。
  4. 依赖管理不同:JAR包可以包含Java类和资源文件,用于共享和复用代码。它们可以作为库被其他应用程序引用,并通过构建工具(如Maven、Gradle)进行依赖管理。而WAR包通常包含完整的Web应用程序,不会被其他应用程序直接引用。

总而言之,WAR包适用于打包和部署Java Web应用程序,具有特定的目录结构和部署方式。而JAR包适用于打包和分发Java应用程序的库、组件或可执行文件,可以作为依赖项被其他应用程序引用。

六、 SpringBoot打包成war包

要将Spring Boot项目打包为WAR(Web Application Archive)文件,您可以按照以下步骤进行操作:

  1. 在您的Spring Boot项目的pom.xml文件中,将打包方式设置为war。在<packaging>标签中添加以下内容。
<packaging>war</packaging>
  1. 在pom.xml文件中将build节点中的finalName修改为server.context-path中的路径。就是项目名称。
<build>
   <plugins>
     <plugin>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-maven-plugin</artifactId>
     </plugin>
 </plugins>
 <!--打包后的项目名-->
 <finalName>order</finalName>
</build>
  1. 在spring-boot-starter依赖中移除tomcat模块。
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
            </exclusion>
        </exclusions>
</dependency>
  1. 添加servlet依赖。
<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
</dependency>
  1. 在您的Spring Boot项目的启动类上,添加 extends SpringBootServletInitializer 并重写 configure 方法。这将使您的项目能够在Servlet容器中运行。示例代码如下:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class YourApplication extends SpringBootServletInitializer {
     plication.sources(YourApplication.class);
 }
 public static void main(String[] args) {
   SpringApplication.run(YourApplication.class, args);
 }
}
  1. 执行Maven的打包命令,将项目打包为WAR文件。在命令行中,进入项目的根目录,然后运行以下命令。这将在项目的 target 目录下生成一个WAR文件。
mvn clean package
  1. 现在,您可以将生成的WAR文件部署到Servlet容器(如Tomcat)中运行。

[图片上传失败...(image-8e2e76-1693355454820)]
[图片上传失败...(image-c432a7-1693355477023)]

  1. 访问服务。192.168.xxx.xxx:8080/order/doc.html

七、 配置tomcat支持https

要配置Tomcat支持HTTPS,您可以按照以下步骤进行操作:

  1. 获取SSL证书:您需要从可信任的证书颁发机构(CA)或自签名证书创建工具中获取SSL证书和私钥。通常,您会收到一个包含.crt和.key文件的证书文件。
  2. 将证书和私钥文件复制到Tomcat服务器上的某个目录中,例如 /path/to/cert
  3. 打开Tomcat的配置文件 server.xml ,该文件位于Tomcat安装目录的 conf 文件夹中。
  4. server.xml 文件中,找到以下Connector配置(可能会有多个Connector配置):
<Connector port="8080" protocol="HTTP/1.1"
 connectionTimeout="20000"
 redirectPort="8443" />
  1. 在该Connector配置的上方,添加一个新的Connector配置,用于HTTPS连接。示例如下:
<Connector port="8443" protocol="HTTP/1.1"
 SSLEnabled="true"
 maxThreads="150"
 scheme="https"
 secure="true"
 keystoreFile="/path/to/cert/your_certificate.crt"
 keystorePass="your_keystore_password"
 keystoreType="PKCS12" />

确保按照实际情况修改 keystoreFile 为您的证书文件路径, keystorePass 为您的证书密码, keystoreType 为证书类型(根据您的证书类型进行修改)。 6. 保存并关闭 server.xml 文件。 7. 启动或重新启动Tomcat服务器。

现在,Tomcat将在8443端口上启动一个HTTPS连接,您可以使用https://localhost:8443 访问您的应用程序。请确保在浏览器中信任您的证书,以避免安全警告。

八、 隐藏tomcat的版本信息

要隐藏Tomcat版本信息,您可以按照以下步骤进行操作:

  1. 打开Tomcat的配置文件 server.xml ,该文件位于Tomcat安装目录的 conf 文件夹中。
  2. server.xml 文件中,找到以下配置:
<Server port="8005" shutdown="SHUTDOWN">
  1. 在该配置的上方,添加一个新的配置,用于隐藏版本信息。示例如下:
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
  1. 保存并关闭 server.xml 文件。
  2. 启动或重新启动Tomcat服务器。

现在,Tomcat将不再在HTTP响应头中显示版本信息。请注意,这只会隐藏版本信息,但无法阻止有经验的用户通过其他方式确定Tomcat的版本。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容