日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

ASP.NET Core Linux下为 dotnet 创建守护进程(必备知识)

發(fā)布時間:2023/12/4 linux 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET Core Linux下为 dotnet 创建守护进程(必备知识) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

在上篇文章中《ASP.NET Core Docker部署》中介紹了如何在 Docker 容器中部署我們的 asp.net core 應(yīng)用程序,本篇主要是怎么樣為我們在 Linux 或者 macOs 中部署的 dotnet 程序創(chuàng)建一個守護進程,來保證我們的程序在異常或者是電腦重啟的時候仍然能夠正常訪問。

如果你以后用準(zhǔn)備使用 asp.net core來開發(fā)項目的話,程序并且部署到 Linux 上的話,那么此篇文章你值得收藏。
如果你覺得對你有幫助的話,不妨點個【推薦】。

目錄

  • 什么是守護進程

  • Supervisor 介紹

  • Supervisor 安裝

  • Supervisor 配置,常用命令

  • Supervisor UI管理臺

什么是守護進程

在linux或者unix操作系統(tǒng)中,守護進程(Daemon)是一種運行在后臺的特殊進程,它獨立于控制終端并且周期性的執(zhí)行某種任務(wù)或等待處理某些發(fā)生的事件。由于在linux中,每個系統(tǒng)與用戶進行交流的界面稱為終端,每一個從此終端開始運行的進程都會依附于這個終端,這個終端被稱為這些進程的控制終端,當(dāng)控制終端被關(guān)閉的時候,相應(yīng)的進程都會自動關(guān)閉。但是守護進程卻能突破這種限制,它脫離于終端并且在后臺運行,并且它脫離終端的目的是為了避免進程在運行的過程中的信息在任何終端中顯示并且進程也不會被任何終端所產(chǎn)生的終端信息所打斷。它從被執(zhí)行的時候開始運轉(zhuǎn),直到整個系統(tǒng)關(guān)閉才退出。

此處的創(chuàng)建守護進程,是指發(fā)布在Linux上 asp.net core 程序的dotnet xxx.dll命令的宿主進程創(chuàng)建一個守護進程。

在 Linux 上有很多可以管理進程的工具,我們使用 Supervisor 來做這個事情。
原因有兩點:
1、它是微軟官方文檔推薦的,降低學(xué)習(xí)成本。
2、它并不一定是最好的,但一定是文檔最全的。

Supervisor 介紹

Supervisor是采用 Python(2.4+) 開發(fā)的,它是一個允許用戶管理 基于 Unix 系統(tǒng)進程的 Client/Server 系統(tǒng),提供了大量功能來實現(xiàn)對進程的管理。

官方文檔:http://supervisord.org/

Supervisor 安裝

在 masOS 中直接使用brew工具進行安裝即可:
brew install supervisor

在 linux 中使用以下命令進行安裝:

ubuntu
sudo apt-get install supervisor

centos
yum install supervisor

python
pip install supervosor
easy_install supervisor

安裝完成之后:

mac:~ yangxiaodong$ brew install supervisorWarning: supervisor-3.2.1 already installed

Supervisor 配置,常用命令

安裝完成之后,在?/ect/supervisor/confg.d/?目錄下新建一個配置文件(touch HelloWebApp.conf),取名為?HelloWebApp.conf

打開HelloWebApp.conf (vim HelloWebApp.conf),寫入如下命令:

[program:HelloWebApp]command=dotnet HelloWebApp.dll ?#要執(zhí)行的命令directory=/home/yxd/Workspace/publish #命令執(zhí)行的目錄environment=ASPNETCORE__ENVIRONMENT=Production #環(huán)境變量user=www-data ?#進程執(zhí)行的用戶身份stopsignal=INTautostart=true #是否自動啟動autorestart=true #是否自動重啟startsecs=1 #自動重啟間隔stderr_logfile=/var/log/HelloWebApp.err.log #標(biāo)準(zhǔn)錯誤日志stdout_logfile=/var/log/HelloWebApp.out.log #標(biāo)準(zhǔn)輸出日志

配置好以后 (:wq保存退出),需要重新加載一下配置

sudo supervisorctl shutdown && sudo supervisord -c /etc/supervisor/supervisord.conf

或者你可以直接重啟 Supervisor:

sudo service supervisor stopsudo service supervisor start

如果啟動的時候報錯,可以打開位于/etc/log/supervisor/supervisord.log文件來查看具體的日志。

其中dotnet 命令輸出的日志文件分別為位于

/var/log/HelloWebApp.err.log/var/log/HelloWebApp.out.log

在這些文件里面你可以查看程序中的異常信息或者是運行信息。

打開瀏覽器,輸入?http://localhost:5000?發(fā)現(xiàn)已經(jīng)可以瀏覽了。

Supervisor 常用命令

supervisorctl shutdown #關(guān)閉所有任務(wù)supervisorctl stop|start program_namesupervisorctl status #查看所有任務(wù)狀態(tài)

Supervisor UI 管理臺

Supervisor 默認給我們提供了一個圖形界面來供我們管理進程和任務(wù),在 macOS 中默認配置的有,但是在 Linux 中我們需要手動開啟一下。

打開位于/etc/supervisor/supervisord.conf文件,添加inet_http_server 節(jié)點

然后就可以通過界面來查看運行的進程了:

測試一下

最后,我們測試一下是否會自動重啟,開機自動運行?

1、進程管理中干掉dot net ,發(fā)現(xiàn)可以重新啟動。以下是日志:

2016-07-09 12:24:18,626 INFO spawned: 'HelloWebApp' with pid 1774
2016-07-09 12:24:19,766 INFO success: HelloWebApp entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2016-07-09 12:27:43,208 INFO exited: HelloWebApp (exit status 0; expected)
2016-07-09 12:27:44,223 INFO spawned: 'HelloWebApp' with pid 3687
2016-07-09 12:27:45,243 INFO success: HelloWebApp entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)

2、重啟機器,發(fā)現(xiàn)可以自動運行。

原文地址:http://www.cnblogs.com/savorboard/p/dotnetcore-supervisor.html


.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關(guān)注

總結(jié)

以上是生活随笔為你收集整理的ASP.NET Core Linux下为 dotnet 创建守护进程(必备知识)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。