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.jarSpring 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 packagejava -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;
}

相关页面