在 Windows Server 上部署 Java 项目(通常指 Spring Boot 等后端应用)是一个常见的需求。以下是完整、清晰、可操作的步骤指南,涵盖从环境准备到服务化运行的全过程。
✅ 一、前提条件
- Windows Server 已安装远程桌面或具备访问权限
- Java 项目已打包为可执行 JAR 文件(如
app.jar) - 服务器有足够资源(CPU、内存、磁盘空间)
✅ 二、部署步骤详解
步骤 1:安装 JDK(Java Development Kit)
📌 推荐版本:JDK 8 或 JDK 11/17(根据项目要求选择)
方法一:手动下载安装
- 访问 Oracle JDK 或 OpenJDK
- 下载对应 Windows Server 版本的
.msi安装包 - 双击安装,记住安装路径(例如:
C:Program FilesJavajdk-17)
方法二:使用 Chocolatey 快速安装(推荐)
# 以管理员身份打开 PowerShell
choco install openjdk17 -y
验证安装
java -version
javac -version
步骤 2:配置环境变量(可选但推荐)
- 右键“此电脑” → “属性” → “高级系统设置” → “环境变量”
- 新建系统变量:
- 变量名:
JAVA_HOME - 变量值:
C:Program FilesJavajdk-17(根据你的实际路径修改)
- 变量名:
- 编辑
PATH变量,添加%JAVA_HOME%bin - 重启命令行窗口使配置生效
步骤 3:上传 Java 项目 JAR 包
将你的 app.jar 上传到服务器,例如:
D:appsmyprojectapp.jar
✅ 推荐使用工具:
- WinSCP(SFTP 客户端)
- FTP 客户端
- 直接通过远程桌面复制粘贴
步骤 4:测试运行(临时验证)
打开命令提示符(CMD)或 PowerShell,进入 JAR 所在目录:
cd D:appsmyproject
java -jar app.jar
⚠️ 注意:如果项目需要数据库连接、配置文件等,请确保:
application.yml/application.properties已正确放置- 数据库服务已启动并可访问
- 防火墙允许相应端口(如 8080)
如果启动成功,浏览器访问 http://localhost:8080 应能看到项目页面。
步骤 5:将 Java 应用注册为 Windows 服务(长期稳定运行)
❗ 直接通过 CMD 运行会在关闭窗口后停止服务,不适合生产环境。
✅ 推荐使用 NSSM(Non-Sucking Service Manager) 或 WinSW 将 Java 进程注册为 Windows 服务。
方案 A:使用 NSSM(推荐,简单稳定)
- 下载 NSSM:https://nssm.cc/download
- 解压到任意目录,如
C:toolsnssm-2.24 - 以管理员身份打开 CMD,执行:
cd C:toolsnssm-2.24win64
nssm install MyAppService
-
弹出图形界面:
- Path:
C:Program FilesJavajdk-17binjava.exe - Arguments:
-jar D:appsmyprojectapp.jar - Startup directory:
D:appsmyproject - 其他选项按需设置(如日志输出、自动重启等)
- Path:
-
点击 "Install Service"
-
启动服务:
net start MyAppService -
查看服务状态:
sc query MyAppService
方案 B:使用 WinSW(更现代,适合 CI/CD)
- 下载 WinSW:https://github.com/winsw/winsw/releases
- 创建 XML 配置文件
MyApp.xml:<service> <id>MyAppService</id> <name>My Java App</name> <description>This is my Spring Boot application</description> <executable>C:Program FilesJavajdk-17binjava.exe</executable> <arguments>-jar D:appsmyprojectapp.jar</arguments> <log mode="roll"></log> <startmode>Automatic</startmode> <onfailure action="restart" delay="10 sec"/> </service> - 安装服务:
winsw install MyApp.xml winsw start MyApp.xml
步骤 6:配置防火墙开放端口
如果外部需要访问你的 Java 应用(非 localhost),需开放端口(如 8080):
- 打开“高级安全 Windows Defender 防火墙”
- 新建入站规则:
- 类型:端口
- 协议:TCP
- 本地端口:8080
- 操作:允许连接
- 配置文件:域、专用、公用(按需勾选)
- 名称:Java App Port 8080
或使用命令行:
netsh advfirewall firewall add rule name="Java App 8080" protocol=TCP dir=in localport=8080 action=allow
步骤 7:(可选)配置反向X_X + HTTPS(Nginx / IIS)
生产环境中建议不直接暴露 Java 应用端口,而是通过 Nginx 或 IIS 做反向X_X并启用 HTTPS。
Nginx 示例配置(nginx.conf):
server {
listen 80;
server_name yourdomain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
location / {
proxy_pass http://localhost: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;
}
}
✅ 三、运维与监控建议
| 项目 | 建议 |
|---|---|
| 日志管理 | 配置 Logback/Log4j2 输出到文件,定期轮转 |
| 健康检查 | 暴露 /actuator/health 端点供监控系统调用 |
| 自动重启 | NSSM/WinSW 已支持失败自动重启 |
| 备份配置 | 定期备份 application.yml、数据库脚本 |
| 更新部署 | 使用脚本实现零停机部署(先停旧服务 → 替换 JAR → 启新服务) |
✅ 四、常见问题排查
| 问题 | 解决方案 |
|---|---|
java -jar 启动后立即退出 |
检查是否有异常堆栈输出;查看日志文件 |
| 端口被占用 | netstat -ano | findstr :8080 找到 PID 并终止进程 |
| 中文乱码 | 启动时加参数:-Dfile.encoding=UTF-8 |
| 内存不足 | 增加 JVM 参数:-Xms512m -Xmx2g |
| 服务无法启动 | 检查 NSSM/WinSW 日志;确认 JDK 路径正确 |
✅ 五、总结流程图
安装 JDK → 配置环境变量 → 上传 JAR → 测试运行 →
→ 注册为 Windows 服务(NSSM/WinSW)→
→ 配置防火墙 → (可选)Nginx 反向X_X + HTTPS →
→ 监控与日志管理
如需自动化部署,可结合 PowerShell 脚本 或 CI/CD 工具(如 Jenkins、GitLab CI)实现一键部署。
如有具体项目结构或报错信息,欢迎提供,我可进一步针对性解答!
CLOUD云