# Windows 服务配置教程(WinSW & NSSM)
WinSW(Windows Service Wrapper)和 NSSM(Non-Sucking Service Manager)是两种常见的方法,可以将 JAR 包、Nginx、Node.js 服务器等注册为 Windows 服务,实现 后台运行 和 开机自启。
# 1. 使用 WinSW 配置 Windows 服务
# 1.1 下载 WinSW
- 📥 官网下载:https://github.com/winsw/winsw/releases
- 🔽 下载
WinSW-x64.exe
- 📝 重命名 为
MyService.exe
- 📂 放置到应用目录(例如
C:\myapp\ )
# 1.2 配置 XML 文件
在 C:\myapp\ 目录下,新建 MyService.xml ,内容如下:
# 示例 1:运行 JAR 包
| <service> |
| <id>MyJavaService</id> |
| <name>My Java Service</name> |
| <description>Java Application as Windows Service</description> |
| <executable>C:\Program Files\Java\jdk-XX\bin\java.exe</executable> |
| <arguments>-jar C:\myapp\app.jar</arguments> |
| <workingdirectory>C:\myapp</workingdirectory> |
| <logmode>roll</logmode> |
| <stdoutlog>C:\myapp\logs\service.log</stdoutlog> |
| <stderrlog>C:\myapp\logs\error.log</stderrlog> |
| <startmode>Automatic</startmode> |
| <delayedAutoStart>true</delayedAutoStart> |
| <env name="JAVA_HOME" value="C:\Program Files\Java\jdk-XX" /> |
| <onfailure action="restart" delay="10 sec" /> |
| </service> |
# 示例 2:运行 Nginx
| <service> |
| <id>VueNginxService</id> |
| <name>Vue Nginx Server</name> |
| <description>Vue Frontend using Nginx</description> |
| <executable>C:\nginx\nginx.exe</executable> |
| <logmode>roll</logmode> |
| </service> |
# 1.3 WinSW XML 配置参数详解
| 参数 |
说明 |
<id> |
服务的唯一标识,不能重复,例如 MyJavaService |
<name> |
显示在 Windows 服务管理器中的服务名称 |
<description> |
服务的描述信息 |
<executable> |
要运行的可执行文件路径,例如 java.exe |
<arguments> |
传递给 executable 的参数,例如 -jar app.jar |
<workingdirectory> |
运行该程序的工作目录 |
<logmode> |
日志模式,如 roll (自动滚动日志)或 reset (每次重启清空日志) |
<stdoutlog> |
标准输出日志文件路径 |
<stderrlog> |
错误日志文件路径 |
<startmode> |
设定服务启动方式,可选: Automatic (自动)、 Manual (手动)、 Disabled (禁用)、 Boot (系统引导时启动)、 System (操作系统初始化时启动) |
<delayedAutoStart> |
true 表示延迟启动,适用于需要依赖其他服务的情况 |
<env> |
设置环境变量,例如 <env name="JAVA_HOME" value="C:\\Program Files\\Java\\jdk-XX" /> |
<onfailure> |
设定失败后的处理方式,例如 <onfailure action="restart" delay="10 sec" /> 代表 10 秒后重启 |
# 1.4 安装与管理服务
| |
| MyService.exe install |
| |
| |
| MyService.exe start |
| |
| |
| MyService.exe stop |
| |
| |
| MyService.exe uninstall |
| |
| |
| MyService.exe restart |
# 2. 使用 NSSM 配置 Windows 服务
# 2.1 下载 NSSM
- 📥 官网下载:https://nssm.cc/download
- 🔽 解压 到
C:\nssm\
- 📂 找到 ****
nssm.exe (位于 win64 目录中)
# 2.2 安装 JAR 作为服务
| C:\nssm\win64\nssm.exe install MyJavaService |
👆 运行后,会弹出 GUI 配置窗口。
# 2.3 GUI 配置步骤
- Application 选项卡:
- Path:
C:\Program Files\Java\jdk-XX\bin\java.exe
- Startup Directory:
C:\myapp
- Arguments:
-jar C:\myapp\app.jar
- Details 选项卡:
- Display name:
My Java Service
- Description:
Java Application running as Windows Service
- Log on 选项卡:
- I/O 选项卡(可选):
- Output log file:
C:\myapp\logs\service.log
- Error log file:
C:\myapp\logs\error.log
- ** 点击 **
Install Service 按钮
# 2.4 NSSM 服务管理命令
| |
| nssm install MyJavaService |
| |
| |
| nssm start MyJavaService |
| |
| |
| nssm stop MyJavaService |
| |
| |
| nssm remove MyJavaService confirm |
# 3. WinSW vs NSSM 对比
| 特性 |
WinSW |
NSSM |
| 🎛 需要 GUI 操作 |
❌ |
✅ |
| ⚙ 配置方式 |
XML |
GUI / 命令 |
| ☕ 适用于 JAR |
✅ |
✅ |
| 🌐 适用于 Nginx |
✅ |
✅ |
| 📄 日志管理 |
✅( logmode 配置) |
✅(手动配置) |
# 最佳选择
- 🚀 WinSW 适合 运维 / DevOps,可灵活配置
- ⚡ NSSM 适合 快速安装