在 Windows Server 上部署 Java 项目是一个常见的需求,尤其是运行基于 Spring Boot、Java Web 应用或 Java 后端服务。以下是详细的部署步骤和最佳实践:
✅ 一、准备工作
1. 安装 Java 运行环境(JRE 或 JDK)
- 下载 JDK(推荐使用 OpenJDK 或 Oracle JDK):
- 推荐:Adoptium (Eclipse Temurin)
- 或 Oracle 官网
- 安装后配置环境变量:
JAVA_HOME:指向 JDK 安装路径,如C:Program FilesJavajdk-17PATH添加%JAVA_HOME%bin
验证安装:
java -version javac -version (如果安装了JDK)
2. 准备你的 Java 项目
- 确保项目已打包为可执行的 JAR 文件(如 Spring Boot 项目):
mvn clean package # 或 gradle build生成的文件通常在
target/或build/libs/目录下,如myapp.jar
✅ 二、部署 Java 项目
方法一:直接运行 JAR 文件(适合测试/简单部署)
java -jar myapp.jar
注意:此方式在 CMD 关闭后程序会终止。
方法二:以后台服务方式运行(推荐生产环境)
使用工具将 Java 程序注册为 Windows 服务,实现开机自启、后台运行。
推荐工具:NSSM (Non-Sucking Service Manager)
-
下载 NSSM:
- 官网:https://nssm.cc/download
- 下载
nssm-2.24.zip,解压到C:nssm
-
打开命令提示符(管理员权限)运行:
C:nssmnssm.exe install MyJavaApp -
在弹出窗口中配置:
- Path:
C:Program FilesJavajdk-17binjava.exe - Arguments:
-jar "C:myappmyapp.jar" - Startup directory:
C:myapp
- Path:
-
点击 “Install service”
-
启动服务:
net start MyJavaApp -
设置开机自启:
- 在“服务”管理器中找到
MyJavaApp,设置“启动类型”为“自动”
- 在“服务”管理器中找到
方法三:使用 PowerShell 脚本后台运行(无需工具)
创建一个 .ps1 脚本:
# start-app.ps1
Start-Process java -ArgumentList "-jar", "myapp.jar" -WorkingDirectory "C:myapp" -NoNewWindow -RedirectStandardOutput "output.log" -RedirectStandardError "error.log"
以管理员身份运行:
powershell -ExecutionPolicy Bypass -File start-app.ps1
可配合任务计划器实现开机启动。
✅ 三、配置端口与防火墙
- 确保应用端口开放(如 8080)
- 打开 Windows 防火墙设置:
- 控制面板 → Windows Defender 防火墙 → 高级设置
- 添加入站规则,允许 TCP 端口(如 8080)
✅ 四、配置反向(可选,推荐)
如果你希望使用域名或 80/443 端口,建议使用 IIS + ARR(Application Request Routing)做反向。
步骤:
- 安装 IIS(服务器管理器 → 添加角色 → Web 服务器)
- 安装 ARR 模块:Microsoft Web Platform Installer
- 配置网站,将请求到
http://localhost:8080
✅ 五、日志与监控
- 将日志输出重定向到文件:
java -jar myapp.jar > app.log 2>&1 - 使用 Windows 事件查看器或日志轮转工具(如 Logback、Log4j2)
✅ 六、开机自启 + 崩溃重启
- 使用 NSSM 时,可在“Recovery”选项卡中设置:
- 第一次失败:重启服务
- 第二次失败:重启服务
- 后续失败:重启服务
✅ 七、常见问题排查
| 问题 | 解决方法 |
|---|---|
java is not recognized |
检查 JAVA_HOME 和 PATH 环境变量 |
| 端口被占用 | netstat -ano | findstr :8080 找出进程并结束 |
| 权限不足 | 以管理员身份运行 CMD 或服务 |
| 服务启动失败 | 查看 NSSM 日志或事件查看器 |
✅ 八、进阶建议
- 使用 Docker 部署(Windows Server 2019/2022 支持 Docker)
- 使用 Jenkins 或脚本实现自动化部署
- 配置 SSL 证书(通过 IIS 或 Let’s Encrypt)
总结
| 需求 | 推荐方案 |
|---|---|
| 快速测试 | java -jar |
| 生产环境 | NSSM 注册为服务 |
| 域名访问 | IIS + ARR 反向 |
| 自动化部署 | PowerShell 脚本 + 任务计划器 或 CI/CD 工具 |
如果你提供具体的项目类型(如 Spring Boot、普通 Java Web、Tomcat 部署等),我可以给出更精确的部署方案。欢迎继续提问!
ECLOUD博客