📜  Spring Boot - 使用 Tomcat 进行项目部署(1)

📅  最后修改于: 2023-12-03 15:05:15.657000             🧑  作者: Mango

Spring Boot - 使用 Tomcat 进行项目部署

在 Spring Boot 中,可以使用内嵌的 Tomcat 进行开发和测试,但是在生产环境中,通常需要使用独立的 Tomcat 实例来部署应用程序。本文将介绍如何使用 Tomcat 部署 Spring Boot 项目。

1. 构建可执行的 WAR 文件

首先,需要将 Spring Boot 项目打成 WAR 文件。在 pom.xml 文件中添加以下配置:

<packaging>war</packaging>

<dependencies>
    <!-- 添加 Tomcat 依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
</dependencies>

<!-- 配置 Maven 插件 -->
<build>
    <plugins>
        <!-- 添加 Maven War 插件 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>3.1.0</version>
            <configuration>
                <failOnMissingWebXml>false</failOnMissingWebXml>
                <webappDirectory>${project.build.directory}/${project.build.finalName}</webappDirectory>
                <warName>${project.build.finalName}</warName>
            </configuration>
        </plugin>
        <!-- 添加 Maven Dependency 插件 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>3.0.2</version>
            <executions>
                <execution>
                    <id>copy-dependencies</id>
                    <phase>package</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                        <includeScope>runtime</includeScope>
                        <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/lib</outputDirectory>
                        <stripVersion>true</stripVersion>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

上述配置中:

  • 将项目打包成 WAR 包。
  • 添加 Tomcat 依赖,这样应用程序中的 Tomcat 依赖会被移除,而只使用外部 Tomcat 依赖。
  • 添加 Maven War 插件,生成 WAR 文件。
  • 添加 Maven Dependency 插件,将项目依赖复制到 WAR 文件中。

执行 mvn clean package 命令,生成可执行的 WAR 文件。

2. 配置 Tomcat

将生成的 WAR 文件,部署到 Tomcat 的 webapps 目录中,启动 Tomcat 即可访问应用程序。

可以在 Tomcat 的 conf 目录中,修改 server.xml 文件,配置 Tomcat 的端口号等信息。

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />
3. 支持 HTTPS 协议

如果想要支持 HTTPS 协议,可以在 Tomcat 的 conf 目录中,创建 server.keystore 文件。

执行以下命令,生成 server.keystore 文件:

keytool -genkeypair -alias tomcat -keyalg RSA -keysize 2048 -keystore server.keystore -validity 3650

将 server.keystore 文件,复制到 Tomcat 的 conf 目录中。

修改 Tomcat 的 conf 目录中的 server.xml 文件,添加以下配置:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS"
               keystoreFile="/path/to/tomcat/conf/server.keystore"
               keystorePass="password" />
  • 确保 keystoreFile 属性指向 server.keystore 文件的路径。
  • 将 keystorePass 属性替换为实际的密钥密码。

然后,启动 Tomcat,即可通过 HTTPS 协议访问应用程序。

4. 指定 Tomcat 版本号

如果需要指定 Tomcat 版本号,可以在 pom.xml 文件中添加以下配置:

<properties>
    <tomcat.version>9.0.21</tomcat.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-core</artifactId>
        <version>${tomcat.version}</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-el</artifactId>
        <version>${tomcat.version}</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-websocket</artifactId>
        <version>${tomcat.version}</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

上述配置指定了 Tomcat 版本号为 9.0.21。需要注意的是,tomcat-embed-core、tomcat-embed-el 和 tomcat-embed-websocket 依赖版本号应该与 tomcat.version 相同。

5. 总结

本文简单介绍了如何使用 Tomcat 部署 Spring Boot 项目,以及指定 Tomcat 版本号和支持 HTTPS 协议。