基於 .NET CORE + VUE 前後端項目打包,實現批處理安裝,一鍵部署

.NET 項目的前後端部署,網上有不少,大部分基於NSSM來部署的

這個方法並沒有問題,非常好用.但是很多都是需要 彈窗設置的.並沒有詳細的講解批處理的命令方式.

在參考了相關博客後,寫一個簡單的教程案例,僅供參考

環境:

Ngnix(非必須,如果純後端可以忽略)

NSSM

關於mssm的下載,傳送門: http://www.nssm.cc/download

 

該前後端項目基於ZRAdmin.net,所有教程以ZRAdmin.NET爲準

 

複製mssn 到nginx根目錄,web項目放在了html目錄下

 

 

相關批處理命令

WEB後端

ECHO ON
CLS
ECHO "******************************************************"
ECHO "*******api項目安裝, 請確認以管理員身份運行,按任意鍵繼續*****"
ECHO "******************************************************"
cd /d %~dp0
:: nssm install rq_webapi "%PROGRAMFILES%\html\zradmin\api"
nssm install rq_webapi "%PROGRAMFILES%\dotnet\dotnet.exe"
nssm set xx_webapi AppDirectory "%cd%\html\zradmin\api"
nssm set xx_webapi AppParameters "ZR.Admin.WebApi.dll"
nssm set xx_webapi Description "XXXwebAPI服務..."
nssm start rq_webapi
echo 當前路徑爲 %cd%
pause

前端

ECHO ON
CLS
ECHO "******************************************************"
ECHO "****Nginx服務安裝...請確認以管理員身份運行,按任意鍵繼續*****"
ECHO "******************************************************"
echo "停止當前服務Nginx, 如果存在"
net stop xx_nginx
echo "刪除當前Web服務器Nginx"
sc delete xx_nginx
echo "開始安裝Nginx"
cd /d %~dp0
echo 當前路徑爲 %cd%
nssm install xx_nginx "%cd%\nginx.exe"
nssm set xx_nginx Description "XXXnginx Web服務器"
echo "按任意鍵啓動Nginx"
pause
echo
nssm start xx_nginx
echo "服務啓動完畢"
#pause
::nssm remove rq_nginx

 

 批處理命令還有很多待完善的地方

僅供參考

nssm相關批處理指令

Application Tab

應用基礎配置

nssm set <servicename> Application <fullpath>
nssm set <servicename> AppDirectory <directory>
nssm set <servicename> AppParameters [args...]

 

 

Details Tab

服務詳情

nssm set <servicename> DisplayName <displayname>
nssm set <servicename> Description <description>
nssm set <servicename> Start SERVICE_AUTO_START

啓動模式清單:

SERVICE_AUTO_START: Automatic 自動.
SERVICE_DELAYED_AUTO_START: Delayed 自動(延時啓動).
SERVICE_DEMAND_START: Manual 手動.
SERVICE_DISABLED: 禁用.

 

 

Log On Tab

登錄配置,用於配置當前服務以何種身份進行進程啓動,默認爲LocalSystem

nssm get <servicename> ObjectName
nssm set <servicename> ObjectName <username> <password>
nssm set <servicename> ObjectName <username> correct horse battery staple
nssm set <servicename> ObjectName <username> ""

 

Dependencies Tab(服務依賴)

配置服務啓動依賴項,通過配置依賴服務名稱,實現服務依賴配置,配置多個依賴服務又空格分隔,既可以是寫入服務的名稱name,又可以使服務的顯示名稱displayname

nssm set <servicename> DependOnService [servicname01] [servicename02]
nssm set <servicename> DependOnService [service displayname01] [service displayname01]]

 

Process Tab

進程相關配置,用於設置應用程序的進程優先級和CPU的執行選擇,默認情況下應用程序以正常優先級運行,並允許在所有CPU上運行,如希望進程限制爲可用CPU的子集,可取消選中"所有處理器"並依據實際情況選擇特定CPU

nssm set <servicename> AppPriority NORMAL_PRIORITY_CLASS
nssm set <servicename> AppNoConsole 0
nssm set <servicename> AppAffinity All

AppNoConsole設置進程是否新建控制檯窗體,默認爲0

從版本 2.22 開始,nssm將默認爲應用程序創建一個新的控制檯窗口,允許一些程序運行,否則會失敗,例如那些希望能夠讀取用戶輸入的程序

若不需要,可以通過將 HKLM\System\CurrentControlSet\Services\servicename\Parameters 下的整數 (REG_DWORD) 值 AppNoConsole 設置爲非零值來禁用控制檯窗口

AppAffinity默認設置爲進程可在所有CPU上運行,可以指定對應數值,用於特定CPU上運行,連續可用-起始到終止,,逗號用於分隔不同CPU

AppAffinity默認設置爲進程可在所有CPU上運行,可以指定對應數值,用於特定CPU上運行,連續可用-起始到終止,,逗號用於分隔不同CPU

nssm set <servicename> AppAffinity 0-4,7
1
進程優先級配置

REALTIME_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
————————————————

ShutDown Tab

停止服務,配置服務停止時,相關停止操作

nssm set <servicename> AppStopMethodSkip 0
nssm set <servicename> AppStopMethodConsole 1500
nssm set <servicename> AppStopMethodWindow 1500
nssm set <servicename> AppStopMethodThreads 1500

AppStopMethodSkip對應屬性設置是否選擇,默認爲0

配置值清單

1 - Don’t send Control-C to the console.
2 - Don’t send WM_CLOSE to windows.
4 - Don’t send WM_QUIT to threads.
8 - Don’t call TerminateProcess().

Exit actions Tab

 退出操作配置,用於調整服務退出時的重啓限制和默認操作,還可以指定應用程序自動重新啓動之間的強制延遲

 

 

 

nssm set <servicename> AppThrottle 1500
nssm set <servicename> AppExit Default Restart
nssm set <servicename> AppRestartDelay 0

AppThrottle意外退出,延時重啓的時間間隔

爲避免 CPU 資源緊張,若受監控的應用程序在啓動後意外退出,nssm將限制服務的重新啓動

默認情況下,使用1500毫秒的閾值,要指定不同的值,需創建一個整數 (REG_DWORD) 值 HKLM\System\CurrentControlSet\Services\servicename\Parameters\AppThrottle 並將其設置爲所需的毫秒數

AppExit爲要配置應用程序退出時nssm應採取的操作,需編輯鍵 HKLM\System\CurrentControlSet\Services\servicename\Parameters\AppExit 的默認值

若nssm運行時註冊表中不存在該鍵,它將創建它並將值設置爲重新啓動。 將其更改爲忽略或退出以指定所採取的操作

nssm只會在此密鑰不存在時創建它, 用戶的更改不會被覆蓋,對應註冊表內容如下

Default Restart(Restart application)
Ignore(No action)
Exit(Stop service)
Suicide(Fack crash)

 

I/O Tab

配置文件輸出/輸出路徑,一般爲系統異常和日誌運行輸出日誌

 

nssm set <servicename> AppStdin [filepath]
nssm set <servicename> AppStdout [filepath]
nssm set <servicename> AppStderr [filepath]

>nssm set Frpc AppStderr C:\games\frpc\service.log

 

File rotation Tab

可與I/O設置結合使用,用於配置服務重啓時輸出文件的輪換操作

nssm set <servicename> AppStdoutCreationDisposition 4
nssm set <servicename> AppStderrCreationDisposition 4
nssm set <servicename> AppRotateFiles 1
nssm set <servicename> AppRotateOnline 0
nssm set <servicename> AppRotateSeconds 86400
nssm set <servicename> AppRotateBytes 104856

AppStdoutCreationDisposition輸出CreationDisposition的參數值

AppStderrCreationDisposition異常輸出CreationDisposition的參數值

AppRotateFiles是否開啓文件輪換操作,1標識啓用,0表示取消

AppRotateOnline是否在服務運行時動態輪換日誌文件

AppRotateSeconds輪換文件觸發時間間隔數

AppRotateBytes輪換文件觸發的單文件大小閥值
————————————————

Environment Tab

 

 

 

可用於指定要傳遞給應用程序的以換行符分隔的環境變量列表

 
nssm set <servicename> AppEnvironmentExtra JAVA_HOME=C:\java
nssm set <servicename> AppEnvironmentExtra CLASSPATH=C:\Classes TEMP=C:\Temp

例如,獲取環境變量

>nssm get <servicename> AppEnvironmentExtra CLASSPATH
C:\Classes

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章