国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

.NET Core部署為Windows服務(wù)的詳細(xì)步驟

瀏覽:16日期:2022-06-09 11:19:26
目錄
  • 一、概述
  • 二、.NET Core部署Windows服務(wù)
    • 1、項(xiàng)目中需要的配置
    • 2、服務(wù)器中使用sc.exe工具部署Windows服務(wù)
  • 三、NetCore項(xiàng)目部署為L(zhǎng)inux服務(wù)
    • 1、安裝 .net core相關(guān)環(huán)境
    • 2、項(xiàng)目中需要的配置
    • 3、部署服務(wù)

一、概述

目前測(cè)試了下面兩個(gè)項(xiàng)目,均可以部署為Windows服務(wù)運(yùn)行。部署的方式

二、.NET Core部署Windows服務(wù)

1、項(xiàng)目中需要的配置

想要將.NET Core部署為window服務(wù),項(xiàng)目中需要進(jìn)行以下配置:項(xiàng)目中引入Microsoft.Extensions.Hosting.WindowsServices包

修改Program.cs文件,添加UseWindowsService()方法調(diào)用

using Microsoft.AspNetCore.Hosting;using Microsoft.Extensions.Hosting;using System.Net;namespace XXService{    public class Program    {public static void Main(string[] args){    CreateHostBuilder(args).Build().Run();}public static IHostBuilder CreateHostBuilder(string[] args){    return Host.CreateDefaultBuilder(args)//使用默認(rèn)配置實(shí)例化Host主機(jī)      .UseWindowsService()//指定項(xiàng)目可以部署為Windows服務(wù).ConfigureWebHostDefaults(webBuilder =>{    webBuilder.UseStartup<Startup>()    .UseKestrel(options =>    {options.Listen(IPAddress.Any, 50003);//指定端口號(hào),不然如果部署了多個(gè)服務(wù),容易出現(xiàn)端口號(hào)占用options.Limits.MaxRequestBodySize = null;    }); ;}).UseDefaultServiceProvider(options => options.ValidateScopes = false);}    }}

2、服務(wù)器中使用sc.exe工具部署Windows服務(wù)

sc.exe是幫助開(kāi)發(fā)部署 WindowsNT 服務(wù)的工具,路徑: C:\Windows\System32\sc.exe。

(1)將項(xiàng)目發(fā)布到服務(wù)器

(2)使用管理員權(quán)限運(yùn)行PowerShell

(3)部署的相關(guān)命令:ServiceName是自定義的服務(wù)名稱(chēng),可以自行修改

## 創(chuàng)建服務(wù)sc.exe create ServiceName  BinPath=C:\xx\ClearFontService\ClearFontService.exe## 啟動(dòng)服務(wù)sc.exe start ServiceName## 停止服務(wù)sc.exe stop ServiceName## 刪除服務(wù)sc.exe delete ServiceName## 添加服務(wù)描述sc description ServiceName "描述"## 改變服務(wù)的啟動(dòng)方式 手動(dòng)/自動(dòng)/禁用 sc.exe config ServiceName start= demand/auto/disabled

(4)創(chuàng)建安裝腳本install.bat

set serviceName=ServiceNameset serviceFilePath=C:\xx\ClearFontService\ClearFontService.exeset serviceDescription=服務(wù)描述sc.exe create %serviceName%  BinPath=%serviceFilePath%sc.exe config %serviceName%    start=auto  sc.exe description %serviceName%  %serviceDescription%sc.exe start  %serviceName%pause

(5)卸載服務(wù)腳本unstall.bat

set serviceName=ServiceNamesc.exe stop   %serviceName% sc.exe delete %serviceName% pause

使用管理員權(quán)限運(yùn)行腳本

三、NetCore項(xiàng)目部署為L(zhǎng)inux服務(wù)

環(huán)境:操作系統(tǒng)Centos 8系統(tǒng)

1、安裝 .net core相關(guān)環(huán)境

注冊(cè) Microsoft 密鑰和源:

 sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm

安裝 .NET Core SDK:

sudo yum install aspnetcore-runtime-3.1

安裝完成之后驗(yàn)證:

# 驗(yàn)證dotnet core runtime是否安裝成功dotnet --version#查看系統(tǒng)中包含的.net core runtime版本dotnet --list-runtimes

2、項(xiàng)目中需要的配置

項(xiàng)目中引入Microsoft.Extensions.Hosting.Systemd包

修改Program.cs文件,添加UseSystemd()方法調(diào)用,可以和UseWindowsService()共存

using?Microsoft.AspNetCore.Hosting;using Microsoft.Extensions.Hosting;using System.Net;namespace ClearFontService{    public class Program    {public static void Main(string[] args){    CreateHostBuilder(args).Build().Run();}public static IHostBuilder CreateHostBuilder(string[] args){    return Host.CreateDefaultBuilder(args)//使用默認(rèn)配置實(shí)例化Host主機(jī)      .UseWindowsService() .UseSystemd().ConfigureWebHostDefaults(webBuilder =>{    webBuilder.UseStartup<Startup>()    .UseKestrel(options =>    {options.Listen(IPAddress.Any, 50003);options.Limits.MaxRequestBodySize = null;    }); ;}).UseDefaultServiceProvider(options => options.ValidateScopes = false);}    }}

然后把發(fā)布文件移至linux系統(tǒng)

3、部署服務(wù)

linux的服務(wù)是通過(guò)systemd守護(hù)進(jìn)程部署的?,F(xiàn)在在系統(tǒng)中我們有了一個(gè)發(fā)布后的應(yīng)用程序,我們需要為systemd創(chuàng)建配置文件部署服務(wù)。步驟如下:

(1)創(chuàng)建一個(gè).service文件(我們要部署服務(wù),因此需要.service文件),填入以下內(nèi)容??梢栽贚inux中直接創(chuàng)建或者通過(guò)windows創(chuàng)建然后拷貝至linux。

[Unit]Description= my test app[Service]Type=notifyExecStart=/usr/bin/dotnet  /home/demo/WorkerService.dll[Install]WantedBy=multi-user.target
  • Description:描述,看個(gè)人需要是否添加。不需要可以去掉。只留下 [Service] 和 [Install]
  • Type=notify:當(dāng)前服務(wù)啟動(dòng)完畢,會(huì)通知Systemd,再繼續(xù)往下執(zhí)行
  • ExecStart:?jiǎn)?dòng)當(dāng)前服務(wù)的命令,程序如何啟動(dòng),第一個(gè)路徑是固定路徑。第二個(gè)路徑是應(yīng)用程序的dll路徑(可以自定義)
  • WantedBy:表示該服務(wù)所在的 Target服務(wù)組, multi-user.target,表示多用戶命令行狀態(tài)。

(2).service文件移動(dòng)至/etc/systemd/system/ 固定目錄下,假設(shè)自定義文件名稱(chēng)為:testapp.service(如果使用其他名稱(chēng),請(qǐng)更改testapp)

(3)使用systemctl命令重新加載新的配置文件

sudo systemctl daemon-reload

(4)查看相關(guān)服務(wù)狀態(tài)

sudo systemctl status testapp

您應(yīng)該看到類(lèi)似以下的內(nèi)容:

(5)這表明您已注冊(cè)的新服務(wù)已禁用,我們可以通過(guò)運(yùn)行以下命令來(lái)啟動(dòng)我們的服務(wù):

sudo systemctl start testapp.service

(6)重新運(yùn)行sudosystemctl status testapp 查看服務(wù)狀態(tài)顯示已激活正在運(yùn)行中

(7)設(shè)置服務(wù)開(kāi)機(jī)自啟

sudo systemctl enable testapp.service

到此我們的服務(wù)已經(jīng)完整的部署到了linux系統(tǒng)中。

(8)現(xiàn)在我們有一個(gè)運(yùn)行了systemd的應(yīng)用程序,我們可以看看日志記錄集成。使用systemd的好處之一是可以使用journalctl訪問(wèn)的集中式日志記錄系統(tǒng)。首先,我們可以使用journalctl(訪問(wèn)日志的命令)查看服務(wù)日志:

sudo journalctl -u testapp

可以看到我們的程序正在運(yùn)行,可以使用↑↓ ← →查看日志內(nèi)容?;蛘呤褂胓rep搜索。q 鍵退出

(9)卸載自定義服務(wù)

servicename=testapp.servicesystemctl stop $servicenamesystemctl disable $servicenamerm -rf /etc/systemd/system/$servicenamerm -rf /etc/systemd/system/$servicename symlinks that might be relatedsystemctl daemon-reloadsystemctl reset-failed

到此這篇關(guān)于.NET Core部署為Windows服務(wù)的文章就介紹到這了,更多相關(guān).NET Core部署Windows內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: ASP.NET
主站蜘蛛池模板: 吴桥县| 海阳市| 彰化县| 普兰县| 闽清县| 镇康县| 独山县| 荥阳市| 湛江市| 怀远县| 灵台县| 那坡县| 油尖旺区| 三原县| 宁南县| 诸城市| 怀集县| 淮北市| 蒲江县| 柞水县| 江陵县| 郧西县| 江山市| 墨玉县| 南宫市| 石景山区| 济南市| 桑植县| 池州市| 赣榆县| 乌兰察布市| 搜索| 南木林县| 饶阳县| 筠连县| 将乐县| 图木舒克市| 两当县| 莱芜市| 阜康市| 关岭|