Windows server服务器上部署Java服务?

云计算

在 Windows Server 上部署 Java 服务(即 Java 应用程序作为后台服务运行)通常包括以下几个步骤。以下是一个完整的指南,适用于将 Spring Boot、Java Web 应用或其他 Java 程序部署为 Windows 服务。


✅ 一、准备工作

  1. 安装 Java 运行环境(JRE 或 JDK)

    • 下载并安装 JDK 或 JRE(推荐使用 Oracle JDK、OpenJDK 等)。
    • 设置环境变量:
      • JAVA_HOME:指向 JDK 安装目录,例如 C:Program FilesJavajdk-17
      • %JAVA_HOME%bin 添加到 PATH 环境变量中。
    • 验证安装:
      java -version
  2. 准备好你的 Java 应用

    • 通常是一个打包好的 .jar 文件(如 myapp.jar)。
    • 确保可以在命令行运行:
      java -jar myapp.jar

      测试应用是否能正常启动。


✅ 二、将 Java 应用部署为 Windows 服务

由于 Windows 本身不支持直接将 .jar 文件作为服务运行,我们需要借助工具来实现。常用工具有:

方案 1:使用 NSSM(Non-Sucking Service Manager)——推荐 ✅

NSSM 是一个简单、免费、开源的工具,可将任意可执行文件包装为 Windows 服务。

步骤:
  1. 下载 NSSM

    • 官网:https://nssm.cc/download
    • 下载 nssm-2.24.zip(或其他版本),解压到目录,例如:C:nssm
  2. 运行 NSSM GUI 工具

    • 打开命令提示符或资源管理器,进入 win64 目录:
      cd C:nssmwin64
      nssm.exe install MyJavaApp

      MyJavaApp 是你为服务起的名字。

  3. 配置服务参数
    在弹出的窗口中填写:

    • Path: C:Program FilesJavajdk-17binjava.exe(Java 可执行文件路径)
    • Arguments: -jar "C:myappmyapp.jar"(注意路径用引号包围)
    • Startup directory: C:myapp(jar 所在目录,避免路径问题)

    其他选项可保持默认。

  4. 安装并启动服务

    • 点击 “Install service”
    • 打开“服务”管理器(services.msc),找到 MyJavaApp,右键启动。
    • 或使用命令行:
      net start MyJavaApp
  5. 设置开机自启

    • 在服务属性中将“启动类型”设置为“自动”。
  6. 查看日志(可选)

    • 在 NSSM 配置中设置“I/O”选项,将输出重定向到日志文件:
      • Output (stdout): C:myapplogsstdout.log
      • Error (stderr): C:myapplogsstderr.log

方案 2:使用 Apache Commons Daemon(procrun)

适用于更高级控制,适合生产环境。

  1. 下载 procrun(来自 Apache Commons Daemon):

    • https://commons.apache.org/proper/commons-daemon/
  2. 准备两个可执行文件:

    • prunsrv.exe(服务运行器,32/64位)
    • 放在你的应用目录,如 C:myappprunsrv.exe
  3. 创建启动脚本 install_service.bat

    @echo off
    set SERVICE_NAME=MyJavaApp
    set PRUNSRV=C:myappprunsrv.exe
    set APP_JAR=C:myappmyapp.jar
    set JAVA_HOME=C:Program FilesJavajdk-17
    
    %PRUNSRV% //IS//%SERVICE_NAME% ^
     --DisplayName="My Java Application" ^
     --Description="My Spring Boot Application" ^
     --Startup=auto ^
     --Install="%PRUNSRV%" ^
     --Jvm="%JAVA_HOME%binserverjvm.dll" ^
     --StartMode=jvm ^
     --StopMode=jvm ^
     --StartClass=org.springframework.boot.loader.JarLauncher ^
     --StartPath="%APP_JAR%" ^
     --StartParams="-jar#%APP_JAR%" ^
     --StopClass=org.springframework.boot.loader.JarLauncher ^
     --StopParams="stop" ^
     --LogPath=C:myapplogs ^
     --LogLevel=Debug
    
    echo Service installed.
    pause
  4. 运行脚本安装服务,然后通过 services.msc 启动。

⚠️ 注意:--StartClass 要根据你的 jar 启动类调整,Spring Boot 通常是 org.springframework.boot.loader.JarLauncher(对于可执行 jar)。


✅ 三、常见问题与建议

问题 解决方案
服务启动后立即停止 检查日志,常见原因是路径错误、Java 未找到、jar 启动类错误
中文乱码 在启动参数中添加:-Dfile.encoding=UTF-8
内存不足 添加 JVM 参数:-Xms512m -Xmx2g
需要配置文件 确保 application.properties 在 jar 同目录或 classpath 中

✅ 四、监控与维护

  • 使用 Windows 事件查看器或日志文件排查问题。
  • 使用 PowerShell 或 CMD 管理服务:
    net start MyJavaApp
    net stop MyJavaApp
    sc delete MyJavaApp   // 卸载服务
  • 建议配合日志框架(如 Logback)输出到文件。

✅ 总结

方案 优点 推荐场景
NSSM 简单易用,图形化配置 快速部署、测试环境
Procrun 更强大,支持 JVM 级控制 生产环境、需要精细控制

如你使用的是 Spring Boot,还可以考虑:

  • 打成可执行 jar(spring-boot-maven-plugin
  • 使用 java -jar 直接运行,配合 NSSM 部署为服务。

如果你提供具体的应用类型(如 Spring Boot、普通 Java 程序等),我可以给出更精确的配置示例。

未经允许不得转载:CLOUD云枢 » Windows server服务器上部署Java服务?