在 Windows Server 上部署 Java 项目是一个常见需求,尤其在企业环境中。以下是详细的部署步骤和建议,适用于大多数 Java Web 应用(如 Spring Boot、Java EE 等)。
一、准备工作
-
确认服务器环境
- 操作系统:Windows Server 2012/2016/2019/2022
- 管理员权限(用于安装软件、配置服务等)
- 开放所需端口(如 8080、80、443)
-
安装 Java 运行环境(JRE 或 JDK)
- 下载并安装 JDK(推荐 Oracle JDK 或 OpenJDK)
- 官网下载:https://www.oracle.com/java/technologies/downloads/
- 或使用 OpenJDK(如 Adoptium、Amazon Corretto)
- 配置环境变量:
JAVA_HOME = C:Program FilesJavajdk-17 Path += %JAVA_HOME%bin - 验证安装:
java -version javac -version
- 下载并安装 JDK(推荐 Oracle JDK 或 OpenJDK)
二、准备 Java 项目
-
打包项目为可执行 JAR 或 WAR
-
如果是 Spring Boot 项目,使用 Maven/Gradle 打包:
mvn clean package生成
target/myapp.jar -
如果是传统 Java Web 项目,可能需要打包为 WAR 文件并部署到 Tomcat。
-
-
上传项目到服务器
- 使用 FTP、SCP、远程桌面复制等方式,将
.jar或.war文件上传到服务器某个目录,如:D:java-appsmyapp.jar
- 使用 FTP、SCP、远程桌面复制等方式,将
三、部署方式选择
方式一:直接运行 JAR(推荐用于 Spring Boot)
-
测试运行
java -jar D:java-appsmyapp.jar访问
http://服务器IP:8080查看是否正常。 -
后台运行(使用 nohup 或后台窗口)
- 创建
.bat脚本运行:@echo off cd /d D:java-apps start "MyApp" java -jar myapp.jar exit - 或使用
javaw避免弹出控制台:start javaw -jar myapp.jar
- 创建
-
设置开机自启(可选)
- 使用 Windows 任务计划程序(Task Scheduler)设置开机运行脚本。
方式二:使用 Windows 服务运行(更稳定)
推荐使用 NSSM (Non-Sucking Service Manager) 将 Java 程序注册为系统服务。
-
下载 NSSM
- 官网:https://nssm.cc/download
- 解压到
C:nssm
-
安装服务
- 打开命令提示符(管理员):
C:nssmwin64nssm install MyJavaApp - 在弹出窗口中配置:
- Path:
C:Program FilesJavajdk-17binjava.exe - Arguments:
-jar D:java-appsmyapp.jar - Startup directory:
D:java-apps
- Path:
- 打开命令提示符(管理员):
-
启动服务
C:nssmwin64nssm start MyJavaApp或通过“服务”管理器启动
MyJavaApp。 -
查看日志
- 在 NSSM 配置中设置日志输出路径,便于排查问题。
方式三:部署 WAR 到 Tomcat
-
安装 Apache Tomcat
- 下载 Tomcat(如 9.x 或 10.x):https://tomcat.apache.org
- 解压到
D:tomcat
-
配置环境变量
CATALINA_HOME = D:tomcat -
部署 WAR
- 将
myapp.war复制到D:tomcatwebapps - 启动 Tomcat:
D:tomcatbinstartup.bat
- 将
-
设置 Tomcat 为服务(可选)
- 运行
service.bat install将 Tomcat 安装为 Windows 服务。
- 运行
四、配置网络和防火墙
-
开放端口
- 打开 Windows 防火墙,允许入站规则:
- 端口:8080(或你应用使用的端口)
- 或使用命令:
netsh advfirewall firewall add rule name="Java App" dir=in action=allow protocol=TCP localport=8080
- 打开 Windows 防火墙,允许入站规则:
-
绑定 IP(可选)
- 默认绑定
0.0.0.0,确保外部可访问。
- 默认绑定
五、配置反向X_X(可选)
使用 IIS 或 Nginx 做反向X_X,实现:
- 使用 80/443 端口
- HTTPS 支持
- 域名访问
示例:IIS + ARR(Application Request Routing)
- 安装 IIS 和 ARR 模块
- 添加网站,配置反向X_X到
http://localhost:8080
六、监控与维护
- 日志管理:定期清理
logs目录 - JVM 参数优化:
java -Xms512m -Xmx2g -jar myapp.jar - 健康检查:通过
/actuator/health(Spring Boot)监控状态 - 备份策略:定期备份 JAR、配置文件和数据库
七、常见问题排查
| 问题 | 解决方法 |
|---|---|
| 端口被占用 | netstat -ano | findstr :8080 找出并终止进程 |
| Java 版本不匹配 | 检查 java -version 与项目要求 |
| 权限不足 | 以管理员身份运行或检查文件权限 |
| 服务无法启动 | 检查日志、JVM 路径、参数是否正确 |
总结
| 部署方式 | 适用场景 | 推荐度 |
|---|---|---|
| 直接运行 JAR | 测试、简单项目 | ⭐⭐⭐ |
| NSSM 注册服务 | 生产环境、需开机自启 | ⭐⭐⭐⭐⭐ |
| Tomcat 部署 WAR | 传统 Java Web 项目 | ⭐⭐⭐⭐ |
| Docker | 高级部署、多环境一致 | ⭐⭐⭐⭐ |
如果你提供具体的项目类型(如 Spring Boot、普通 Web、是否用数据库等),我可以给出更详细的部署脚本或配置示例。
轻量云Cloud