為什麼部署至Windows Services 在很多情況下,很少會把.Net Core項目部署至Windows服務中,特別是Asp.net Core就更少了。一般情況下,Asp.net Core會部署至linux伺服器,或者部署至Windows的IIS中。但也不排除會有Asp.net Core部署至 ...
為什麼部署至Windows Services
在很多情況下,很少會把.Net Core項目部署至Windows服務中,特別是Asp.net Core就更少了。一般情況下,Asp.net Core會部署至linux伺服器,或者部署至Windows的IIS中。但也不排除會有Asp.net Core部署至Windows 服務中的情況,比如Windows伺服器並沒有安裝IIS,或者Asp.net Core中存在一些定時任務,需要實時運行,等等一些情況。
微軟解決方案
微軟也提供了.Net Core部署至Windows 服務的解決方案,應該說是Asp.net Core的解決方案。可以參看官方文檔 https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/windows-service?view=aspnetcore-2.1&tabs=aspnetcore2x。但是官方的解決方案比較繁瑣,而且需要更改部分代碼。
什麼是NSSM?
官網http://www.nssm.cc/,下載地址http://www.nssm.cc/download
簡單點理解就是NSSM可以把一些exe程式封裝成Windows服務,然後exe程式就像服務一樣運行。而且NSSM功能強大,運行更簡單,界面化傻瓜化處理方式。
使用NSSM
後面的代碼演示以Asp.net Core 2.1作為演示,其他.Net Core方式一致。
1、確保.Net Core程式可以正常運行
先把Asp.net Core發佈,然後直接運行dotnet命令,確保程式可以運行並訪問
2、使用NSSM安裝dotnet
下載NSSM,使用命令視窗至NSSM目錄中找到nssm.exe所在的目錄,然後運行nssm install,然後會彈框,選擇相應的文件和文件夾。
Path:dotnet所在的目錄,一般預設是在C:\Program Files\dotnet\dotnet.exe;
Startup directory:程式所在的目錄,就是最後程式dll所在的目錄;
Arguments:程式dll的名稱,一般是項目名加上.dll;
Service name:在此寫上服務的名稱即可。
然後點擊Install service按鈕就完成了部署。
最後到Windows服務管理界面找到安裝的服務名稱,右鍵啟動即可,或者直接運行nssm start 服務名稱,也可以運行net start 服務名稱。這樣就可以非常簡單的把.Net Core托管至Window服務中。方便管理、啟動、停止等等。
NSSM更多的操作
命令視窗至NSSM目錄中找到nssm.exe所在的目錄,然後運行nssm,會看到NSSM的更多操作
比如對服務的增刪改查,啟動,停止,重啟等等。都可以直接用NSSM直接操作,一些常用的操作支持界面話(GUI)。
更多NSSM詳情可以參考:http://www.nssm.cc/usage
總結
1、使用NSSM不僅可以把Asp.net Core部署到Windows 服務中,也可以把.Net Core甚至於其他exe程式封裝在服務中運行。
2、為.Net Core提供了另一種部署在Windows的方式。