在 Windows Server 上部署 Java 服务,通常包括以下几个步骤:安装 Java 环境、准备 Java 应用(如 JAR 包)、配置运行环境、将应用设置为 Windows 服务以便开机自启。以下是详细的操作流程:
一、准备工作
-
确认 Windows Server 版本
- 如:Windows Server 2016/2019/2022
- 确保有管理员权限
-
下载 Java 运行环境(JRE 或 JDK)
- 推荐使用 OpenJDK 或 Oracle JDK
- 下载地址:
- https://adoptium.net/(推荐,免费)
- https://www.oracle.com/java/technologies/downloads/
建议选择 x64 MSI 安装包,便于在 Windows 上安装。
二、安装 Java
-
运行安装包
- 双击
.msi文件安装 JDK/JRE - 默认路径通常是:
C:Program FilesJavajdk-xx.x.x
- 双击
-
配置环境变量
- 打开“系统属性” → “高级” → “环境变量”
- 添加系统变量:
JAVA_HOME:C:Program FilesJavajdk-xx.x.x- 在
Path中添加:%JAVA_HOME%bin
-
验证安装
java -version javac -version # 如果安装了JDK出现版本信息即成功。
三、准备 Java 应用
假设你有一个 Spring Boot 或普通 Java 项目打包成的 JAR 文件,例如:myapp.jar
-
将 JAR 文件上传到服务器,例如放到:
D:java-appsmyapp.jar -
测试运行:
java -jar D:java-appsmyapp.jar确保应用能正常启动。
四、将 Java 应用注册为 Windows 服务
Java 本身不能直接作为 Windows 服务运行,需要借助工具包装成服务。常用工具:
方法一:使用 NSSM(Non-Sucking Service Manager)——推荐
-
下载 NSSM
- 地址:https://nssm.cc/download
- 下载
nssm-2.24.zip,解压到C:nssm(或其他目录)
-
运行 NSSM GUI
C:nssmnssm.exe install MyJavaApp -
配置服务
- Application tab:
- Path:
C:Program FilesJavajdk-xx.x.xbinjava.exe - Arguments:
-jar D:java-appsmyapp.jar - Startup directory:
D:java-apps
- Path:
- Details tab:
- Service name:
MyJavaApp - Description:
My Java Application Service
- Service name:
- Log On tab:
- 选择账户(默认 Local System,或指定用户)
- Recovery tab:
- 设置失败重启策略(如:第一次失败后重启)
- Application tab:
-
安装并启动服务
C:nssmnssm.exe start MyJavaApp或通过“服务”管理器(
services.msc)查看并启动服务。
方法二:使用 Apache Commons Daemon (procrun)
-
下载
prunsrv.exe(来自 Apache Commons Daemon)- 地址:https://commons.apache.org/proper/commons-daemon/
-
示例命令注册服务:
prunsrv.exe //IS//MyJavaApp ^ --DisplayName="My Java App" ^ --Description="Java Application as Service" ^ --Startup=auto ^ --Install="C:prunsrv.exe" ^ --Jvm="%JAVA_HOME%binserverjvm.dll" ^ --Classpath="D:java-appsmyapp.jar" ^ --StartMode=jvm ^ --StartClass=org.springframework.boot.loader.JarLauncher ^ --StartParams=start ^ --LogPath="D:logs"此方法较复杂,适合高级用户。
五、配置防火墙(如需要外部访问)
如果应用监听端口(如 8080),需开放防火墙:
netsh advfirewall firewall add rule name="Java App 8080" dir=in action=allow protocol=TCP localport=8080
六、日志与监控
-
日志文件
- 在启动命令中重定向输出:
java -jar myapp.jar > app.log 2>&1 - 或在应用内部配置日志框架(如 logback、log4j2)
- 在启动命令中重定向输出:
-
查看服务状态
- 使用任务管理器、
services.msc或命令:sc query MyJavaApp
- 使用任务管理器、
-
查看日志
- 查看应用日志文件或 Windows 事件日志
七、常见问题排查
| 问题 | 解决方法 |
|---|---|
| 服务启动后立即停止 | 检查 JAR 路径、Java 路径、是否有依赖缺失 |
| 端口被占用 | 使用 netstat -ano | findstr :8080 查看并关闭占用进程 |
| 权限不足 | 确保服务运行账户有足够权限访问 JAR 和目录 |
| 中文乱码 | 启动时加参数:-Dfile.encoding=UTF-8 |
八、自动化脚本示例(可选)
创建批处理文件 start-service.bat:
@echo off
cd /d D:java-apps
java -jar myapp.jar --spring.profiles.active=prod > app.log 2>&1
然后用 NSSM 调用该脚本。
总结
✅ 推荐流程:
- 安装 JDK 并配置环境变量
- 放置 JAR 文件
- 使用 NSSM 将 Java 应用注册为 Windows 服务
- 配置自动启动、日志、防火墙
- 测试并监控运行状态
如果你提供具体的 Java 框架(如 Spring Boot、Tomcat、普通 JAR),我可以给出更详细的部署建议。
CDNK博客