精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美自拍偷拍一区| 久久精品视频一区二区| 蜜臀久久99精品久久久无需会员| 师生出轨h灌满了1v1| 国产精品电影| 国产精品久久久久久久久果冻传媒| 亚洲a∨日韩av高清在线观看| 国产一级二级三级视频| 羞羞色国产精品网站| 欧美精品777| 国产精品自拍片| 香蕉视频在线看| 99精品国产一区二区三区不卡 | 蜜桃av在线| 日韩一区中文字幕| 免费试看一区| 免费a级片在线观看| 青青草视频一区| 97免费视频在线| 国产三级国产精品国产国在线观看| 偷拍一区二区| 精品免费国产一区二区三区四区| 毛葺葺老太做受视频| 国产精品69xx| 亚洲视频中文字幕| 日韩午夜视频在线观看| 免费国产黄色片| 国产一区二区成人久久免费影院| 国产成人极品视频| 香蕉免费毛片视频| 欧美激情亚洲| 麻豆乱码国产一区二区三区| 三区四区在线观看| 日韩美脚连裤袜丝袜在线| 欧美v亚洲v综合ⅴ国产v| 国产福利在线免费| 97欧美成人| 91黄色免费网站| 一本大道熟女人妻中文字幕在线 | 亚洲成av人片在www色猫咪| 制服诱惑一区| 91最新在线| 国产精品人人做人人爽人人添| 免费亚洲一区二区| 青青青草网站免费视频在线观看| 成人aa视频在线观看| 国产乱码精品一区二区三区日韩精品 | 国产色a在线| 91蝌蚪porny| 极品校花啪啪激情久久| 免费观看黄色一级视频| 不卡一卡二卡三乱码免费网站| 97se亚洲综合在线| 精品国产伦一区二区三| 国产成人综合在线播放| 国产精品国产三级国产专区53| 国产成人三级一区二区在线观看一| 久久99日本精品| 成人在线中文字幕| 不卡视频在线播放| 成人视屏免费看| 玖玖玖精品中文字幕| 亚洲欧美日韩动漫| 久久精品一区二区| 亚洲三区在线观看| yellow91字幕网在线| 亚洲愉拍自拍另类高清精品| 久久99久久久久久| 亚洲天堂电影| 欧美色综合网站| 涩涩网站在线看| 一区中文字幕| 日韩av在线一区二区| 午夜在线观看一区| 中文av一区| 91超碰中文字幕久久精品| 欧美a视频在线观看| 免费视频一区二区| 97se亚洲综合| 九色在线播放| 亚洲人成影院在线观看| 成年人看的毛片| 欧美momandson| 欧美肥妇毛茸茸| 国产激情第一页| 欧美一二区在线观看| 欧美日韩高清区| 极品国产91在线网站| 国产一区不卡精品| 久99久视频| 日本三级视频在线播放| 午夜精品福利一区二区三区av | 国产99一区视频免费| 久久免费看av| 黄色网页网址在线免费| 调教+趴+乳夹+国产+精品| 九一精品在线观看| www.爱久久| 日韩一中文字幕| 日韩精品一区二区在线播放| 美国毛片一区二区| 精品亚洲一区二区三区四区五区高| 番号集在线观看| 亚洲午夜电影在线| 欧美特黄aaa| 色先锋久久影院av| 欧美黄色www| 一二三四区在线| 91麻豆免费看| 97超碰国产精品| 日本成人在线网站| 亚洲毛片在线观看.| avove在线播放| 天堂av在线一区| 国产一区不卡在线观看| 国产激情在线观看| 欧美伊人精品成人久久综合97| 香蕉视频污视频| 午夜国产一区二区| 国产精品成人v| 香蕉av一区二区三区| 一区二区三区欧美在线观看| 国产精品人人爽人人爽| 色婷婷av一区二区三区丝袜美腿| 欧美疯狂xxxx大交乱88av| 亚洲天堂手机在线| 久久精品视频一区| 黄色a级片免费| 女一区二区三区| 久久久视频精品| 精品国产av一区二区| 亚洲色图丝袜美腿| 亚洲最大天堂网| 成人久久电影| 国产精品视频区| 国产毛片在线看| 色美美综合视频| 久久精品国产亚洲av麻豆| 亚洲激情影院| 国产在线一区二区三区播放| 国产丝袜在线观看视频| 精品久久久久一区| 久久香蕉精品视频| 国产99久久精品| a级黄色小视频| 欧美18免费视频| 7777免费精品视频| 日韩在线免费播放| 色噜噜狠狠一区二区三区果冻| 精品人妻互换一区二区三区| 久久黄色网页| 日韩中文字幕一区二区| 国产一区一一区高清不卡| 国产亚洲精品一区二区| 日韩欧美国产另类| 中文一区二区完整视频在线观看| 99视频在线视频| 国产精品成人一区二区不卡| 成人网页在线免费观看| 亚洲资源一区| 亚洲成人网在线| 日韩 国产 欧美| 中文在线资源观看网站视频免费不卡| 手机视频在线观看| 亚洲欧洲美洲一区二区三区| www.成人av.com| 美女91在线看| 综合网中文字幕| 国产视频一区二区三区四区五区| 一区二区三区日本| 中文字幕在线观看网址| 日韩不卡手机在线v区| 一区二区冒白浆视频| 久久精品一级| 91精品国产高清| av资源网在线观看| 欧美一二三在线| 久草手机在线观看| 国产精品午夜久久| 国模大尺度视频| 羞羞答答国产精品www一本| 色姑娘综合网| 亚洲成人五区| 国产精彩精品视频| 直接在线观看的三级网址| 亚洲精品国精品久久99热一| 中文字幕av网站| 亚洲成va人在线观看| 亚洲黄色免费视频| 国产成人av在线影院| 日韩中文字幕免费在线 | 久久久久免费看黄a片app| 国产探花在线精品| 春色成人在线视频| 色综合天天色| 性欧美xxxx视频在线观看| 午夜视频在线看| 日韩高清av一区二区三区| 国产一区二区麻豆| 精品日本高清在线播放| 糖心vlog免费在线观看| 91免费观看视频在线| 亚洲网中文字幕| 久久久久久久波多野高潮日日| 日本xxxxx18| 精品久久电影| 久久99精品国产一区二区三区 | 久久伊人一区二区| 奇米一区二区| 国产伊人精品在线| 国产精品亚洲一区二区三区在线观看| 欧美老少做受xxxx高潮| 午夜视频在线观看网站| 亚洲欧美激情在线视频| 少妇人妻偷人精品一区二区| 制服丝袜亚洲色图| 懂色av中文字幕| 婷婷亚洲久悠悠色悠在线播放| 国产免费一区二区三区四区| 国产欧美日韩在线观看| 好吊一区二区三区视频| 国产成人99久久亚洲综合精品| 麻豆一区二区三区视频| 美女久久一区| 欧美 日韩 国产在线观看| 亚洲性视频h| 欧美a级免费视频| 一区二区三区中文| 亚洲欧美日韩国产成人综合一二三区| 免费久久精品| 裸模一区二区三区免费| 久久香蕉精品香蕉| 国产精品美女久久久久av福利| 日韩成人视屏| 亚洲自拍欧美色图| 国产一区 二区| 91精品在线观| 国产一区一区| 97在线资源站| 亚洲视频国产| 国产精品久久精品国产| 中文字幕一区二区三区四区久久| 91九色视频在线观看| 免费一级欧美片在线观看网站| 成人精品一区二区三区| 国产精品高清一区二区| 亚洲一区二区久久久久久| 日韩精品一区二区三区中文在线| 亚洲一区二区三区四区在线播放| 国产高清视频一区二区| 91视频8mav| 婷婷视频一区二区三区| 不卡视频一区| 国产精品xxx在线观看| 国产中文一区二区| 欧美精美视频| 亚洲三区在线观看| 中文乱码免费一区二区三区下载| 美女在线免费视频| 欧美网站在线| 又粗又黑又大的吊av| 日韩综合在线视频| 不用播放器的免费av| 国产成人精品免费一区二区| 精品少妇人妻av一区二区三区| 91麻豆福利精品推荐| 人与嘼交av免费| 亚洲免费资源在线播放| 亚洲国产综合久久| 日本韩国一区二区三区视频| 91肉色超薄丝袜脚交一区二区| 欧美一区二区高清| 人妻少妇精品无码专区| 亚洲人成亚洲人成在线观看| 午夜视频在线看| 国内免费精品永久在线视频| 久久sese| 亚洲一区二区三区成人在线视频精品| 国产乱论精品| 性欧美大战久久久久久久免费观看| 91精品婷婷色在线观看| 色欲色香天天天综合网www| 久久一区激情| 人妻 丝袜美腿 中文字幕| 久久久99精品久久| 欧美黄片一区二区三区| 色综合久久久久综合99| 国产男男gay体育生网站| 日韩禁在线播放| 国产网站在线免费观看| 欧美一区二区三区四区在线| 伊人国产精品| 免费成人在线观看av| 亚洲一区二区三区| 国产综合免费视频| 国产成a人无v码亚洲福利| 无码一区二区三区在线| 一二三四区精品视频| 波多野结衣一区二区三区四区| 日韩欧美在线网站| 成人高清免费观看mv| 久久久久久亚洲| 久久国内精品| 蜜桃导航-精品导航| 国产精品vip| 亚洲免费黄色录像| 久久麻豆一区二区| 国产一级一级片| 欧美人牲a欧美精品| 精品福利视频导航大全| 久久久久女教师免费一区| 伊人久久一区| 无码免费一区二区三区免费播放| 一本综合精品| 国产51自产区| 一二三四社区欧美黄| 国产深喉视频一区二区| 中文字幕国产亚洲2019| 91精品论坛| 精品国产一区二区三区麻豆免费观看完整版| 日韩欧美一区二区三区在线视频| 国产精品宾馆在线精品酒店| 成人性视频网站| 麻豆精品一区二区三区视频| 欧美日韩精品免费观看视频| 国产在线视频网址| 性欧美亚洲xxxx乳在线观看| 99香蕉久久| 欧美精品卡一卡二| 国产91高潮流白浆在线麻豆| 国产午夜手机精彩视频| 欧美精选在线播放| 国产福利第一视频在线播放| 日本精品视频在线播放| 色爱av综合网| 日本www在线播放| 99久久国产综合色|国产精品| 精品无码黑人又粗又大又长| 欧美成人r级一区二区三区| av毛片在线播放| 91久久爱成人| 亚洲香蕉网站| 欧美无人区码suv| 欧美性videos高清精品| 色资源在线观看| 欧美在线激情网| 精品久久一区| 日本超碰在线观看| 亚洲色欲色欲www在线观看| 国产av无码专区亚洲a∨毛片| 久久躁狠狠躁夜夜爽| 久久九九精品视频| 亚洲 欧美 综合 另类 中字| 不卡视频免费播放| 六月丁香婷婷综合| 亚洲网站在线看| 亚洲成人精品综合在线| 青青草影院在线观看| 国产91精品露脸国语对白| 国产欧美日韩另类| 亚洲人成电影网站色…| 欧美成人黄色| 特大黑人娇小亚洲女mp4| 成人免费的视频| www.国产一区二区| 最近2019中文字幕大全第二页| 99久久999| 日韩中字在线观看| 国产日韩欧美激情| 国产内射老熟女aaaa∵| 国内精品久久久久| 精品国产99| 伊人av在线播放| 日韩欧美在线免费观看| 欧美日本一道| 国产精品乱子乱xxxx| 久久久久久久尹人综合网亚洲| 日本精品久久久久中文| 日韩午夜在线观看视频| 波多野结衣亚洲| 26uuu成人| 26uuu精品一区二区| 一级片视频播放| 高清一区二区三区四区五区 | 国产又粗又猛又爽又黄的网站| av在线综合网| 91久久国语露脸精品国产高跟| 欧美日韩第一页| 欧美美女一区| 久久久久久久穴| 欧美吞精做爰啪啪高潮| 黄色在线看片| 手机看片福利永久国产日韩| 东方aⅴ免费观看久久av| 精品无码一区二区三区的天堂| 不卡伊人av在线播放| 国产亚洲欧美日韩在线观看一区二区 | 亚洲综合视频| 狠狠操精品视频| 亚洲成人免费视|