使用 WinSW 将 Spring Boot JAR 包注册为 Windows 服务

WinSW 是一个将任何应用程序包装为 Windows 服务的开源工具,它完美解决了命令行窗口关闭程序就退出的问题,并且支持开机自启、失败重启等生产级特性。

第一步:服务器环境准备

在部署应用之前,确保服务器满足以下基础要求:

  1. 安装 Java JDK/JRE (必须)

    • 版本:必须与您项目编译的 Java 版本一致(推荐 LTS 版本:JDK 17 或 JDK 11)。

    • 操作

      • 从 Oracle官网 或 Azul Zulu 下载 Windows x64 MSI 安装包。

      • 在服务器上运行安装程序。

      • 配置环境变量 JAVA_HOME

        • 新建系统变量 JAVA_HOME,值为 JDK 安装路径(例如 C:\Program Files\Java\jdk-17)。

        • 将 %JAVA_HOME%\bin 添加到系统变量 Path 中。

    • 验证:打开新的 CMD,运行 java -version,确认版本信息正确。

  2. (可选) 防火墙配置

    • 如果服务器防火墙开启,需要放行您的应用端口(例如 8080)。

    • 操作:以管理员身份打开 PowerShell 或 CMD:

      powershell

      New-NetFirewallRule -DisplayName "Allow Spring Boot App Port" -Direction Inbound -LocalPort 8080 -Protocol TCP -Action Allow

      或者使用图形界面在“高级安全 Windows 防火墙”中添加入站规则。

第二步:准备应用程序
  1. 打包项目:在开发环境,使用 Maven 打包为可执行 JAR 文件。

    bash

    mvn clean package

    确保在 target/ 目录下生成了 your-app-name-1.0.0.jar

  2. 创建应用目录:在服务器上创建一个独立的目录来存放应用和相关文件,结构清晰便于管理。

    text

    C:\
    └── Applications\
        └── MySpringBootApp\  # 你的应用专属目录
            ├── app.jar                 # 你的JAR包 (可重命名)
            ├── logs\                   # 日志目录
            ├── config\                 # 外部配置文件目录 (可选)
            ├── myapp-service.exe       # WinSW程序
            └── myapp-service.xml       # WinSW配置文件
  3. 上传文件:将打包好的 JAR 文件上传到服务器上的 C:\Applications\MySpringBootApp\ 目录。可以将其重命名为一个简单的名字,如 app.jar

第三步:配置 WinSW
  1. 下载 WinSW

    • 访问 WinSW 发布页面

    • 下载最新版本的 WinSW-x64.exe(根据你的系统位数选择)。

  2. 放置并重命名

    • 将下载的 WinSW-x64.exe 也上传到 C:\Applications\MySpringBootApp\ 目录。

    • 将其重命名为与你的服务名相关的名称,例如 myapp-service.exe这个exe的名字将决定最终服务的名称

  3. 创建配置文件

    • 在同一目录下创建一个与 .exe 文件同名的 XML 文件,即 myapp-service.xml

    • 用文本编辑器(如 Notepad++ 或 VSCode)编辑此文件,填入以下配置:

    xml

    <service>
      <!-- 服务的唯一ID,不能与其他系统服务重复 -->
      <id>MySpringBootApplication</id>
      <!-- 服务的显示名称 -->
      <name>My Spring Boot Application (Production)</name>
      <!-- 服务的描述 -->
      <description>This service runs the MySpringBootApp production application.</description>
      
      <!-- 启动的可执行文件,这里是java -->
      <executable>java</executable>
      
      <!-- 传递给可执行文件的参数 -->
      <arguments>
        <!-- 指定JAR文件 -->
        -jar "C:\Applications\MySpringBootApp\app.jar"
        <!-- 指定激活的生产环境配置文件 -->
        --spring.profiles.active=prod
        <!-- 指定外部配置文件路径 (可选但推荐) -->
        --spring.config.location=C:\Applications\MySpringBootApp\config\application-prod.properties
        <!-- 设置JVM内存参数 (非常重要!根据你的服务器配置调整) -->
        -Xms512m -Xmx1024m
        <!-- 输出日志到文件 (Spring Boot默认也会输出到文件,这是WinSW的日志) -->
        >> "C:\Applications\MySpringBootApp\logs\service-out.log"
       </arguments>
      
      <!-- 日志模式:滚动日志 -->
      <log mode="roll-by-size">
        <sizeThreshold>10240</sizeThreshold>
        <keepFiles>8</keepFiles>
      </log>
      
      <!-- 工作目录,jar包所在的目录 -->
      <workingdirectory>C:\Applications\MySpringBootApp</workingdirectory>
      
      <!-- 启动模式:自动 -->
      <startmode>Automatic</startmode>
      
      <!-- 失败时延迟10秒自动重启 -->
      <onfailure action="restart" delay="10 sec"/>
    </service>

    关键配置说明

    • -Xms512m -Xmx1024m:根据服务器内存设置 JVM 堆内存初始值和最大值,防止内存溢出。

    • --spring.profiles.active=prod:激活名为 prod 的生产环境配置。

    • --spring.config.location:指向一个外部的配置文件。强烈推荐将数据库密码等敏感信息放在服务器上的这个文件里,而不是打包在 JAR 中,更安全。

第四步:安装并启动服务
  1. 管理员身份打开命令提示符 (CMD) 或 PowerShell。这一步非常重要,否则会因权限不足而安装失败

  2. 导航到你的应用目录:

    cmd

    cd C:\Applications\MySpringBootApp
  3. 安装服务

    cmd

    myapp-service.exe install

    如果成功,你会看到提示 Service 'MySpringBootApplication' was installed successfully.

  4. 启动服务

    cmd

    sc start MySpringBootApplication

    或者使用:

    cmd

    net start MySpringBootApplication
  5. 验证服务

    • 打开 “服务” 管理窗口(运行 services.msc),在列表中找到 “My Spring Boot Application (Production)”,查看其状态应为“正在运行”。

    • 检查 C:\Applications\MySpringBootApp\logs\ 目录下的日志文件,查看应用启动是否正常,是否有错误信息。

    • 尝试在浏览器访问你的应用 http://服务器IP:端口/

常用管理命令
  • 停止服务sc stop MySpringBootApplication 或 net stop MySpringBootApplication

  • 卸载服务(需要先停止):

    cmd

    myapp-service.exe uninstall
  • 查看服务状态sc query MySpringBootApplication

  • 重启服务:先 stop,再 start

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值