目錄
- WinSW介紹
- 安裝
- 配置
- 使用
WinSW介紹
WinSW的全稱是Windows Service Wrapper,可以將應用打包成Windows服務的方式執行。
WinSW 3 可在安裝了 .NET Framework 4.6.1 或更高版本的 Windows 平臺上執行。 對於沒有 .NET Framework 的系統,該專案提供基於 .NET 7 的本地 64 位和 32 位可執行檔案。
- 專案地址:https://github.com/winsw/winsw
- 最新發行版下載地址:https://github.com/winsw/winsw/releases
- 注:請選擇 Latest 版本下載
- 需要下載的檔案
- 配置檔案:二選一
- 全部配置:sample-allOptions.xml
- 精簡配置:sample-minimal.xml
- 執行檔案:根據作業系統位數,一般都是x64了
- WinSW-x64.exe
- 配置檔案:二選一
安裝
- 一組WinSW(一個配置+一個執行檔案)只能提供一個應用的服務能力。
- 將下載好的配置檔案和可執行檔案放置到jar包同級目錄下。
- 將配置檔案和可執行檔案改名和jar包同名。(非必要但是建議)
- 使用文字編輯器編輯配置檔案(.xml),詳細配置如下。
配置
所有的配置內容需要在<service></service>標籤內進行配置,修改的配置會在下一次服務啟動時生效
- 核心配置:
- 系統服務ID:<id>
標籤內配置的字串需要是系統服務中的唯一值 - 系統服務名稱:<name>
顯示在系統服務管理頁面的服務名稱 - 服務備註:<description>
系統服務管理中對此服務的備註 - 可執行應用:<executable>
此處配置是應用的執行檔案,比如java服務就是配置java即可(前提是配了環境變數) - 啟動引數:<arguments>
此處配置應用的啟動引數,比如 -jar D:\xxx.jar - 服務啟動模式:<startmode>
服務在系統啟動時自啟還是手動啟動,一般設定自啟:Automatic,前提是依賴服務都配置了,比如mysql、redis之類的 - WinSW日誌模式:<log mode="none"/>
這裡設定的是不列印日誌,因為如果不設定的話,WinSW會把控制檯日誌一股腦全到列印到一個叫做 服務名.log 的日誌檔案中 - WinSW日誌位置:<logpath>
這裡的日誌是WinSW的服務日誌,不是應用的內部日誌,隨便設定一個位置即可,不設定的話會生成在執行同目錄下
- 系統服務ID:<id>
- 其他配置:
詳見:https://github.com/winsw/winsw/blob/v3/docs/xml-config-file.md - 日誌更多引數:
詳見:https://github.com/winsw/winsw/blob/v3/docs/logging-and-error-reporting.md - 示例
<service> <id>TEST-Server</id> <name>測試服務</name> <description>這是一個測試服務</description> <executable>java</executable> <arguments>-Dfile.encoding=utf-8 -jar D:\test.jar</arguments> <startmode>Automatic</startmode> <log mode="none"/> <logpath>D:\test\logs</logpath> </service>
使用
- 透過可執行檔案對服務進行安裝、啟動、停止、解除安裝
- 命令方式:
xxx.exe <Command>
- Command
- 安裝服務:install
- 啟動服務:start
- 停止服務:stop
- 重啟服務:restart
- 服務狀態:status
- 解除安裝服務:uninstall
- 進階使用方式詳見:https://github.com/winsw/winsw/blob/v3/docs/cli-commands.md