将Java项目部署到 Windows Server 服务器上,通常涉及以下几个步骤。以下是一个通用的流程,适用于Spring Boot、普通Java Web项目或其他基于Java的应用。
✅ 一、准备工作
-
确认服务器环境
- 操作系统:Windows Server(如 2012 R2 / 2016 / 2019 / 2022)
- 网络:确保服务器可以被外部访问(配置防火墙、安全组等)
- 权限:使用管理员权限操作
-
安装必要软件
1. 安装 Java 运行环境(JRE 或 JDK)
- 下载对应版本的 JDK(推荐使用 OpenJDK 或 Oracle JDK)
- 推荐:Adoptium (Eclipse Temurin)
- 安装后配置环境变量:
# 设置 JAVA_HOME
JAVA_HOME = C:Program FilesJavajdk-17
# 添加到 Path
%JAVA_HOME%bin
验证是否安装成功:
java -version javac -version # 如果安装了JDK
2. 打包 Java 项目为可执行文件
- 使用 Maven 或 Gradle 构建项目,生成
JAR或WAR文件。
示例(Maven):
mvn clean package
输出文件一般在 target/your-project-1.0.0.jar
建议使用 Spring Boot 内嵌 Tomcat,打包成 fat jar(包含所有依赖和启动类)
✅ 二、上传项目到服务器
有多种方式上传 .jar 文件到 Windows Server:
- 使用 远程桌面(RDP) 登录后直接复制粘贴
- 使用 FTP/SFTP 工具(如 FileZilla、WinSCP)
- 使用 共享文件夹(网络映射驱动器)
- 使用 命令行工具(如 PowerShell 的
Invoke-WebRequest下载)
建议路径:
D:appmyappmyapp.jar
✅ 三、运行 Java 应用
方法一:直接运行 JAR(测试用)
cd D:appmyapp
java -jar myapp.jar
缺点:关闭命令窗口即停止服务。
方法二:以后台服务方式运行(生产推荐)
要让 Java 程序像 Windows 服务一样开机自启、后台运行,可以使用以下工具:
🔧 推荐方案:使用 NSSM(Non-Sucking Service Manager)
NSSM 是一个轻量级工具,可将任意程序注册为 Windows 服务。
步骤:
-
下载 NSSM
- 官网:https://nssm.cc/download
- 下载
nssm-2.24.zip,解压后选择对应系统架构(win64)
-
安装服务
打开命令提示符(管理员权限),执行:
D:nssmwin64nssm.exe install MyJavaApp弹出配置窗口:
- Path:
C:Program FilesJavajdk-17binjava.exe - Arguments:
-jar "D:appmyappmyapp.jar" - Startup directory:
D:appmyapp
点击 “Install service”
- Path:
-
启动服务
D:nssmwin64nssm.exe start MyJavaApp或通过“服务管理器”启动:
- Win + R →
services.msc→ 找到MyJavaApp→ 启动
- Win + R →
-
设置开机自启
- 默认安装后就是自动启动类型,可在服务属性中确认。
-
查看日志
- 在 NSSM 配置中设置输出日志路径:
- I/O → Output →
D:appmyapplogsoutput.log
- I/O → Output →
- 在 NSSM 配置中设置输出日志路径:
✅ 四、配置端口与防火墙
-
确认应用监听端口
- 如 Spring Boot 默认是
8080 - 可在
application.properties中修改:server.port=8080
- 如 Spring Boot 默认是
-
开放 Windows 防火墙端口
- 控制面板 → Windows Defender 防火墙 → 高级设置
- 新建入站规则 → 端口(TCP)→ 输入
8080→ 允许连接
或使用命令行(管理员):
netsh advfirewall firewall add rule name="Java App Port" dir=in action=allow protocol=TCP localport=8080
✅ 五、域名与反向X_X(可选)
如果需要通过域名访问或 HTTPS,建议使用 IIS + ARR(Application Request Routing) 或 Nginx for Windows 做反向X_X。
示例:使用 Nginx
- 下载 Nginx for Windows:http://nginx.org/en/download.html
- 修改
conf/nginx.conf:
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
- 启动 Nginx:
start nginx
✅ 六、监控与维护
- 查看日志文件
- 使用任务管理器或
jps命令检查 Java 进程 - 定期备份配置和数据
- 使用脚本实现自动重启(可结合 NSSM 自动重启功能)
✅ 七、常见问题排查
| 问题 | 解决方法 |
|---|---|
java is not recognized |
检查 JAVA_HOME 和 Path 环境变量 |
| 端口被占用 | netstat -ano | findstr :8080,杀掉进程 |
| 无法网络访问 | 检查防火墙、云服务器安全组 |
| 服务启动失败 | 查看 NSSM 日志或控制台输出 |
✅ 总结:完整流程图
开发机打包 → 上传 .jar 到服务器 → 安装 JDK → 使用 NSSM 注册为服务 → 开放防火墙 → 启动服务 → 外部访问
↓
(可选)Nginx/IIS 反向X_X
如果你提供具体项目类型(如 Spring Boot、普通 Servlet、WAR 包等),我可以给出更精确的部署脚本或配置建议。欢迎补充!
ECLOUD博客