之前尝试过将Nginx注册成windows服务,有用过微软官方的instsrv/srvany, 以及firedaemon, 虽然可以做服务并启动,但是当你想要停止服务时,就会出现问题。 主要原因在于nginx有一个守护进程,上述的方式只能关闭主进程,多余的进程没法关闭。因此每当用上述的方式时,每次停止/重启服务,都会产生一个多余的nginx进程。非常的不好!
后来发现一个很好的项目:winsw, 可以将可执行文件注册成windows服务,项目的github地址是 https://github.com/kohsuke/winsw
它的介绍是:A wrApper executable that can be used to host any executable as an Windows service, in a liberal license
用它将nginx注册成服务后,完美解决上述的问题,使用起来也很简单,根据.Net Framework的版本,下载对应的支持版本,然后修改配置文件,再使用对应的指令安装即可。
配置文件的格式如下,
如果是要部署多个nginx服务,保证id和name保持唯一
根据实际情况进行修改,然后用管理员权限,在当前目录的控制器台中执行
WinSW.NET4.exe install 进行服务安装。
成功后,在操作系统的服务列表中,就可以看到对应的服务了
重启服务和关闭服务,整体表现符合预期,而且系统里也没有多余的进程.