在 Windows Server 上部署 Java 程序,通常包括以下几个步骤。以下是一个完整的流程指南,适用于常见的 Java 应用(如 Spring Boot、普通 JAR 包等):
一、准备工作
1. 安装 Java 运行环境(JRE 或 JDK)
- 下载并安装 JDK(推荐使用 Oracle JDK 或 OpenJDK)。
- 官网下载地址:
- Oracle JDK: https://www.oracle.com/java/technologies/downloads/
- OpenJDK: https://adoptium.net/(推荐)
- 官网下载地址:
- 安装完成后,配置系统环境变量:
JAVA_HOME = C:Program FilesJavajdk-xx Path += %JAVA_HOME%bin - 验证安装:
java -version javac -version
二、上传 Java 程序
将你的 Java 程序(通常是 .jar 文件)上传到服务器。
方式有:
- 使用远程桌面复制粘贴
- 使用 FTP/SFTP 工具(如 WinSCP、FileZilla)
- 使用命令行工具(如
pscp)
例如,将 myapp.jar 放到 C:javaapps 目录下。
三、测试运行程序
打开命令提示符(CMD)或 PowerShell,进入程序目录:
cd C:javaapps
java -jar myapp.jar
如果程序正常启动(比如 Spring Boot 显示“Tomcat started on port(s): 8080”),说明可以运行。
四、设置后台运行(避免关闭窗口时程序终止)
直接运行 java -jar 在关闭 CMD 后会中断。建议使用以下方式之一实现后台运行。
方法 1:使用 nohup + javaw(Windows 不支持 nohup,需变通)
Windows 没有 nohup,但可以用以下方法:
使用 start /B 命令(不推荐用于长期服务)
start /B java -jar myapp.jar > output.log 2>&1
缺点:仍依赖于用户登录会话。
方法 2:使用 Windows 服务(推荐)
将 Java 程序注册为 Windows 服务,开机自启、后台运行。
推荐工具:
- NSSM (Non-Sucking Service Manager):简单易用
- WinSW (Windows Service Wrapper):适合 Java 程序
使用 NSSM 示例:
- 下载 NSSM:https://nssm.cc/download
- 解压后选择对应架构版本(32/64位)
- 打开命令提示符(管理员权限)运行:
nssm install MyJavaApp - 弹出配置窗口:
- Path:
C:Program FilesJavajdk-xxbinjava.exe - Arguments:
-jar "C:javaappsmyapp.jar" - Startup directory:
C:javaapps
- Path:
- 点击 “Install service”
- 启动服务:
nssm start MyJavaApp - 可通过“服务”管理器查看和管理该服务。
优点:支持开机自启、崩溃自动重启、日志记录等。
方法 3:使用脚本后台运行(简单场景)
创建一个 .bat 脚本:
run.bat
@echo off
cd /d C:javaapps
java -jar myapp.jar > app.log 2>&1
pause
然后使用任务计划程序或后台工具运行。
五、配置防火墙(开放端口)
如果你的 Java 程序监听某个端口(如 8080),需要开放防火墙。
- 打开“高级安全 Windows 防火墙”
- 添加入站规则 → 端口 → TCP → 特定端口(如 8080)
- 允许连接
或者用命令:
netsh advfirewall firewall add rule name="Java App Port 8080" dir=in action=allow protocol=TCP localport=8080
六、(可选)使用反向X_X(如 IIS 或 Nginx)
如果希望用域名访问或 HTTPS,可以搭配:
- IIS + ARR(Application Request Routing)
- Nginx for Windows
例如 Nginx 配置片段:
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;
}
}
七、监控与日志
- 日志输出重定向到文件(已在上面示例中体现)
- 使用日志轮转工具(如 Logrotate for Windows 或应用内配置)
- 结合事件查看器或第三方监控工具(如 Zabbix、Prometheus + JMX Exporter)
总结:推荐部署流程
| 步骤 | 内容 |
|---|---|
| 1 | 安装 JDK 并配置环境变量 |
| 2 | 上传 .jar 文件到服务器 |
| 3 | 使用 NSSM 或 WinSW 注册为 Windows 服务 |
| 4 | 配置防火墙开放端口 |
| 5 | (可选)配置 IIS/Nginx 反向X_X |
| 6 | 测试访问并设置日志监控 |
常见问题排查
Error: Unable to access jarfile→ 检查路径是否正确,是否有空格未加引号Port already in use→ 更换端口或结束占用进程- 服务无法启动 → 查看 NSSM 日志或事件查看器中的错误信息
如果你提供具体的 Java 程序类型(如 Spring Boot、普通 Web 应用等),我可以给出更详细的部署脚本或配置示例。
ECLOUD博客