通过Windows Service Wrapper将自身注册为Windows标准服务
一、官方主页:https://github.com/kohsuke/winsw/
当前最新版本为:winsw-2.0.1-bin.exe。下载地址:http://repo.jenkins-ci.org/releases/com/sun/winsw/winsw/2.0.1/winsw-2.0.1-bin.exe
二、具体操作
我们将nginx注册为Windows服务。
总之来说,Windows Service Wrapper需要新建被包装的程序的配置文件
1、重命名WinSW.NET4.exe为任意名称,比如nginx-service.exe
2、新建nginx服务配置文件,比如nginx-service.xml
注意:命名为nginx-service.xml,必须与nginx-service.exe重命名的文件名一致。
如图:
配置文件内容如下:
<service>
<id>nginx</id>
<name>Nginx Service</name>
<description>Nginx Service</description>
<logpath>E:\nginx-1.18.0\logs</logpath>
<log mode="roll-by-size">
<sizeThreshold>10240</sizeThreshold>
<keepFiles>8</keepFiles>
</log>
<executable>E:\nginx-1.18.0\nginx.exe</executable>
<startarguments>-p E:\nginx-1.18.0</startarguments>
<stopexecutable>E:\nginx-1.18.0\nginx.exe</stopexecutable>
<stoparguments>-p E:\nginx-1.18.0 -s stop</stoparguments>
</service>
3、注册服务
以管理员身份运行cmd,输入:E:\nginx-1.18.0\nginx-service.exe install,回车,提示安装服务完成。
4、卸载
以管理员身份运行cmd,输入:E:\nginx-1.18.0\nginx-service.exe uninstall,回车,提示卸载服务完成。
5、注意
经常通过Windows重启Nginx Service服务,但子进程并没有关闭,导致配置不能更新(特别是修改nginx.conf)。
若碰到这种这种情况,需要使用任务管理器手动关闭nginx.exe。
6、报错
一直报这个错FATAL - WMI Operation failure: AccessDenied
打开cmd的时候,改成 以管理员身份运行 就可以了。
三、总结
1、经过使用后发现,Windows服务内注册的服务路径不是被委托程序,而是winsw.exe。所以每一个服务封装,都必须考虑一份独立的winsw.exe,原因如此。
四、nginx常用命令
进入nginx根目录
1.启动nginx start nginx
2.停止nginx nginx -s stop (stop表示立即停止nginx,不保存相关信息)
3.停止nginx nginx -s quit (quit 表示正常退出nginx,并保存相关信息)
4.重启nginx nginx -s reload
5.查看配置是否正常 nginx -t
如果nginx服务关掉后,页面还能访问可以参考文章:
https://editor.csdn.net/md/?articleId=111385398
本文参考文章:
https://blog.csdn.net/bitree1/article/details/100559530
https://www.cnblogs.com/huiy/p/12459356.html