精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

.NET Worker Service 部署到 Linux 作為 Systemd Service 運行

系統(tǒng) Linux
在本文中,我通過一個實例詳細介紹了如何將 .NET Worker Service 部署到 Linux 系統(tǒng)作為 Systemd Service 運行,并說明了如何使用 systemctl 命令來管理服務,如何使用 journalctl 命令查看 Systemd 服務日志。

[[407943]]

本文轉(zhuǎn)載自微信公眾號「技術譯站」,作者技術譯站。轉(zhuǎn)載本文請聯(lián)系技術譯站公眾號。

今天我接著介紹一下如何將 Worker Service 部署到 Linux 上,并作為 Systemd Service 運行。

我在本文中要覆蓋的內(nèi)容包含:

  • 作為 Linux 控制臺程序運行
  • 作為 Systemd Service 運行
  • 開機自動啟動、查看日志信息

創(chuàng)建項目并發(fā)布

§下載 Worker Service 源碼

我將基于上一篇文章中的 Worker Service 源碼來修改,如果您安裝有 git,可以用下面的命令獲取它:

  1. git clone git@github.com:ITTranslate/WorkerServiceAsWindowsService.git 

然后,使用 Visual Studio Code 打開此項目,構(gòu)建一下,以確保一切正常:

  1. dotnet build 

§刪除用不到的依賴項

刪除上一篇文章中用于 Windows Services 的依賴程序包:

  1. git clone git@github.com:ITTranslate/WorkerServiceAsWindowsService.git 

然后,刪除 Program.cs 中的 .UseWindowsService() 方法調(diào)用。

§修改配置文件

打開配置文件 appsettings.json,將日志文件保存路徑中的 \ 改為 /,其他不用做任何更改。

  1.   "Name""RollingFile"
  2.   "Args": { 
  3.     "pathFormat""Logs/{Hour}.log"
  4.     "outputTemplate""{Timestamp:o} [{Level:u3}] ({MachineName}/{ProcessId}/{ProcessName}/{ThreadId}) {Message}{NewLine}{Exception}" 
  5.   } 
  6. }, 
  7.   "Name""SQLite"
  8.   "Args": { 
  9.     "sqliteDbPath""Logs/log.db"
  10.     "tableName""Logs"
  11.     "maxDatabaseSize": 1, 
  12.     "rollOver"true 
  13.   } 

這是因為 Windows 中使用反斜杠 \ 來表示目錄,而 Linux 中使用正斜杠 / 來表示目錄。

假如不修改保存路徑,您將會看到日志被保存成如下的尷尬文件名:

  1. 'Logs\2021061715.log' 
  2. 'Logs\log.db' 

§發(fā)布程序

運行 dotnet publish 命令將應用程序及其依賴項發(fā)布到文件夾。

  1. dotnet publish -c Release -r linux-x64 -o c:\test\workerpub\linux 

這里我使用 -r linux-x64 參數(shù),指定發(fā)布獨立部署于 Linux 系統(tǒng)的應用程序。

命令運行完成后,您會在 C:\test\workerpub\linux 文件夾中看到適用于 Linux 系統(tǒng)的可執(zhí)行程序及其所有依賴項。

作為 Linux 控制臺程序運行

將文件夾 C:\test\workerpub\linux 下的文件壓縮為 linux.zip。

打開 Xshell 工具,連接到一臺 Linux 測試機(我的測試機操作系統(tǒng)為 CentOS 7.3),在測試機上新建 /srv/Worker 目錄:

  1. mkdir /srv/Worker 

使用 rz 命令將 linux.zip 復制到測試機,

然后在測試機上解壓 linux.zip 到 /srv/Worker 目錄:

  1. unzip linux.zip -d /srv/Worker 

為我們的應用程序分配可執(zhí)行權(quán)限,并運行:

  1. # 分配可執(zhí)行權(quán)限 
  2. chmod +x /srv/Worker/MyService 
  3. # 運行 
  4. /srv/Worker/MyService 

按下 Ctrl+C 關閉應用,等待關閉前必須完成的任務正常結(jié)束后,應用退出。輸入 ls /srv/Worker 命令回車,您會看到在該目錄下多了一個 Logs 目錄,日志文件輸出正常。

作為 Systemd Service 運行

§添加 Systemd Service 依賴

為了讓我們的 Worker 監(jiān)聽來自 Systemd 的啟動和停止信號,我們需要添加 Microsoft.Extensions.Hosting.Systemd NuGet 包:

  1. dotnet add package Microsoft.Extensions.Hosting.Systemd 

然后,我們需要修改 Program.cs 中的 CreateHostBuilder 方法,添加 UseSystemd 方法調(diào)用,將宿主(Host)生命周期設置為 Microsoft.Extensions.Hosting.Systemd.SystemdLifetime,以便應用程序可以接收啟動和停止信號,并配置控制臺輸出記錄為 systemd 格式。

  1. public static IHostBuilder CreateHostBuilder(string[] args) => 
  2.     Host.CreateDefaultBuilder(args) 
  3.         .UseSystemd() // Sets the host lifetime to Microsoft.Extensions.Hosting.Systemd.SystemdLifetime... 
  4.         .ConfigureServices((hostContext, services) => 
  5.         { 
  6.             services.AddHostedService<Worker>(); 
  7.         }) 
  8.         .UseSerilog(); //將 Serilog 設置為日志提供程序 

重新運行以下命令將程序發(fā)布到文件夾:

  1. dotnet publish -c Release -r linux-x64 -o c:\test\workerpub\linux 

然后重復前面的步驟,在 Xshell 中使用 rz 命令將應用程序復制到測試機,并為 /srv/Worker/MyService 文件分配可執(zhí)行權(quán)限。

§配置文件

接下來我們需要創(chuàng)建配置文件,將服務的有關信息告知 systemd,以便它知道如何運行此服務。為此,我們需要創(chuàng)建一個 .service 文件,我們將在注冊和運行此服務的 Linux 機器上使用該文件。

在我們的項目中創(chuàng)建一個名為 MyService.service 的服務單元配置文件,內(nèi)容如下:

  1. [Unit] 
  2. Description=Long running service/daemon created from .NET worker template 
  3.  
  4. [Service] 
  5. # The systemd service file must be configured with Type=notify to enable notifications. 
  6. Type=notify 
  7. # will set the Current Working Directory (CWD). Worker service will have issues without this setting 
  8. WorkingDirectory=/srv/Worker 
  9. # systemd will run this executable to start the service 
  10. ExecStart=/srv/Worker/MyService 
  11. to query logs using journalctl, set a logical name here   
  12. SyslogIdentifier=MyService 
  13.  
  14. # Use your username to keep things simple. 
  15. # If you pick a different user, make sure dotnet and all permissions are set correctly to run the app 
  16. To update permissions, use 'chown yourusername -R /srv/Worker' to take ownership of the folder and files, 
  17. #       Use 'chmod +x /srv/Worker/MyService' to allow execution of the executable file 
  18. User=yourusername 
  19.  
  20. # This environment variable is necessary when dotnet isn't loaded for the specified user
  21. To figure out this value, run 'env | grep DOTNET_ROOT' when dotnet has been loaded into your shell. 
  22. Environment=DOTNET_ROOT=/usr/share/dotnet/dotnet 
  23.  
  24. # This gives time to MyService to shutdown gracefully. 
  25. TimeoutStopSec=300 
  26.  
  27. [Install] 
  28. WantedBy=multi-user.target 

使用時應將 User=yourusername 項中的 yourusername 改為具體的 linux 系統(tǒng)的登錄名。

Systemd 期望所有的配置文件放置在 /etc/systemd/system/ 目錄下,我們打開此目錄,并使用 rz 命令將服務配置文件復制到 /etc/systemd/system/MyService.service,

  1. cd /etc/systemd/system/ 
  2.  
  3. rz 

然后執(zhí)行以下命令讓 systemd 重新加載配置文件:

  1. systemctl daemon-reload 

§管理服務

之后,可以運行以下命令來檢查 systemd 是否識別了我們的服務:

  1. systemctl status MyService 

結(jié)果顯示如下:

這表明我們注冊的新服務被禁用了,可以通過運行以下命令來啟動它:

  1. systemctl start MyService 

重新運行 systemctl status MyService 命令查看服務狀態(tài),顯示如下:

停止服務可以運行以下命令:

  1. systemctl stop MyService 

如果您希望該服務在開機時自動啟動,那么可以運行以下命令:

  1. systemctl enable MyService 

禁用開機自動啟動,可以運行以下命令:

  1. systemctl disable MyService 

查看服務是否開機自動啟動,可以運行以下命令:

  1. systemctl is-enabled MyService 

§Systemd 服務日志

命令 journalctl 可以用來查看 systemd 收集的日志。systemd-journald 服務負責 systemd 的日志收集,它從內(nèi)核、systemd 服務和其他源檢索信息。日志的集中收集,有利于對其進行檢索查詢。journal 中的日志記錄是結(jié)構(gòu)化和有索引的,因此 journalctl 能夠以各種有用的格式來展現(xiàn)日志信息。

我們可以使用 journalctl 命令來驗證應用程序是否成功運行,因為該命令可以跟蹤顯示應用程序的輸出信息:

  1. journalctl -u MyService -f 

按 Ctrl-C 退出命令。

當我們在程序中調(diào)用 UseSystemd 方法時,會將 Extensions.LogLevel 映射到 Syslog 日志級別:

LogLevel Syslog level systemd name
Trace/Debug 7 debug
Information 6 info
Warning 4 warning
Error 3 err
Critical 2 crit

所以,我們可以使用 journalctl 命令的優(yōu)先級標記(priority-flag)-p 來根據(jù)日志級別過濾應用程序的輸出信息:

  1. journalctl -p 4 -u MyService -f 

總結(jié)

在本文中,我通過一個實例詳細介紹了如何將 .NET Worker Service 部署到 Linux 系統(tǒng)作為 Systemd Service 運行,并說明了如何使用 systemctl 命令來管理服務,如何使用 journalctl 命令查看 Systemd 服務日志。

當我們向 HostBuilder 添加了 .UseSystemd() 方法調(diào)用后,編譯出的程序,既可以作為 Linux 控制臺應用運行,也可以作為 Systemd Service 運行。

您可以從 GitHub 下載本文中的源碼。

參考:

https://swimburger.net/blog/dotnet/how-to-run-a-dotnet-core-console-app-as-a-service-using-systemd-on-linux

https://devblogs.microsoft.com/dotnet/net-core-and-systemd/

https://docs.microsoft.com/zh-cn/dotnet/core/tools/dotnet-publish

https://www.freedesktop.org/wiki/Software/systemd/

https://systemd.io/

https://www.linode.com/docs/guides/how-to-use-journalctl/

https://github.com/ITTranslate/WorkerServiceAsWindowsService 前篇文章源碼

 

https://github.com/ITTranslate/WorkerServiceAsSystemdService 本文源碼

 

責任編輯:武曉燕 來源: 技術譯站
相關推薦

2022-04-26 09:16:07

PWA線程生命周期

2023-10-31 15:08:56

WorkBoxServiceWorker

2009-03-25 09:44:46

IBM云計算智慧地球

2021-03-03 08:18:54

Service組件

2009-11-27 13:45:02

Tomcat for

2010-12-24 09:36:15

部署Silverlig

2009-10-13 10:21:58

VB.NET實現(xiàn)Web

2009-10-13 11:22:46

VB.NET調(diào)用Web

2009-10-29 09:06:26

VB.NET Web

2009-10-13 09:33:49

VB.NET Web

2009-07-27 17:32:39

Web ServiceASP.NET

2009-07-27 09:07:04

Profile SerASP.NET AJA

2009-10-29 11:26:28

VB.NET調(diào)用Web

2017-10-18 15:28:08

Service WorPWA離線

2025-07-31 06:05:00

pythonsystemd

2010-03-04 10:50:45

windows ser

2009-07-02 16:36:58

Python程序

2021-09-11 15:36:08

AWS云服務Amazon

2009-12-30 15:50:18

ADO.NET Dat

2021-06-02 08:07:59

LinuxService應用
點贊
收藏

51CTO技術棧公眾號

欧美独立站高清久久| 欧美三级电影网址| 久久久久综合网| 成人久久一区二区三区| 国产亚洲小视频| 九九在线高清精品视频| 欧美精品xxxxbbbb| 久久久亚洲精品无码| 一级毛片视频在线| 97se亚洲国产综合自在线| 国产精品久久久久不卡| 日韩成人高清视频| 国产精品久久天天影视| 日韩精品亚洲视频| 日批视频在线看| 88xx成人永久免费观看| 夜夜精品浪潮av一区二区三区| 欧美大陆一区二区| 亚洲欧美另类日韩| 激情欧美日韩一区二区| 日本精品免费一区二区三区| 劲爆欧美第一页| 91中文字幕精品永久在线| 日韩成人小视频| 中国特级黄色片| 伊人久久精品| 欧美伊人久久久久久久久影院 | 日韩三级在线观看| 91视频免费版污| 日本午夜大片a在线观看| 亚洲欧美电影一区二区| 亚洲欧洲日夜超级视频| 久青青在线观看视频国产| 成人黄色小视频在线观看| 97超碰在线播放| 国产精品久久久久久免费| 日韩精品福利网| 日本精品免费一区二区三区| 97免费在线观看视频| 国产一区美女| 久久精品电影一区二区| 女人十八毛片嫩草av| 校园春色另类视频| 精品调教chinesegay| 日韩精品人妻中文字幕有码| 综合伊人久久| 欧美精品一区二区三区四区 | 另类春色校园亚洲| 精品国产亚洲一区二区三区在线观看| 久久久福利影院| 国产精品久一| 欧美一级视频精品观看| www.偷拍.com| 日韩免费成人| 精品第一国产综合精品aⅴ| 国产精品91av| caoporn成人免费视频在线| 日韩欧美综合在线| 国产精品熟妇一区二区三区四区 | 亚洲国产欧美日韩精品| 成熟妇人a片免费看网站| 风间由美性色一区二区三区四区 | 日本在线观看www| 国产精品久久久久久一区二区三区 | 国产精品国产av| 国产乱码一区二区三区| 成人欧美一区二区| 天堂网2014av| 国产欧美精品在线观看| 一区二区精品在线观看| caoporn97在线视频| 一区二区三区免费看视频| 国产一级爱c视频| 日韩网站中文字幕| 欧美精品自拍偷拍| yjizz视频| 国产欧美一区二区精品久久久| 中文字幕无线精品亚洲乱码一区 | 欧美一区二区在线| 免费大片在线观看www| 亚洲影院在线观看| 国产91对白刺激露脸在线观看| 亚洲精品粉嫩美女一区| 欧美一区二区三区视频在线观看| 久久久老熟女一区二区三区91| 伊甸园亚洲一区| 久久综合色88| 日本特级黄色片| 老司机免费视频一区二区| 成人在线免费网站| 久久伊伊香蕉| 一区二区三区四区乱视频| 亚洲人成色77777| 日韩一区网站| 亚洲人成网站免费播放| 欧美一区二区三区爽爽爽| 国产精品日韩久久久| 成人黄色大片在线免费观看| 天天色综合av| 亚洲精品免费看| 精品久久久久久久无码| 国产精东传媒成人av电影| 这里只有视频精品| 日本五十路女优| 国产一区二区三区免费看| 农村寡妇一区二区三区| 欧洲一区二区三区| 欧美无人高清视频在线观看| 色哟哟视频在线| 99欧美视频| 日韩美女福利视频| 亚洲女同志亚洲女同女播放| 国产精品理论片| 农村妇女精品一二区| 9l视频自拍九色9l视频成人| 中文字幕日韩在线视频| 国产成人精品777777| 国产精品小仙女| 亚洲一区综合| 日本欧美不卡| 亚洲欧美一区二区三区情侣bbw| 538任你躁在线精品视频网站| 日韩成人dvd| 久久精品人成| av资源在线看片| 日韩亚洲欧美在线| 老司机成人免费视频| 蜜桃传媒麻豆第一区在线观看| 久久亚洲精品欧美| av在线私库| 精品国产乱码久久久久久老虎| 亚洲国产123| 久久福利视频一区二区| 西游记1978| 日本肉肉一区 | 亚洲资源一区| 在线不卡免费欧美| 操她视频在线观看| 蜜桃av一区二区在线观看| 日本视频精品一区| 国产日韩另类视频一区| 亚洲色图15p| 69亚洲精品久久久蜜桃小说| 26uuu精品一区二区在线观看| 我的公把我弄高潮了视频| 一区二区三区四区视频免费观看| 欧美美最猛性xxxxxx| www.xxxx国产| 亚洲国产日韩av| 艳妇乳肉亭妇荡乳av| 国产精品毛片一区二区三区| 久久www免费人成精品| 中文不卡1区2区3区| 亚洲欧美日韩综合| 最好看的日本字幕mv视频大全| 国产欧美一区二区三区沐欲| 波多结衣在线观看| 欧美岛国激情| 96国产粉嫩美女| 国产第一页在线| 亚洲精品色婷婷福利天堂| 黄色污污网站在线观看| 国产精品视频一二三| 亚洲精品午夜在线观看| 91成人看片| 国产日韩欧美一区二区| 午夜欧美巨大性欧美巨大| 中文字幕一精品亚洲无线一区| 一级全黄裸体免费视频| 一区二区三区四区不卡在线 | 韩国精品久久久999| 色婷婷av一区二区三| 在线影视一区二区三区| av片在线免费看| 成人午夜电影久久影院| 成人免费观看毛片| 911久久香蕉国产线看观看| 国产欧美日韩视频一区二区三区| 成人影院大全| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲第一成年人网站| 富二代精品短视频| 999福利视频| 成人a免费在线看| 天堂网在线免费观看| 激情视频一区| 性欧美精品一区二区三区在线播放| 国产日韩一区二区三免费高清| 久久人人爽人人| 爱爱爱免费视频在线观看| 日韩亚洲欧美一区| 午夜精品一区二| 一区二区免费看| 国产探花视频在线播放| 国产91精品一区二区麻豆网站| 国产熟女高潮视频| 国产在线欧美| 亚洲一区二区三区免费看| 麻豆精品99| 3d动漫啪啪精品一区二区免费 | 亚洲激情啪啪| 欧美wwwsss9999| 91欧美日韩一区| 欧亚一区二区| 欧美专区日韩视频| 任你弄在线视频免费观看| 一区二区欧美在线| 亚欧洲精品视频| 日韩区在线观看| 国产精品久久久久久久免费看| 一本一本大道香蕉久在线精品| 激情五月婷婷小说| 亚洲欧美综合另类在线卡通| www在线观看免费视频| 国产宾馆实践打屁股91| 九九精品久久久| 国产91porn| 婷婷精品进入| 视频一区视频二区视频三区高| 久久午夜影院| 国产成人精品免费视频大全最热 | 亚洲成人网av| aaa一区二区| 欧美一区二区视频免费观看| 中文字幕视频在线播放| 色狠狠色噜噜噜综合网| 日韩久久久久久久久| 亚洲黄色免费电影| 在线看的片片片免费| 亚洲同性gay激情无套| 992在线观看| 亚洲欧洲av在线| 二区三区四区视频| 中文字幕一区二区三区四区| 日韩精品电影一区二区三区| 中文字幕欧美区| 国产综合精品在线| 国产女主播一区| 中文字幕成人动漫| 久久精品夜夜夜夜久久| 日韩在线免费观看av| 国产亚洲一区二区三区四区| 亚洲欧洲久久久| 国产欧美精品一区| 欧美肥妇bbwbbw| 亚洲人成网站在线| 欧美片一区二区| 亚洲一二三四在线| 日韩和一区二区| 欧美性猛交xxxxx免费看| 国产高清中文字幕| 在线观看av一区二区| 在线免费观看一级片| 欧美日产国产精品| a级片在线播放| 精品sm捆绑视频| 你懂的在线看| 色婷婷**av毛片一区| 激情成人四房播| 欧美激情精品久久久久| 久久久男人天堂| 国产精品1区2区在线观看| 欧美日韩破处视频| 粉嫩精品一区二区三区在线观看| 国产精品玖玖玖在线资源| 免费久久99精品国产自| 成人在线丰满少妇av| 亚洲第一综合网站| 亚洲精品看片| 三年中国国语在线播放免费| 激情综合五月天| 国产性猛交96| 久久久高清一区二区三区| 蜜桃av免费在线观看| 亚洲精品成人a在线观看| 男女视频免费看| 欧美三级在线播放| 国产成人久久精品77777综合| 亚洲成人中文字幕| melody高清在线观看| 久久不射电影网| 五月天国产在线| 91亚洲精品久久久久久久久久久久| 亚洲精选av| 日韩精品av一区二区三区| 亚洲不卡av不卡一区二区| 久久成人免费观看| 久久99精品久久久| 中国xxxx性xxxx产国| 欧美高清一级片在线观看| 久久综合加勒比| 在线观看国产精品网站| 亚洲xxx在线| 中文字幕在线观看亚洲| 国产盗摄——sm在线视频| 成人免费在线视频网站| 中文有码一区| 欧美亚洲色图视频| 久久99久国产精品黄毛片色诱| 在线观看国产三级| 一区二区三区.www| 中文字幕资源网| 亚洲精品一区二区网址| 日本h片在线| 91精品久久久久久久久中文字幕| 欧美日韩精品一区二区三区在线观看| 一区二区三区四区五区精品 | 色播五月激情五月| 99精品视频一区二区三区| 男女做暖暖视频| 欧美午夜电影网| 青青草免费在线| 韩国视频理论视频久久| 国产亚洲字幕| 亚洲人久久久| 日av在线不卡| 丰满少妇高潮一区二区| 亚洲成av人在线观看| 国产哺乳奶水91在线播放| 中文字幕日韩在线播放| 韩国三级一区| 农村寡妇一区二区三区| 亚洲一区区二区| 亚洲精品乱码久久| 午夜成人在线视频| 不卡视频在线播放| 久久97久久97精品免视看| 国产精久久一区二区| 中文字幕欧美日韩一区二区| 日韩—二三区免费观看av| 国产小视频自拍| 在线观看精品一区| av电影在线观看网址| 国产精品一二区| 91日韩视频| 日韩av一卡二卡三卡| 综合精品久久久| 99热这里只有精品1| 美女国内精品自产拍在线播放| 成人豆花视频| 小泽玛利亚av在线| 国产凹凸在线观看一区二区| 国产这里有精品| 精品日韩在线观看| 免费电影网站在线视频观看福利| 97netav| 精品动漫3d一区二区三区免费| 伦理片一区二区| 欧美日韩黄色大片| 国产高清视频免费最新在线| 国产精品福利观看| 色琪琪久久se色| 天堂在线一区二区三区| 亚洲免费观看在线视频| www精品国产| 97在线观看免费| 久久av免费看| 日韩av片专区| 亚洲最大的成人av| 婷婷丁香花五月天| 国产精品都在这里| 亚洲精品成人无限看| 国产性猛交96| 在线国产电影不卡| 香蕉视频在线看| 成人影片在线播放| 久久综合狠狠| 黑鬼狂亚洲人videos| 亚洲激情在线观看视频免费| 在线天堂新版最新版在线8| 亚洲 国产 欧美一区| 国产精品一区免费视频| 久久久精品免费看| 国产亚洲精品一区二区| 日韩视频一二区| 日韩手机在线观看视频| 亚洲视频狠狠干| 四虎永久在线观看| 国产美女久久精品香蕉69| 影音先锋在线一区| 国产精久久一区二区三区| 欧美一级二级在线观看| 韩国成人二区| 男女h黄动漫啪啪无遮挡软件| 99久久er热在这里只有精品15 | 精品小视频在线观看| 亚洲美女www午夜| 国产精品2区| 99视频免费播放| 亚洲成人免费影院| 日本中文字幕在线看| 精品中文字幕人| 国产呦萝稀缺另类资源| 中文字幕精品三级久久久| 久久人人爽亚洲精品天堂| 窝窝社区一区二区| 国产黄色一区二区三区| 日本乱人伦aⅴ精品| 青青草视频在线免费直播| 亚洲精品无人区|