在 Windows Server 上部署 Java 服务(Java 应用)是常见的操作,适用于 Spring Boot、Tomcat、或其他基于 Java 的 Web 服务。以下是详细的部署步骤和建议:
✅ 一、准备工作
1. 安装 Java 运行环境(JRE 或 JDK)
-
下载并安装 JDK(推荐使用 Oracle JDK 或 OpenJDK)。
- 推荐版本:JDK 8、JDK 11、JDK 17(根据项目需求选择长期支持版本 LTS)。
- 下载地址:
- Oracle JDK
- OpenJDK
-
安装完成后配置环境变量:
JAVA_HOME = C:Program FilesJavajdk-17 PATH += %JAVA_HOME%bin可通过命令验证:
java -version javac -version
✅ 二、准备 Java 服务程序
1. 获取 Java 应用包
- 常见格式:
.jar文件(如 Spring Boot 项目).war文件(部署到 Tomcat 等容器)- 或使用 Tomcat、Jetty 等应用服务器运行
2. 示例:Spring Boot 打包成可执行 JAR
mvn clean package
生成文件如:myapp.jar
✅ 三、部署方式(推荐)
方式一:直接运行 JAR(推荐用于 Spring Boot)
1. 测试运行
java -jar myapp.jar
访问 http://localhost:8080 查看是否正常。
2. 设置后台运行(不推荐直接用 cmd)
- 使用 PowerShell 脚本 或 Windows 服务 来实现开机自启、后台运行。
方式二:将 Java 应用注册为 Windows 服务(推荐生产环境)
使用工具将 JAR 包注册为 Windows Service,实现开机自启、自动重启。
推荐工具:NSSM (Non-Sucking Service Manager)
1. 下载 NSSM
- 官网:https://nssm.cc/download
- 下载后解压(如:
C:nssm)
2. 注册服务
打开命令提示符(管理员权限):
C:nssmwin64nssm.exe install MyJavaApp
弹出配置窗口:
-
Application 选项卡:
- Path:
C:Program FilesJavajdk-17binjava.exe - Arguments:
-jar "C:appsmyapp.jar" - Startup directory:
C:apps
- Path:
-
Details 选项卡(可选):
- 描述:My Spring Boot Application
- 启动类型:自动
-
Log On 选项卡:
- 默认使用 Local System,或指定用户账户
点击 Install service
3. 启动服务
net start MyJavaApp
或通过「服务」管理器启动。
4. 查看日志
NSSM 默认会记录输出日志,可在配置中设置日志路径。
方式三:使用 Tomcat 部署 WAR 包
1. 下载并安装 Apache Tomcat
- 下载地址:https://tomcat.apache.org/
- 解压到目录,如:
C:tomcat
2. 配置环境变量(可选)
CATALINA_HOME = C:tomcat
3. 部署 WAR 包
- 将
myapp.war复制到C:tomcatwebapps - 启动 Tomcat:
C:tomcatbinstartup.bat
4. 注册为服务(可选)
使用 service.bat 将 Tomcat 安装为 Windows 服务:
C:tomcatbinservice.bat install TomcatMyApp
然后通过服务管理器启动。
✅ 四、防火墙与端口配置
确保服务器防火墙允许外部访问应用端口(如 8080):
# 以管理员身份运行 CMD
netsh advfirewall firewall add rule name="Java App Port 8080" dir=in action=allow protocol=TCP localport=8080
✅ 五、常用维护命令
# 查看服务状态
sc query MyJavaApp
# 重启服务
net stop MyJavaApp
net start MyJavaApp
# 卸载服务(NSSM)
nssm remove MyJavaApp confirm
✅ 六、日志与监控
- 将 Java 应用日志输出到文件,例如:
java -jar myapp.jar > C:logsapp.log 2>&1 - 或在代码中使用 Logback / Log4j 配置日志路径。
- 可结合 Windows 事件查看器或第三方监控工具(如 Prometheus + JMX Exporter)。
✅ 七、安全建议
- 使用非管理员账户运行服务
- 定期更新 JDK 和应用依赖
- 配置 HTTPS(可结合 Nginx / IIS 反向X_X)
- 限制远程访问 IP(通过防火墙或应用配置)
✅ 八、进阶:使用 Nginx/IIS 反向X_X(可选)
- 使用 IIS 或 Nginx 做反向X_X,统一管理端口(80/443),并支持 HTTPS。
示例 Nginx 配置:
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
总结
| 部署方式 | 适用场景 | 是否推荐 |
|---|---|---|
| 直接运行 JAR | 测试环境 | ⚠️ 临时 |
| NSSM 注册服务 | 生产环境(Spring Boot) | ✅ 强烈推荐 |
| Tomcat 部署 WAR | 传统 Java Web 项目 | ✅ 推荐 |
| Docker 容器化 | 高级部署、微服务架构 | ✅ 未来趋势 |
如果你提供具体的应用类型(如 Spring Boot、普通 Web 项目等),我可以给出更详细的部署脚本和配置。
是否需要我为你生成一个 NSSM 部署的完整脚本?
云知道CLOUD