Java Web 应用部署 — jar包/war包/Maven/Spring Boot/Tomcat/Nginx代理
来源:
raw/day40 web应用层详解part4.md— 林海峰 Web 应用层第四部分 主题:Java Web 部署(jar包 / war包 / Maven / Spring Boot / Tomcat / Nginx 反向代理)
结构总览
jar包 vs war包
├─ jar包:业务逻辑 + 依赖库,java -jar 直接运行(内置 Tomcat)
└─ war包:业务逻辑 + 依赖库 + web 配置,需外置 Tomcat 容器
Spring Boot 部署
├─ jar 包方式:内置 Tomcat,直接 java -jar 运行
└─ war 包方式:排除内置 Tomcat,部署到外置 Tomcat
Maven 构建工具
└─ pom.xml → mvn clean package -Dmaven.test.skip=true
Tomcat 安装与配置
├─ server.xml(Connector / Host)
└─ 虚拟主机(多域名托管)
Nginx 反向代理 Tomcat
└─ proxy_pass + proxy_set_header 透传
jar包 vs war包
| 格式 | 内容 | 运行方式 | 适用场景 |
|---|---|---|---|
| jar包 | 业务逻辑代码 + 依赖库 | java -jar xxx.jar | Spring Boot 应用(内置 Tomcat) |
| war包 | 业务逻辑 + 依赖库 + web 配置 | 放入 Tomcat webapps 目录 | Java Web 需外置容器 |
Spring Boot spring-boot-starter-web 默认集成 Tomcat,因此也能以 war 包形式部署(需排除内置 Tomcat)。
Spring Boot 部署流程
jar 包方式(推荐):
JDK 1.8 → Maven → MySQL → 拉取源码(RuoYi)→ 修改数据库配置 → mvn clean package → java -jar ruoyi-admin.jar
war 包方式:
修改 pom.xml(<packaging>war</packaging> + 排除 spring-boot-starter-tomcat)→ mvn clean package → 安装 Tomcat → 将 war 包放入 webapps/ → Tomcat 自动解压部署
Tomcat 核心配置
server.xml:Connector 端口/线程、Host 虚拟主机- 多 Host 实现同一 Tomcat 托管多域名
webapps/目录自动部署 war 包
Nginx 代理 Tomcat
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}相关页面
- Java Web 体系架构 — jar/war/Tomcat/Maven/Servlet
- Nginx 概念页 — proxy_pass 反向代理
- 架构对比总结 — PHP vs Python vs Go vs Java