天天看點

.net core 部署到windows服務上的方法

前言

Net core 項目部門在Windows有很多種方式,大緻有以下幾種,
  1. dotnet 指令,
  2. iis(windowshosts),
  3. 一些開源的應用容器(docker )
  4. 基于一些exe 程式,微軟官網上案例
  5. Nssm 搭建windows服務
其中優劣對比在這不進行累述。我今天是把它搭建到windows服務上的,這種方式對于我們現有dotnet來說相對美觀(一個黑框框,一個看不到),電腦重新開機可以自動重新開機。

1.實作

1.1.下載下傳nssm

官網http://www.nssm.cc/,下載下傳位址http://www.nssm.cc/download 

1.2.搭建windows 服務

找到檔案夾下建立的Install.bat 點選運作彈出操作窗體。

Install.bat内容:

%~d0
cd %~dp0
nssm install NPSWebCoreService
PAUSE      
.net core 部署到windows服務上的方法

Path:選擇系統運作bat----C:\Nps\CoreWeb\1run.bat

ps:因為我們系統中要特殊處理是以直接執行了bat。此内容正常是填寫C:\Program Files\dotnet\dotnet.exe. 因為要執行dotnet指令,我這些操作實在bat中執行的。

Startup directory:bat 所在目錄不用改變;

ps:釋出項目檔案夾的位址。

Arguments:為空;

ps:項目運作dll:

Service name:我寫在install.bat 批處理裡面了,不要改變,因為代碼中重新開機服務我這是寫死的。。

ps:建立線管名稱即可,即windows 服務名稱。

然後點選Install service按鈕就完成了部署。

注:紅色字型為是一般處理方式,非紅色是我們系統中處理的方式

1.2.3 啟動服務

讓後輸入網站就可以通路了

.net core 部署到windows服務上的方法
.net core 部署到windows服務上的方法

3. Nssm

3.1.輸入nssm 了解其指令行

3.2.官網http://www.nssm.cc/usage

4. 針對與咱們系統的問題的處理方案

4.1. 日志問題,nssm 中path 檔案運作bat 不要運作dotnet.exe. Log4net 配置問題。

4.2. Office 轉換pdf 問題,windows servers 2008 伺服器缺少com元件缺少視窗,我在程式中增加了相關代碼,如果沒有權限請手動建立(伺服器2008 r2 ,2016都能建立)

https://blog.csdn.net/wyzlwyzl/article/details/48686483

4.3.資料庫備份重新開機服務問題,改為重新開機windows服務,是以請用上面的install.bat運作不要,改變Service name。

重新開機服務代碼:

try
 {
    ServiceController service = new ServiceController("NPSWebCoreService");
    if (service.Status == ServiceControllerStatus.Running)
       {
        service.Stop();
        service.WaitForStatus(ServiceControllerStatus.Stopped);
       }
   service.Start();
   service.WaitForStatus(ServiceControllerStatus.Running);
  }
  catch (Exception){}      

4.4.netcoreweb要基于mysql 服務問題,擔心再啟伺服器的時候,mysql和windows 服務啟動順序的問題,我在啟動bat 中怎麼了判斷mysql服務是否啟動的判斷。

bat 内容:

@echo off

SETLOCAL enabledelayedexpansion
rem 關閉自動輸出
:begin

for /f "skip=3 tokens=4" %%i in ('sc query MySQL') do set "zt=%%i" &goto :next
:next
if /i "%zt%"=="RUNNING" (
    echo 已經發現該服務在運作。
) else (
    net start MySQL80
    echo 已經發現該服務在運作1。
)

rem 接收輸入
rem 輸出得到的輸入資訊
echo 啟動NPSWebCore

dotnet ./NPSWebCore.dll

@echo 啟動結束
exit      

作者:王延領

出處:http://wyl1924.cnblogs.com

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連結。