在 Windows 服务器上部署 Java 项目是一个常见的运维任务。以下是详细的步骤和最佳实践,帮助你顺利完成部署。
🛠️ 一、准备工作
1. 确认服务器环境
- 操作系统:Windows Server(如 2012 R2、2016、2019、2022)
- 权限:建议使用管理员账户操作
- 网络:确保防火墙开放所需端口(如 8080)
📦 二、安装必要软件
1. 安装 JDK(Java Development Kit)
推荐使用 JDK 8、11 或 17(LTS 版本更稳定)
下载:
- Oracle JDK: https://www.oracle.com/java/technologies/downloads/
- OpenJDK(推荐免费):
- Adoptium (Eclipse Temurin): https://adoptium.net/
- Amazon Corretto: https://aws.amazon.com/corretto/
安装步骤:
- 下载
.msi安装包 - 双击运行,按提示安装
- 设置环境变量:
# 打开“系统属性” -> “高级” -> “环境变量”
新增系统变量:
变量名:JAVA_HOME
变量值:C:Program FilesJavajdk-17
编辑 Path 变量,添加:
%JAVA_HOME%bin
验证安装:
java -version
javac -version
2. 安装 Web 服务器(可选)
常见选择:
| 服务器 | 说明 |
|---|---|
| Tomcat | 部署 WAR 包,适合传统 Web 应用 |
| Spring Boot 内嵌服务器 | 直接运行 JAR,无需额外容器 |
✅ 安装 Tomcat(如果需要)
- 下载 Apache Tomcat(https://tomcat.apache.org/)
- 解压到
C:tomcat - 设置环境变量
CATALINA_HOME = C:tomcat - 启动:
C:tomcatbinstartup.bat - 访问:http://localhost:8080
🚀 三、部署 Java 项目
方式一:部署 Spring Boot JAR(推荐)
步骤:
- 将打包好的
.jar文件上传到服务器(如myapp.jar) - 放在目录如:
C:deploymyappmyapp.jar
创建启动脚本 start.bat:
@echo off
echo Starting Java Application...
java -jar myapp.jar --spring.profiles.active=prod
pause
添加
--spring.profiles.active=prod指定生产环境配置
后台运行(不弹出窗口):
@echo off
start "MyApp" java -jar myapp.jar --spring.profiles.active=prod
或使用 nohup 类似方式(Windows 不支持 nohup,可用 PowerShell):
Start-Process java -ArgumentList "-jar","myapp.jar" -WindowStyle Hidden
方式二:部署 WAR 到 Tomcat
- 将
myapp.war复制到C:tomcatwebapps - 启动 Tomcat:
C:tomcatbinstartup.bat - 自动解压并部署,访问:
http://localhost:8080/myapp
🔐 四、配置环境与安全
1. 配置 application-prod.yml(Spring Boot 示例)
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: yourpassword
注意:不要将敏感信息写死在代码中,建议使用环境变量或配置中心。
2. 设置 Windows 服务(让 Java 应用开机自启)
推荐使用 NSSM (Non-Sucking Service Manager)
安装 NSSM:
- 下载:https://nssm.cc/download
- 解压后运行
nssm install MyJavaApp
配置服务:
- Path:
C:Program FilesJavajdk-17binjava.exe - Arguments:
-jar C:deploymyappmyapp.jar - Startup directory:
C:deploymyapp
点击 Install service,然后在“服务”中启动即可。
🔍 五、日志与监控
1. 查看日志
- Spring Boot 默认输出日志到控制台
- 可重定向到文件:
java -jar myapp.jar > app.log 2>&1
或在 application.yml 中配置日志路径:
logging:
file:
name: logs/app.log
2. 使用 PowerShell 或 CMD 查看进程
netstat -ano | findstr :8080
tasklist | findstr java
🔒 六、安全建议
- 关闭不必要的端口,仅开放 80/443/8080 等必需端口
- 使用防火墙规则 限制 IP 访问
- 定期更新 JDK 和依赖库
- 避免使用默认账号密码(如 Tomcat manager)
- 启用 HTTPS(可通过 Nginx 或 IIS 反向X_X)
🔄 七、自动化部署(进阶)
- 使用 Jenkins + Git 实现 CI/CD
- 编写批处理脚本自动拉取代码、编译、重启服务
- 结合 PowerShell 脚本做健康检查
✅ 总结:典型部署流程
- 安装 JDK
- 上传 JAR/WAR 文件
- 配置环境变量和配置文件
- 编写启动脚本或注册为服务
- 开放防火墙端口
- 测试访问
- 设置日志和监控
如果你提供具体的项目类型(如 Spring Boot、普通 Web、微服务等),我可以给出更精确的部署脚本和建议。
是否需要我为你生成一个完整的部署脚本模板?
云知识