Spring Boot 部署到 Tomcat、Jetty 等服务器

Spring Boot 部署到 Tomcat、Jetty 等服务器

Spring Boot 以其内置服务器简化了应用开发和部署流程,但在生产环境中,我们有时需要将应用部署到外部服务器如 Tomcat、Jetty 等,以满足特定的集群管理、版本控制或企业规范要求。本文将详细介绍如何将 Spring Boot 应用部署到这些外部服务器。

一、准备工作:修改项目配置
  1. 调整打包方式

在 pom.xml 中,将默认的 jar 打包方式改为 war:

<packaging>war</packaging>
  1. 排除内置服务器依赖

需要排除 Spring Boot 默认的嵌入式服务器,避免冲突:

<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>
  1. 添加服务器依赖(可选)

如果需要在开发环境中继续使用嵌入式服务器进行测试,可以添加 provided 范围的依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>
  1. 修改启动类

创建一个继承 SpringBootServletInitializer 的类,并覆盖 configure 方法:

@SpringBootApplication
public class DemoApplication extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(DemoApplication.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}
二、部署到 Tomcat 服务器
  1. 下载并安装 Tomcat

从 Apache Tomcat 官网下载合适版本(推荐 Tomcat 9 或 10),解压到本地目录。

  1. 打包 Spring Boot 应用

使用 Maven 命令打包:

mvn clean package
  1. 部署应用

将生成的 war 文件(位于 target 目录下)复制到 Tomcat 的 webapps 目录中。

  1. 启动 Tomcat

运行 Tomcat 的 bin 目录下的 startup.sh(Linux/Mac)或 startup.bat(Windows)。

  1. 访问应用

默认情况下,应用访问路径为:http://localhost:8080/应用名,其中 "应用名" 为 war 文件的名称(不含.war 扩展名)。

三、部署到 Jetty 服务器
  1. 调整依赖配置

在 pom.xml 中,排除 Tomcat 依赖并添加 Jetty 依赖:

<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>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jetty</artifactId>
    <scope>provided</scope>
</dependency>
  1. 下载并安装 Jetty

从 Eclipse Jetty 官网下载合适版本,解压到本地目录。

  1. 部署应用

将打包好的 war 文件复制到 Jetty 的 webapps 目录中。

  1. 启动 Jetty

运行 Jetty 的 bin 目录下的 jetty.sh(Linux/Mac)或 start.jar(通用方式):

java -jar start.jar
  1. 访问应用

访问路径与 Tomcat 类似:http://localhost:8080/应用名

四、常见问题及解决方案
  1. 上下文路径问题

如果需要修改应用的上下文路径,可以在 application.properties 中配置:

server.servlet.context-path=/myapp
  1. 端口冲突问题

修改外部服务器的端口号,如 Tomcat 可修改 conf/server.xml 中的 Connector 端口:

<Connector port="8081" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />
  1. 依赖冲突问题

使用mvn dependency:tree命令检查依赖树,排除冲突的依赖项。

  1. 服务器版本兼容性

确保选择的服务器版本与 Spring Boot 版本兼容,可参考 Spring 官方文档的兼容性矩阵。

五、总结

将 Spring Boot 应用部署到外部服务器虽然比使用内置服务器多了一些配置步骤,但提供了更大的灵活性和可管理性,特别适合生产环境。通过本文介绍的步骤,你可以轻松地将 Spring Boot 应用部署到 Tomcat、Jetty 等主流服务器上,享受 Spring Boot 开发效率的同时,兼顾企业级部署的需求。

在实际项目中,还可以结合 CI/CD 工具实现自动化部署,进一步提高部署效率和可靠性。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java小吕布

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值