在Windows系统中创建系统服务

本文以创建nginx服务为例

参考文档

方法一:使用Winsw工具创建nginx服务

简介

  • 全称:Windows Service Wrapper
  • GitHub:https://github.com/winsw/winsw
  • 开源协议:MIT
  • 起源:最初为 Jenkins CI 设计,后独立为通用工具
  • 特点:基于 XML 配置、功能丰富、支持 .NET

核心机制:WinSW 本身是一个 .exe(如 WinSW.exe),配合一个同名的 XML 配置文件(如 myapp.xml)工作。

下载Winsw工具

访问Winsw的官方下载页面: https://repo.jenkins-ci.org/artifactory/releases/com/sun/winsw/winsw/

下载最新版本的Winsw工具,例如:winsw-2.9.0-bin.exe

配置服务

  1. 将下载的Winsw工具重命名为nginx-service.exe,并放置到Nginx的安装路径下。

  2. 然后在Nginx目录下创建一个名为 nginx-service.xml 的配置文件,内容如下:

 1<service>
 2  <id>nginx</id>
 3  <name>Nginx Service</name>
 4  <description>High Performance Nginx Service</description>
 5  <logpath>d:\logs\nginx-logs</logpath>
 6  <log mode="roll-by-size">
 7    <sizeThreshold>10240</sizeThreshold><!-- 日志文件大小阈值(KB) -->
 8    <keepFiles>8</keepFiles> <!-- 保留日志文件数量 -->
 9  </log>
10  <executable>d:\dev\nginx-1.25.0\nginx.exe</executable>
11  <startarguments>-p d:\dev\nginx-1.25.0</startarguments>
12  <stopexecutable>d:\dev\nginx-1.25.0\nginx.exe</stopexecutable>
13  <stoparguments>-p d:\dev\nginx-1.25.0 -s stop</stoparguments>
14</service>

注意:

  • 确保Nginx目录路径中不包含空格,以避免启动失败。
  • exe 的文件名和 xml 的文件名必须同名

服务的安装、启动、停止和卸载

以管理员身份打开命令提示符(cmd),导航到Nginx目录,执行以下命令:

 1# 安装服务
 2# 执行完成后,Nginx服务将被添加到Windows服务列表中,服务名称为Nginx Service。
 3$ nginx-service.exe install
 4
 5# 启动服务
 6$ nginx-service.exe start
 7
 8# 停止服务
 9$ nginx-service.exe stop
10
11# 卸载服务
12$ nginx-service.exe uninstall

当然,也可以在windows的服务管理界面中执行上述操作。

方法二:使用NSSM工具

下载

下载链接: https://nssm.cc/release/nssm-2.24.zip

解压下载的文件到任意目录即可。

安装服务

以管理员身份打开命令提示符,然后导航到NSSM工具所在的目录,执行 nssm install <服务名>来安装服务:

1nssm install nginx

这时会弹出一个对话框,填入内容:

  • Path 填入:d:\dev\nginx-1.25.0\nginx.exe,表示程序(exe、bat)的路径
  • Startup directory 填入:d:\dev\nginx-1.25.0 表示程序工作目录
  • Arguments 表示参数(可选项;如果 nginx.conf 不在程序工作目录下,需要指定参数-c <配置文件路径>

输入完成后,点击Install service 即可。

打开windows的服务管理界面可以看到,Nginx已经安装为windows服务了。