很多三方小程序都沒有提供將自身註冊爲Windows標準服務的方法,但是通過Windows Service Wrapper即可達到目的
一、下載地址
官方主頁:https://github.com/kohsuke/winsw/
下載地址:https://github.com/kohsuke/winsw/releases
二、使用示例
我們將nginx註冊爲Windows服務。
總之來說,Windows Service Wrapper需要新建被包裝的程序的配置文件
2.0 nginx重啓命令
如下:
Nginx -s stop 快速關閉Nginx,可能不保存相關信息,並迅速終止web服務。(快速退出)
Nginx -s quit 平穩關閉Nginx,保存相關信息,有安排的結束web服務。(平滑退出)
Nginx -s reload 因改變了Nginx相關配置,需要重新加載配置而重載。(重新加載配置)
Nginx -s reopen 重新打開日誌文件。(重新加載日誌)
2.1 重命名WinSW.NET4.exe爲任意名稱,比如winsw.exe
2.2 新建nginx服務配置文件
命名爲winsw.xml,必須與winsw.exe重命名的文件名一致。
必須與命名後的myapp.exe放置在同一目錄,內容如下:
XHTML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<service> <id>nginx</id> <name>nginx</name> <description>nginx</description> <executable>E:\soft\nginx-1.17.1\nginx.exe</executable> <logpath>E:\soft\nginx-1.17.1\</logpath> <logmode>roll</logmode> <depend></depend> <startargument>-p</startargument> <startargument>E:\soft\nginx-1.17.1\</startargument> <stopexecutable>E:\soft\nginx-1.17.1\nginx.exe</stopexecutable> <stopargument>-p</stopargument> <stopargument>E:\soft\nginx-1.17.1\</stopargument> <stopargument>-s</stopargument> <stopargument>stop</stopargument> </service> |
2.3註冊服務
以管理員身份運行cmd,輸入:E:\soft\nginx-1.17.1\winsw.exe install,回車,提示安裝服務完成。
2.4卸載
以管理員身份運行cmd,輸入:E:\soft\nginx-1.17.1\winsw.exe uninstall,回車,提示卸載服務完成。
2.5注意
經常通過Windows重啓winSW服務,但子進程並沒有關閉,導致配置不能更新(特別是修改nginx.conf)。
若碰到這種這種情況,需要使用任務管理器手動關閉nginx.exe。
2.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