# 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 适合 快速安装