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 服务器
从 Apache Tomcat 官网下载合适版本(推荐 Tomcat 9 或 10),解压到本地目录。
使用 Maven 命令打包:
mvn clean package
将生成的 war 文件(位于 target 目录下)复制到 Tomcat 的 webapps 目录中。
运行 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>
从 Eclipse Jetty 官网下载合适版本,解压到本地目录。
将打包好的 war 文件复制到 Jetty 的 webapps 目录中。
运行 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 工具实现自动化部署,进一步提高部署效率和可靠性。
评论前必须登录!
注册