在 Windows Server 2019 上部署 Java 项目(通常指 Spring Boot、Tomcat 等基于 Java 的应用)是一个常见的需求。以下是完整、分步的部署指南,涵盖环境准备、应用部署、服务化运行和最佳实践。
✅ 一、前置准备
1. 系统要求
- Windows Server 2019(建议 Standard 或 Datacenter 版本)
- 管理员权限(Administrator 或具有等效权限的用户)
- 网络连接稳定(如需下载依赖或访问数据库)
2. 关闭不必要的服务
为提升安全性和性能,建议:
- 关闭防火墙中非必要的端口(仅开放应用所需端口,如 8080、443 等)
- 禁用自动更新干扰(可选,但生产环境建议配置定时更新策略)
✅ 二、安装 Java 运行环境(JRE/JDK)
推荐版本
- Java 8(LTS,广泛兼容)
- Java 11(LTS,推荐用于新项目)
- Java 17(最新 LTS,适合现代 Spring Boot 3.x)
⚠️ 注意:如果项目使用 Maven/Gradle 构建,需安装 JDK;如果仅运行已打包的 JAR/WAR,则只需 JRE。
安装步骤
-
从 Oracle 官网或 Adoptium(Eclipse Temurin)下载对应版本的 JDK/JRE:
- Adoptium
- Oracle JDK
-
安装时选择“自定义安装”,记下安装路径(例如:
C:Program FilesJavajdk-17) -
配置环境变量:
- 右键“此电脑” → “属性” → “高级系统设置” → “环境变量”
- 新建系统变量:
JAVA_HOME = C:Program FilesJavajdk-17 PATH = %JAVA_HOME%bin;%PATH% - 打开命令提示符验证:
java -version javac -version (如果安装了 JDK)
✅ 三、部署 Java 项目
根据你的项目类型,选择以下一种方式:
方式一:直接运行 JAR 文件(Spring Boot 等可执行 JAR)
1. 上传 JAR 包
将打包好的 .jar 文件复制到服务器,例如:
D:appsmyapp.jar
2. 启动应用
cd D:apps
java -Xms512m -Xmx1024m -jar myapp.jar
💡 参数说明:
-Xms512m:初始堆内存
-Xmx1024m:最大堆内存
可根据服务器内存调整
3. 测试访问
浏览器访问:http://<服务器IP>:8080
方式二:使用 Tomcat 部署 WAR 包
1. 下载并安装 Tomcat
- 下载地址:Apache Tomcat
- 解压到
C:tomcat
2. 配置 Tomcat
- 编辑
C:tomcatconfserver.xml,修改 Connector 端口(默认 8080) - 设置 JVM 内存参数:
- 编辑
C:tomcatbinsetenv.bat(若不存在则新建) - 添加:
set CATALINA_OPTS=-Xms512m -Xmx1024m
- 编辑
3. 部署 WAR 包
- 将
.war文件放入C:tomcatwebapps目录 - 启动 Tomcat:
C:tomcatbinstartup.bat
4. 访问应用
http://<服务器IP>:8080/<war文件名>/
✅ 四、将 Java 应用注册为 Windows 服务(推荐生产环境)
直接命令行运行不适合生产环境,建议使用 Windows Service Wrapper 工具将 Java 应用作为后台服务运行。
推荐工具:Winsw(Windows Service Wrapper)
步骤:
-
下载 Winsw
- GitHub: https://github.com/winsw/winsw/releases
- 下载
WinSW.NET4.exe(根据 .NET 版本选择)
-
创建配置文件
myapp.xml(与 exe 同名):<service> <id>MyAppService</id> <name>My Application Service</name> <description>My Spring Boot Application</description> <executable>C:Program FilesJavajdk-17binjava.exe</executable> <arguments>-Xms512m -Xmx1024m -jar "D:appsmyapp.jar"</arguments> <log mode="roll"></log> <onfailure action="restart" delay="10 sec"/> <onfailure action="restart" delay="10 sec"/> <waitodowntimeout>60 sec</waitodowntimeout> </service> -
安装服务:
cd D:apps WinSW.NET4.exe install -
启动服务:
Net start MyAppService -
查看状态:
sc query MyAppService -
卸载服务(如需):
WinSW.NET4.exe uninstall
✅ 优点:开机自启、崩溃自动重启、日志管理、便于监控
✅ 五、配置防火墙与安全
1. 开放应用端口
以开放 8080 端口为例:
New-NetFirewallRule -DisplayName "Allow Java App Port 8080" -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow
2. 限制 IP 访问(可选)
通过安全组或网络 ACL 限制只有特定 IP 可访问应用端口。
3. 启用 HTTPS(推荐)
- 使用 Nginx/IIS 作为反向X_X,配置 SSL 证书
- 或在 Spring Boot 中配置内置 Tomcat 的 SSL
✅ 六、日志与监控
1. 日志输出
- Spring Boot 默认日志输出到控制台和
logs/spring.log - 可通过
logging.file.name=D:/logs/app.log指定日志路径
2. 监控工具
- Prometheus + Grafana:监控 JVM 指标
- ELK Stack:集中日志管理
- Windows Event Viewer:查看系统和服务事件
✅ 七、备份与维护建议
-
定期备份
- 应用代码、配置文件、数据库
- 使用脚本自动备份到异地存储
-
更新策略
- 先在测试环境验证新版本
- 使用蓝绿部署或滚动更新减少停机时间
-
健康检查
- 配置
/actuator/health(Spring Boot Actuator) - 使用外部监控平台定期检查应用状态
- 配置
📌 总结流程图
安装 JDK → 上传项目 → 配置环境变量 → 启动应用 → 注册为 Windows 服务 → 配置防火墙 → 监控维护
❓常见问题排查
| 问题 | 解决方案 |
|---|---|
java 命令未找到 |
检查 JAVA_HOME 和 PATH 是否正确 |
| 端口被占用 | 使用 netstat -ano | findstr :8080 查找占用进程并终止 |
| 内存溢出 | 增加 -Xmx 参数,检查是否有内存泄漏 |
| 服务无法启动 | 检查 XML 配置文件语法,查看 %PROGRAMDATA%winswlogs 日志 |
| 中文乱码 | 确保 JVM 启动参数包含 -Dfile.encoding=UTF-8 |
如需进一步帮助(如 Docker 部署、Nginx 反向X_X、CI/CD 集成),欢迎继续提问!
云知识CLOUD