Python—守護進程管理工具(Supervisor)

1、前言簡介

一、Supervisor 是一個 Python 開發的 client/server 系統,能夠管理和監控類 UNIX 操做系統上面的進程。能夠很方便的用來啓動、重啓、關閉進程(不單單是 Python 進程)。nginx

二、Supervisor 安裝完成以後,能夠編寫配置文件,來知足本身的需求。爲了方便,咱們把配置分紅兩部分:supervisord(這是 server 端,對應的有 client 端:supervisorctl)和應用程序(即咱們要管理的程序)。redis

  • supervisord(server 部分):主要負責管理子進程,響應客戶端命令以及日誌的輸出等,受控的監聽進程都會以其子進程地方式出現,不過若是supervisord的主進程非正常退出時,被管理的進程仍然是運行狀態。
  • supervisorctl(client 部分):命令行客戶端,用戶能夠經過它與不一樣的 supervisord 進程聯繫,獲取子進程的狀態等。

三、Supervisord 要求管理的程序是非daemon程序,supervisord 會幫你把它轉成daemon程序,所以若是用supervisord來管理nginx的話,必須在nginx的配置文件裏添加一行設置daemon off讓nginx以非daemon方式啓動,固然了,redis等亦如是。 瀏覽器

2、安裝supervisor

一、安裝supervisor安全

[root@localhost ~]# pip install supervisor

二、測試supervisor安裝是否成功bash

[root@localhost ~]# echo_supervisord_conf

三、卸載supervisor服務器

[root@localhost ~]# pip uninstall supervisor

supervisor安裝完成後會生成三個執行程序:supervisortd、supervisorctl、echo_supervisord_conf。分別是supervisor的守護進程服務(用於接收進程管理命令)、客戶端(用於和守護進程通訊,發送管理進程的指令)、生成初始配置文件程序。測試

3、配置supervisord

安裝 supervisor 完成以後,能夠編寫配置文件,來知足本身的需求。爲了方便,咱們把配置分紅兩部分:supervisord(這是 server 端,對應的 client 端:supervisorctl)和應用程序(即咱們要管理的程序)。首先來看 supervisord 的配置文件。阿里雲

一、經過運行 echo_supervisord_conf 命令生成 supervisor 的初始化配置文件:supervisord.conf(supervisord.conf文件的位置無所謂,這裏看成第二個位置)spa

[root@localhost ~]# echo_supervisord_conf > /etc/supervisord.conf
[root@localhost ~]# echo_supervisord_conf > /etc/supervisor/supervisord.conf

二、啓動 supervisord 服務(經過 -c 選項指定配置文件路徑,若是不指定會按照這個順序查找配置文件:$CWD/supervisord.conf,  $CWD/etc/supervisord.conf,  /etc/supervisord.conf):操作系統

[root@localhost ~]# supervisord                                          # 默認去找 /etc/supervisord.conf 這個配置文件       
[root@localhost ~]# supervisord -c /etc/supervisord.conf                 # 到指定路徑下去找配置文件         
[root@localhost ~]# supervisord -c /etc/supervisor/supervisord.conf      # 到指定路徑下去找配置文件

三、查看 supervisord 服務是否在運行:

[root@localhost ~]# ps aux | grep supervisord

四、查看 supervisord 服務是否生效

[root@localhost ~]# ps -ef | grep ProjectName

5、配置supervisord開機自啓

1.在 /usr/lib/systemd/system/ 目錄下面新建文件supervisord.service,並寫入以下內容:

[Unit]
Description=Process Monitoring and Control Daemon(Supervisor daemon)
After=rc-local.service nss-user-lookup.target

[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisord shutdown
ExecReload=/usr/bin/supervisord reload
killMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target

2.啓動服務:執行開機啓動命令,讓 supervisord 服務開機自啓。

[root@localhost ~]# systemctl enable supervisord

3.驗證一下是否爲開機啓動。enabled:開機自啓。disabled:開機不自啓。

[root@localhost ~]# systemctl is-enabled supervisord

4.重啓服務器,檢查 supervisor 是否啓動。

[root@localhost ~]# ps aux | grep supervisor

6、Web管理頁面

supervisor提供了可視化的Web管理頁面,容許遠程操做,可是須要在配置文件中手動打開。能夠在網頁端訪問supervisor服務。

注意:若是是騰訊雲或阿里雲服務器,須要安全組放行9001端口,才能訪問。

# 1.打開配置配件
[root@localhost ~]# vi /etc/supervisor/supervisord.conf
 
# 2.將下面幾行前面的分號去掉,修改一下數據保存退出(用戶名與密碼本身定義)
[inet_http_server]             # inet (TCP) server disabled by default
port=0.0.0.0:9001              # ip_address:port specifier, *:port for all iface
username=user                  # default is no username (open server)
password=123                   # default is no password (open server)

# 3.從新載入配置文件
[root@localhost ~]# supervisorctl reload
 
# 4.在瀏覽器輸入:IP:9001,再輸入用戶名與密碼便可登錄查看。
相關文章
相關標籤/搜索