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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

supervisor 守护多个进程_supervisor管理守护进程

發布時間:2023/12/31 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 supervisor 守护多个进程_supervisor管理守护进程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在Linux或者unix操作系統中,守護進程(Daemon)是一種運行在后臺的特殊進程,它獨立于控制終端并且周期性的執行某種任務或等待處理某些發生的事件。

由于在linux中,每個系統與用戶進行交流的界面稱為終端,每一個從此終端開始運行的進程都會依附于這個終端,這個終端被稱為這些進程的控制終端,當控制終端被關閉的時候,相應的進程都會自動關閉。但是守護進程卻能突破這種限制,它脫離于終端并且在后臺運行,并且它脫離終端的目的是為了避免進程在運行的過程中的信息在任何終端中顯示并且進程也不會被任何終端所產生的終端信息所打斷。它從被執行的時候開始運轉,直到整個系統關閉才退出。

此處的創建守護進程,是指發布在Linux上 asp.NET?core 程序的dotnet xxx.dll命令的宿主進程創建一個守護進程。

Supervisor(http://supervisord.org/)是用Python開發的一個client/server服務,是Linux/Unix系統下的一個進程管理工具,不支持Windows系統。它可以很方便的監聽、啟動、停止、重啟一個或多個進程。用Supervisor管理的進程,當一個進程意外被殺死,supervisort監聽到進程死后,會自動將它重新拉起,很方便的做到進程自動恢復的功能,不再需要自己寫shell腳本來控制。

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

目前存在三個問題

問題1:ASP.net?Core應用程序運行在shell之中,如果關閉shell則會發現ASP.Net?Core應用被關閉,從而導致應用無法訪問,這種情況當然是我們不想遇到的,而且生產環境對這種情況是零容忍的。

問題2:如果ASP.NET Core進程意外終止那么需要人為連進shell進行再次啟動,往往這種操作都不夠及時。

問題3:如果服務器宕機或需要重啟我們則還是需要連入shell進行啟動。

為了解決這個問題,我們需要有一個程序來監聽ASP.NET Core 應用程序的狀況。在應用程序停止運行的時候立即重新啟動。

操作如下:

1、? 安裝Supervisor

執行以下命令:yum install python-setuptools

easy_install supervisor

或者如果easy_install不好使就從官方下載:wget?https://pypi.python.org/packages/80/37/964c0d53cbd328796b1aeb7abea4c0f7b0e8c7197ea9b0b9967b7d004def/supervisor-3.3.1.tar.gz

然后通過python安裝:

#?tar?zxf?supervisor-3.3.1.tar.gz

#?cd?supervisor

#?python?setup.py?install

如果報錯可能:提示setuptools-0.6c11.tar沒有安裝,下載https://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz

tar zxf setuptools-0.6c11.tar.gz

cd setuptools-0.6c11/

python setup.py build

python setup.py? install

提示下載錯誤,需meld3>0.6.5下載?http://dl.fedoraproject.org/pub/epel/7/x86_64/p/python-meld3-0.6.10-1.el7.x86_64.rpm

安裝 rpm -ivh?python-meld3-0.6.10-1.el7.x86_64.rpm

如下提示,安裝完成:

2、配置Supervisor

a.創建文件夾和配置文件

mkdir /etc/supervisor

echo_supervisord_conf > /etc/supervisor/supervisord.conf

b.修改/etc/supervisor/supervisord.conf文件內容

在文件結尾[include]節點處

把;files = relative/directory/*.ini改為files = conf.d/*.conf

保存并退出

c.執行supervisorctl reload命令使配置文件生效。

d.在/etc/supervisor/下創建conf.d文件夾,及ProjectName.conf(以項目名稱命名的)

e.打開ProjectName.conf文件,添加內容如下:

[program: ProjectName]

command=dotnet ProjectName.dll ; 運行程序的命令

directory=/root/Publishing/PublishOutput/ ; 命令執行的目錄

autorestart=true ; 程序意外退出是否自動重啟

autostart=true ; 是否自動啟動

stderr_logfile=/var/log/ProjectName.err.log ; 錯誤日志文件

stdout_logfile=/var/log/ProjectName.out.log ; 輸出日志文件

environment=ASPNETCORE_ENVIRONMENT=Production ; 進程環境變量

user=root ; 進程執行的用戶身份

stopsignal=INT

startsecs=1 ; 自動重啟間隔

保存并退出

3、?運行supervisord,查看是否生效,執行以下命令:

supervisord -c /etc/supervisor/ supervisord.conf

ps -ef | grep ProjectName

返回

root???? 27007 27006? 1 13:21 ???????? 00:00:02 dotnet ProjectName.dll

root???? 27026 26810? 0 13:23 pts/0??? 00:00:00 grep --color=auto ProjectName

表示運行成功!

瀏覽器訪問站點…

注意:在執行第一條命令出現以下提示信息時:

Error: Another program is already listening on a port that one of our HTTP servers is configured to use.? Shut this program down first before starting supervisord.

For help, use /usr/bin/supervisord –h

是因為有一個使用supervisor配置的應用程序正在運行,需要執行supervisorctl shutdown命令終止它,或重新創建一個ProjectName.conf文件再執行第一條命令。

4、?常用命令

5、?配置supervisord開機啟動

a.在指定目錄下創建文件supervisord.service

vim /usr/lib/systemd/system/supervisord.service

b.輸入以下內容:

[Unit]

Description=Supervisor daemon

[Service]

Type=forking

ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf

ExecStop=/usr/bin/supervisorctl shutdown

ExecReload=/usr/bin/supervisorctl reload

KillMode=process

Restart=on-failure

RestartSec=42s

[Install]

WantedBy=multi-user.target

保存并退出

執行以下命令:

systemctl enable supervisord

提示:

Created symlink from /etc/systemd/system/multi-user.target.wants/supervisord.service to /usr/lib/systemd/system/supervisord.service.

驗證是否為開機啟動:

systemctl is-enabled supervisord

提示:

enabled

表示設置成功!

至此,創建supervisor守護進程完畢

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的supervisor 守护多个进程_supervisor管理守护进程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。