在 Windows Server 上部署 Java 项目是一个常见需求,尤其在企业环境中。以下是详细的部署步骤和最佳实践:
🛠 一、环境准备
1. 安装 Java 运行环境(JRE 或 JDK)
下载 JDK
- 推荐使用 Oracle JDK 或 OpenJDK(如 Adoptium / Eclipse Temurin)
- 下载地址:
- https://adoptium.net/
- https://www.oracle.com/java/technologies/downloads/
安装步骤
- 下载
.msi安装包(Windows Installer) - 双击运行,按提示安装
- 记住安装路径,例如:
C:Program FilesEclipse Adoptiumjdk-17.0.8.7-hotspot
配置环境变量
- 打开 系统属性 → 高级 → 环境变量
- 添加系统变量:
JAVA_HOME:C:Program FilesEclipse Adoptiumjdk-17.0.8.7-hotspotPATH: 添加%JAVA_HOME%bin
- 验证:
java -version javac -version
2. 准备你的 Java 项目
通常 Java 项目打包为:
- JAR 文件(Spring Boot 推荐)
- WAR 文件(配合 Tomcat 等 Web 服务器)
示例:Spring Boot 项目打包
mvn clean package
生成文件:target/myapp-0.0.1-SNAPSHOT.jar
🚀 二、部署方式(推荐 JAR + 内置服务器)
方式一:直接运行 JAR(适用于 Spring Boot)
java -jar myapp.jar
设置后台运行(避免关闭窗口中断服务)
方法1:使用 nohup(Windows 不支持)→ 改用其他方式
方法2:使用 Windows 服务(推荐)
使用 NSSM (Non-Sucking Service Manager) 将 Java 程序注册为 Windows 服务。
步骤:
- 下载 NSSM:https://nssm.cc/download
- 解压后运行
nssm install MyJavaApp - 配置:
- Path:
C:Program FilesEclipse Adoptiumjdk-17.0.8.7-hotspotbinjava.exe - Arguments:
-jar "C:deploymyapp.jar" - Startup directory:
C:deploy
- Path:
- 点击 Install service
- 启动服务:
net start MyJavaApp
✅ 优点:开机自启、崩溃自动重启、日志记录等。
方式二:使用 Tomcat 部署 WAR(传统 Web 项目)
1. 下载并安装 Tomcat
- 下载地址:https://tomcat.apache.org/
- 解压到
C:tomcat
2. 部署 WAR
- 将
myapp.war复制到C:tomcatwebapps - 启动 Tomcat:
C:tomcatbinstartup.bat
3. 设置 Tomcat 为 Windows 服务
- 运行
C:tomcatbinservice.bat install - 使用服务管理器启动
Tomcat服务
🔐 三、安全与优化建议
1. 防火墙配置
- 打开所需端口(如 8080):
netsh advfirewall firewall add rule name="Java App Port 8080" dir=in action=allow protocol=TCP localport=8080
2. JVM 参数优化(可选)
java -Xms512m -Xmx2g -jar myapp.jar
3. 日志管理
- 将日志输出重定向到文件:
java -jar myapp.jar > logs/app.log 2>&1 - 或在 Spring Boot 中配置
logging.file.name=logs/app.log
4. 使用 PowerShell 脚本管理
创建 start.ps1:
Start-Process java -ArgumentList "-jar", "myapp.jar" -RedirectStandardOutput "logsout.log" -RedirectStandardError "logserr.log" -NoNewWindow
🧪 四、验证部署
- 浏览器访问:
http://服务器IP:8080 - 检查服务状态:
sc query MyJavaApp - 查看日志文件确认启动成功
🔄 五、更新与维护
- 停止服务 → 替换 JAR → 启动服务
- 使用批处理脚本自动化:
net stop MyJavaApp copy /Y new-app.jar myapp.jar net start MyJavaApp
✅ 总结:推荐方案
| 项目类型 | 推荐方式 |
|---|---|
| Spring Boot | JAR + NSSM 注册为服务 |
| 传统 Web | WAR + Tomcat + 服务 |
| 微服务 | JAR + 服务 + Nginx 反向 |
如有具体项目类型(如 Spring Boot、普通 Java Web、微服务等),可提供更详细配置。欢迎继续提问!
ECLOUD博客