在 Windows Server 上部署 Java 项目是常见需求,尤其在企业环境中。以下是详细的步骤和建议,帮助你在 Windows Server 上成功部署 Java 项目(如 Spring Boot、普通 Java Web 应用等)。
一、环境准备
1. 安装 Java 运行环境(JRE 或 JDK)
-
下载 JDK(推荐使用 Oracle JDK 或 OpenJDK):
- 官网:https://www.oracle.com/java/technologies/downloads/
- 或使用 OpenJDK:https://adoptium.net/
-
安装 JDK:
- 运行
.exe安装包,按提示完成安装。 - 推荐路径:
C:Program FilesJavajdk-xx
- 运行
-
配置环境变量:
- 右键“此电脑” → “属性” → “高级系统设置” → “环境变量”
- 添加系统变量:
JAVA_HOME:C:Program FilesJavajdk-xxPATH: 添加%JAVA_HOME%bin- 验证:
java -version javac -version
2. 安装应用服务器(可选)
情况一:Spring Boot 内嵌 Tomcat(推荐)
- 不需要单独安装 Tomcat,直接运行 JAR 包即可。
情况二:传统 WAR 包部署
- 安装 Tomcat
- 下载地址:https://tomcat.apache.org/
- 解压到
C:tomcat - 配置
JAVA_HOME和CATALINA_HOME - 启动:运行
binstartup.bat
二、部署 Java 项目
方法一:直接运行 JAR 文件(Spring Boot 推荐)
-
将打包好的
.jar文件上传到服务器(如通过 FTP、远程桌面复制等)- 示例:
myapp.jar
- 示例:
-
打开命令提示符(管理员权限)进入目录:
cd C:deploymyapp -
运行项目:
java -jar myapp.jar -
后台运行(推荐使用工具)
- Windows 默认不支持
&后台运行,可使用:start /B java -jar myapp.jar(但关闭终端会中断)- 更好方式:使用 NSSM 或 WinSW 将 Java 程序注册为 Windows 服务。
- Windows 默认不支持
方法二:使用 WinSW 将 Java 程序注册为服务(推荐)
-
下载 WinSW
- GitHub:https://github.com/winsw/winsw
- 下载
WinSW-x64.exe
-
放在同一目录,重命名为
myapp.exe -
创建配置文件
myapp.xml:<service> <id>MyApp</id> <name>MyApp Service</name> <description>My Java Spring Boot Application</description> <executable>java</executable> <arguments>-jar "C:deploymyappmyapp.jar"</arguments> <logpath>C:deploymyapplogs</logpath> <logmode>rotate</logmode> </service> -
安装服务:
myapp.exe install -
启动服务:
myapp.exe start -
其他命令:
myapp.exe stopmyapp.exe uninstall
方法三:部署 WAR 到 Tomcat
- 将
myapp.war复制到C:tomcatwebapps - 启动 Tomcat:
C:tomcatbinstartup.bat - 访问:
http://服务器IP:8080/myapp
三、配置防火墙和端口
-
打开 Windows 防火墙设置
-
允许端口(如 8080)入站:
- 控制面板 → Windows Defender 防火墙 → 高级设置
- 新建入站规则 → 端口 → TCP → 8080 → 允许连接
-
如果使用云服务器(如阿里云、腾讯云),还需在安全组中开放端口。
四、域名与反向X_X(可选)
使用 IIS + ARR 实现反向X_X
- 安装 IIS 和 ARR(Application Request Routing)
- 配置网站绑定域名
- 设置 ARR 规则,将请求转发到
http://localhost:8080
五、日志监控与维护
- 日志文件建议输出到固定目录,如
C:logsmyapp - 使用 PowerShell 或批处理脚本定期清理日志
- 可结合 Windows 事件查看器或第三方工具(如 ELK、Splunk)进行监控
六、常见问题
| 问题 | 解决方案 |
|---|---|
java不是内部或外部命令 |
检查 JAVA_HOME 和 PATH 环境变量 |
| 端口被占用 | 使用 netstat -ano | findstr :8080 查找并结束进程 |
| 中文乱码 | 启动时加参数:-Dfile.encoding=UTF-8 |
| 内存不足 | 增加 JVM 参数:-Xms512m -Xmx2g |
七、自动化部署建议
- 使用 Jenkins、GitLab CI/CD 自动打包并部署到 Windows Server
- 编写批处理脚本(
.bat)实现自动停止、更新、启动服务
✅ 总结
| 项目类型 | 推荐部署方式 |
|---|---|
| Spring Boot JAR | WinSW 注册为 Windows 服务 |
| WAR 包 | 部署到 Tomcat |
| 微服务 | 多服务 + Nginx/IIS 反向X_X |
如果你提供具体的项目类型(如 Spring Boot、普通 Web、Maven/Gradle 构建等),我可以给出更精确的部署脚本和配置示例。
秒懂云