- 环境准备:安装 Java 运行环境 和 Web 服务器/应用服务器。
- 部署 Web 应用:将你的 Java Web 应用(通常是 WAR 包)部署到服务器上。
- 访问与维护:启动服务器,访问应用,并进行日常维护。
下面我将为你提供一个详细、分步的指南,以最主流的 Nginx + Tomcat 组合为例,这是目前生产环境中最常用、性能最高的方案。
方案概览:Nginx + Tomcat
- Tomcat:一个开源的 Java Servlet 容器,是运行 Java Web 应用的核心,它负责解析 Java 代码(Servlet, JSP)并返回动态内容。
- Nginx:一个高性能的 HTTP 和反向代理服务器,它扮演两个角色:
- 反向代理:接收来自外部的所有 HTTP/HTTPS 请求,然后根据 URL 路径将请求转发给后端的 Tomcat 处理,用户只与 Nginx 通信,增强了安全性。
- 静态资源处理:直接处理 CSS, JavaScript, 图片等静态文件,减轻 Tomcat 的负担,提升整体性能。
第一步:环境准备(以 CentOS 7 为例)
更新系统
sudo yum update -y
安装 Java 运行环境
Java Web 应用需要 JRE 来运行,我们推荐安装 OpenJDK,它是免费且开源的。
# 安装 OpenJDK 11 (这是一个非常稳定且广泛使用的版本) sudo yum install java-11-openjdk-devel -y # 验证安装 java -version # 应该显示类似 openjdk version "11.0.x" 的信息
安装 Tomcat
Tomcat 是一个独立的软件包,我们可以直接从官网下载。
# 创建一个目录用于存放 Tomcat sudo mkdir -p /opt/tomcat cd /opt/tomcat # 下载 Tomcat 10 (支持 Jakarta EE 9, 是较新的版本) # 你可以去官网 https://tomcat.apache.org/download-90.cgi 获取最新链接 sudo wget https://archive.apache.org/dist/tomcat/tomcat-10/v10.1.18/bin/apache-tomcat-10.1.18.tar.gz # 解压 sudo tar -zxvf apache-tomcat-10.1.18.tar.gz # 为了方便,创建一个软链接,版本号可以忽略,方便后续升级 sudo ln -s apache-tomcat-10.1.18 tomcat-current # 设置目录所有者为当前用户,避免权限问题 sudo chown -R $USER:$USER /opt/tomcat
安装 Nginx
Nginx 通常通过系统的包管理器安装。
# 安装 EPEL 仓库 (如果尚未安装) sudo yum install epel-release -y # 安装 Nginx sudo yum install nginx -y # 启动 Nginx 并设置为开机自启 sudo systemctl start nginx sudo systemctl enable nginx # 检查 Nginx 状态 sudo systemctl status nginx
访问你的服务器 IP 地址(http://your_server_ip),如果看到 Nginx 的欢迎页面,说明安装成功。
第二步:部署 Java Web 应用
假设你已经有一个编译好的 Java Web 应用,它的输出是一个 ROOT.war 文件(或者任意 yourapp.war 文件)。ROOT.war 会部署为 Tomcat 的根应用(即访问根路径 )。

准备 WAR 包
将你的 ROOT.war 文件上传到服务器的 /opt/tomcat/webapps 目录,你可以使用 scp, rsync 或者 FTP/SFTP 工具。
# 假设你的 WAR 包已经在本地的当前目录下 # 使用 scp 上传 (需要先在服务器上配置好 SSH 免密登录) scp ROOT.war your_user@your_server_ip:/opt/tomcat/webapps/ # 登录到服务器 ssh your_user@your_server_ip cd /opt/tomcat/webapps
启动 Tomcat
Tomcat 提供了启动脚本。
# 进入 Tomcat 的 bin 目录 cd /opt/tomcat/tomcat-current/bin # 启动 Tomcat (./startup.sh) ./startup.sh
你会看到一些启动日志,启动后,Tomcat 默认在 8080 端口上运行。
验证 Tomcat
直接访问 http://your_server_ip:8080,如果你部署的是 ROOT.war,你应该能看到你的 Web 应用首页,如果没部署,你会看到 Tomcat 的默认主页。

第三步:配置 Nginx 反向代理
我们需要配置 Nginx,让它接收所有请求,并将它们转发给 Tomcat。
创建 Nginx 配置文件
在 /etc/nginx/conf.d/ 目录下创建一个新的配置文件,java-app.conf。
sudo vi /etc/nginx/conf.d/java-app.conf
编写配置内容粘贴到文件中,这个配置会把所有对根路径 的请求都转发给 Tomcat 的 8080 端口。
server {
# 监听 80 端口,处理 HTTP 请求
listen 80;
server_name your_server_ip; # 替换成你的域名或 IP
# 访问日志
access_log /var/log/nginx/java-app.access.log;
error_log /var/log/nginx/java-app.error.log;
location / {
# proxy_pass 指定后端 Tomcat 的地址
# http://tomcat-server:8080/ 表示将请求转发到 Tomcat 的根路径
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;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
重要提示:
- 将
your_server_ip替换成你的服务器公网 IP 地址。 proxy_pass http://127.0.0.1:8080/;这里的 很重要,它表示转发 URL 的路径部分。
测试并重载 Nginx 配置
在重启 Nginx 之前,一定要测试配置文件是否正确。

# 测试 Nginx 配置语法 sudo nginx -t # 如果显示 syntax is ok 和 test is successful,则重载配置 sudo systemctl reload nginx
第四步:访问与维护
最终访问
你可以通过浏览器访问 http://your_server_ip,Nginx 会接收到这个请求,并将其转发给 Tomcat 上的你的 Java Web 应用,用户无需知道 8080 端口的存在。
配置 HTTPS (强烈推荐)
生产环境必须使用 HTTPS,你可以使用 Let's Encrypt 免费获取 SSL 证书。
# 安装 Certbot sudo yum install certbot python3-certbot-nginx -y # 获取证书 (替换 your_domain.com 为你的域名) sudo certbot --nginx -d your_domain.com # Certbot 会自动修改你的 Nginx 配置,添加 HTTPS 监听和重定向
配置完成后,你的网站就可以通过 https://your_domain.com 安全访问了。
日志管理
- Nginx 日志:默认在
/var/log/nginx/目录下。 - Tomcat 日志:在
/opt/tomcat/tomcat-current/logs/目录下,最重要的是catalina.out和localhost.log。
开机自启
为了让 Tomcat 也随服务器启动,可以创建一个 systemd 服务。
# 创建服务文件 sudo vi /etc/systemd/system/tomcat.service
[Unit] Description=Apache Tomcat Web Application Container After=network.target [Service] Type=forking Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.x.x.x.x.x.x.x86_64" # 找到你的 JAVA_HOME 路径 Environment="CATALINA_PID=/opt/tomcat/tomcat-current/temp/tomcat.pid" Environment="CATALINA_HOME=/opt/tomcat/tomcat-current" Environment="CATALINA_BASE=/opt/tomcat/tomcat-current" Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -XX:+
