使用 WinSW 将 nginx 注册成windows系统服务,开机自启

今天在windows服务器部署了nginx,但是系统重启总是需要手动启动nginx,比较麻烦, 于是打算注册成系统服务,但是nginx在windows上没这个功能,需要用额外的工具进行注册。

WinSW介绍

官方介绍如下:

WinSW is an executable binary, which can be used to wrap and manage a custom process as a Windows service.

现实生活中,我们使用windows系统的电脑的时候,可能会遇到这么一种情况:想把一些应用程序添加为开机启动项。对于有图形界面的应用程序,一般不存在问题。但是如果想运行命令行应用程序,就不是那么方便了。一种笨办法就是写个bat,放到启动文件夹里,就可以开机启动了。开机之后,你就会发现,这样会一直显示着一个CMD窗口,而且这个窗口不能关,关了程序就停了。

其实Windows系统自带后台程序管理的功能,也就是我们经常用到的服务。但是Windows的服务只有程序的开发者在写程序的时候引用到这个功能,我们才能利用服务来控制程序的启动和关闭。对于一般的命令行程序来说,没办法利用服务。

WinSW下载

点击releases

windows的nginx刚启动就挂_nginx

选个版本

windows的nginx刚启动就挂_windows的nginx刚启动就挂_02

根据系统选择

windows的nginx刚启动就挂_windows_03

服务注册

1.把WinSW.NET4.exe重命名为install-service.exe(名称可以任意命名)复制到nginx的根目录下

windows的nginx刚启动就挂_nginx_04

2.在nignx的根目录下新建个install-service.xml(必须和前面的install-service.exe一致),编辑内容

<service>

 <id>nginx</id>

 <name>nginx</name>

 <description>nginx</description>

 <logpath>E:\nginx-1.19.2</logpath>

 <logmode>roll</logmode>

 <depend></depend>

  <executable>E:\nginx-1.19.2\nginx.exe</executable>

  <stopexecutable>E:\nginx-1.19.2\nginx.exe -s stop</stopexecutable>

</service>

3.命令行进入nginx根目录执行如下命令:

install-service.exe install

杀毒软件报警选择允许

windows的nginx刚启动就挂_windows_05


nginx注册成功

windows的nginx刚启动就挂_注册服务_06


服务中可以看到我们注册的nginx服务了

windows的nginx刚启动就挂_winsw_07

问题解决