云计算百科
云计算领域专业知识百科平台

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

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

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

一、准备工作:修改项目配置
  • 调整打包方式
  • 在 pom.xml 中,将默认的 jar 打包方式改为 war:

    <packaging>war</packaging>

  • 排除内置服务器依赖
  • 需要排除 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>

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

    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
    </dependency>

  • 修改启动类
  • 创建一个继承 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 服务器
  • 下载并安装 Tomcat
  • 从 Apache Tomcat 官网下载合适版本(推荐 Tomcat 9 或 10),解压到本地目录。

  • 打包 Spring Boot 应用
  • 使用 Maven 命令打包:

    mvn clean package

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

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

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

    三、部署到 Jetty 服务器
  • 调整依赖配置
  • 在 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>

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

  • 部署应用
  • 将打包好的 war 文件复制到 Jetty 的 webapps 目录中。

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

    java -jar start.jar

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

    四、常见问题及解决方案
  • 上下文路径问题
  • 如果需要修改应用的上下文路径,可以在 application.properties 中配置:

    server.servlet.context-path=/myapp

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

    <Connector port="8081" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443" />

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

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

    五、总结

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

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

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » Spring Boot 部署到 Tomcat、Jetty 等服务器
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!