速卖通素材
奋斗

Windows Server 2019服务器部署java项目?

服务器

在 Windows Server 2019 上部署 Java 项目(通常指 Spring Boot 等打包为可执行 JAR/WAR 的应用)是一个常见的需求。以下是完整、详细、生产环境推荐的部署步骤指南:


✅ 一、前置准备

1. 安装 Java Runtime Environment (JRE) 或 JDK

  • 推荐版本:Java 8 / Java 11 / Java 17(根据项目要求选择)
  • 下载地址:Oracle JDK 或 OpenJDK
  • 安装路径建议C:Javajdk-17C:Program FilesJavajdk-17

2. 配置环境变量

  1. 右键“此电脑” → “属性” → “高级系统设置” → “环境变量”
  2. 新建系统变量:
    • JAVA_HOME = C:Javajdk-17(替换为你的实际路径)
  3. 编辑 Path 变量,添加:
    • %JAVA_HOME%bin
  4. 打开命令提示符,验证安装:
    java -version
    javac -version

✅ 二、准备 Java 项目

1. 打包项目

  • 如果是 Maven 项目:

    mvn clean package -DskipTests

    生成文件如:target/myapp-1.0.jar

  • 如果是 Gradle 项目:

    gradle build

    生成文件如:build/libs/myapp-1.0.jar

⚠️ 确保项目中已正确配置内嵌服务器(如 Spring Boot 默认使用 Tomcat),并设置为独立运行模式。

2. 上传到服务器

  • 使用 SCP、FTP、WinSCP 或 Azure Blob Storage 等方式将 .jar 文件上传至服务器指定目录,例如:
    C:Appsmyappmyapp-1.0.jar

✅ 三、创建 Windows 服务(推荐方式)

直接双击运行 jar 包不适合生产环境。推荐使用 NSSM(Non-Sucking Service Manager)将 Java 应用注册为 Windows 服务

1. 下载并安装 NSSM

  • 官网:https://nssm.cc/download
  • 解压后复制 nssm.exe 到系统目录,如:C:WindowsSystem32

2. 注册服务

以管理员身份打开命令提示符(CMD)或 PowerShell,执行:

nssm install MyJavaApp "C:Javajdk-17binjava.exe" "-jar C:Appsmyappmyapp-1.0.jar"

参数说明:

  • MyJavaApp:服务名称(自定义)
  • "C:Javajdk-17binjava.exe":Java 可执行文件路径
  • "-jar C:Appsmyappmyapp-1.0.jar":启动参数

3. 配置服务细节(可选但推荐)

执行以下命令进入图形化配置界面:

nssm edit MyJavaApp

关键配置项:

  • Application:保持默认
  • Startup directoryC:Appsmyapp
  • Output
    • Stdout file: C:Appsmyapplogsstdout.log
    • Stderr file: C:Appsmyapplogsstderr.log
  • Shutdown:勾选“Wait for service to stop”,超时时间设为 60 秒
  • Recovery:设置重启策略(如第一次失败重启,第二次失败重启等)

4. 启动服务

nssm start MyJavaApp

查看服务状态:

nssm status MyJavaApp

5. 设置开机自启

nssm set MyJavaApp Start SERVICE_AUTO_START

✅ 四、防火墙与端口开放

假设你的 Java 应用监听端口为 8080

  1. 打开“高级安全 Windows 防火墙”
  2. 新建入站规则:
    • 类型:端口
    • 协议:TCP
    • 本地端口:8080
    • 操作:允许连接
    • 配置文件:域、专用、公用(按需选择)
    • 名称:Allow Java App Port 8080

或使用 PowerShell 一键添加:

New-NetFirewallRule -DisplayName "Allow Java App" -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow

✅ 五、日志管理与监控

1. 日志轮转(Log Rotation)

  • 可使用 NLogLogback 等框架配置日志滚动
  • 或在操作系统层面使用 Windows Event Log 或第三方工具如 Logrotate for Windows

2. 监控建议

  • 使用 Prometheus + Grafana 监控 JVM 指标(通过 Micrometer)
  • 或使用 Windows Performance Monitor 监控 CPU、内存使用情况

✅ 六、备份与维护

1. 定期备份

  • 备份 myapp-1.0.jar 和配置文件
  • 使用 Task Scheduler 创建定时任务执行备份脚本

2. 更新部署流程

  1. 停止服务:nssm stop MyJavaApp
  2. 替换新 jar 包
  3. 启动服务:nssm start MyJavaApp
  4. 检查日志确认无异常

✅ 七、常见问题排查

问题 解决方案
服务无法启动 检查 JAVA_HOME 是否正确;检查 jar 包路径是否含空格(用引号包裹)
端口被占用 使用 netstat -ano | findstr :8080 查找占用进程
内存溢出 调整 JVM 参数,如 -Xms512m -Xmx1024m
中文乱码 在启动参数中添加 -Dfile.encoding=UTF-8

示例带参数的启动命令:

nssm install MyJavaApp "C:Javajdk-17binjava.exe" "-Xms512m -Xmx1024m -Dfile.encoding=UTF-8 -jar C:Appsmyappmyapp-1.0.jar"

✅ 八、替代方案对比

方案 优点 缺点
NSSM 服务 稳定、易管理、支持自动重启 需额外安装 NSSM
Tomcat 容器 适合 WAR 包,生态成熟 配置复杂,资源占用高
Docker 隔离性好,便于迁移 需要安装 Docker Desktop 或 Docker Engine
直接后台运行 简单快捷 不稳定,无日志管理,不适合生产

🚀 生产环境强烈推荐 NSSM 或 Docker 方案


✅ 九、最终验证

  1. 浏览器访问:http://<服务器IP>:8080
  2. 查看日志文件确认无报错
  3. 检查 Windows 服务管理器中服务状态为“正在运行”
  4. 测试 API 接口是否正常响应

如需进一步自动化部署,可结合 JenkinsGitLab CI/CDAzure DevOps 实现持续集成与部署。

如有具体项目结构或错误日志,欢迎提供更多信息,我可以为你定制优化方案。

未经允许不得转载:轻量云Cloud » Windows Server 2019服务器部署java项目?