在 Windows Server 上部署 Java 项目是完全可行的,虽然 Linux 更常见于生产环境,但 Windows Server 依然可以稳定运行 Java 应用。以下是详细的部署步骤和注意事项:
一、准备工作
-
安装 Java 环境(JDK/JRE)
- 下载并安装 JDK(推荐使用 OpenJDK 或 Oracle JDK)
- 官网:https://adoptium.net/(推荐使用 Eclipse Temurin)
- 配置环境变量:
JAVA_HOME = C:Program FilesJavajdk-xx Path += %JAVA_HOME%bin
- 验证安装:
java -version javac -version
- 下载并安装 JDK(推荐使用 OpenJDK 或 Oracle JDK)
-
准备你的 Java 项目
- 通常打包为
.jar
文件(Spring Boot 推荐)或.war
文件(传统 Web 项目 + Tomcat) - 使用 Maven/Gradle 构建:
mvn clean package # 输出 target/your-app.jar
- 通常打包为
二、部署方式选择
方式一:直接运行 JAR 文件(适用于 Spring Boot)
-
将打包好的
app.jar
上传到服务器(可用 FTP、SCP、远程桌面复制等) -
在命令行运行:
java -jar your-app.jar
-
设置后台运行(避免关闭窗口后进程终止):
- 使用
nohup
(Windows 不支持),改用:start /b java -jar your-app.jar > app.log 2>&1
- 或使用 PowerShell 后台运行:
Start-Process java -ArgumentList "-jar","your-app.jar" -RedirectStandardOutput "output.log" -RedirectStandardError "error.log"
- 使用
-
更推荐:使用 NSSM 或 WinSW 将 Java 程序注册为 Windows 服务(开机自启、自动重启)
方式二:使用 Tomcat 部署 WAR 包(传统 Web 项目)
- 下载 Apache Tomcat(https://tomcat.apache.org/)
- 解压到目录,如:
C:tomcat
- 将 WAR 包放入
webapps
目录 - 启动 Tomcat:
C:tomcatbinstartup.bat
- 访问:
http://localhost:8080/your-app
可将 Tomcat 安装为 Windows 服务,使用
service.bat install
三、配置 Windows 服务(推荐长期运行)
使用 NSSM(Non-Sucking Service Manager)
- 下载 NSSM:https://nssm.cc/download
- 解压后运行
nssm install JavaApp
- 配置:
- Path:
C:Program FilesJavajdk-xxbinjava.exe
- Arguments:
-jar "C:pathtoyourapp.jar"
- Startup directory:
C:pathtoyour
- Path:
- 点击 Install service
- 启动服务:
net start JavaApp
四、防火墙与端口开放
确保防火墙允许你的应用端口(如 8080):
# 开放端口
netsh advfirewall firewall add rule name="Java App Port 8080" dir=in action=allow protocol=TCP localport=8080
五、日志监控
- 查看输出日志文件
- 使用 Windows 事件查看器(如果注册为服务)
- 建议使用 Logback 或 Log4j 输出到指定文件
六、其他建议
项目 | 建议 |
---|---|
JVM 参数 | 添加内存设置:-Xms512m -Xmx2g |
自动启动 | 使用服务方式(NSSM/WinSW) |
备份 | 定期备份 jar 和配置文件 |
安全 | 更新 Windows 补丁,限制远程访问 |
七、常见问题排查
java不是内部或外部命令
→ 检查 JAVA_HOME 和 Path- 端口被占用 →
netstat -ano | findstr :8080
- 权限问题 → 以管理员身份运行或检查文件权限
- 服务无法启动 → 查看日志,确认路径无空格或中文
总结
✅ 推荐流程:
- 打包为 JAR(Spring Boot)
- 安装 JDK 并配置环境变量
- 使用 NSSM 注册为 Windows 服务
- 开放防火墙端口
- 测试访问和自启功能
如果你提供具体的项目类型(如 Spring Boot、普通 Web、WAR/JAR),我可以给出更精确的部署脚本或配置。
需要我为你生成一个 NSSM 部署脚本或 PowerShell 自动化部署脚本吗?