supervisor是用python開發的一個在linux系統下的進程管理工具,能夠方便的監聽,啓動,中止一個或多個進程。當一個進程被意外殺死後,supervisor監聽到後,會自動從新拉起進程。php
1、supervisor的安裝python
一、經過easy_install安裝linux
yum -y install python-setuptools easy_install supervisor
二、經過yum安裝web
yum -y install supervisor
三、經過pip安裝socket
yum -y install epel-release yum -y install python-pip pip install supervisor
安裝好後,會生成三個執行命令,echo_supervisord_conf,supervisorctl,supervisord。tcp
2、supervisor的配置文件工具
supervisor的默認配置文件在 /etc/supervisord.conf 下,若是沒有能夠經過以下命令生成url
echo_supervisord_conf > /etc/supervisord.conf
經常使用的配置項以下:debug
[unix_http_server] file=/tmp/supervisor.sock ; unix socket文件,supervisorctl會使用 ;chmod=0700 ; socket文件權限 ;chown=nobody:nogroup ; socket文件所屬用戶和用戶組 [inet_http_server] ; web管理界面 port=127.0.0.1:9001 ; 管理界面的IP和端口 username=admin ; 登錄管理界面的用戶名 password=123456 ; 登錄管理界面的密碼 [supervisord] logfile=/tmp/supervisord.log ; 日誌文件 logfile_maxbytes=50MB ; 日誌文件大小,爲0表示不限制 logfile_backups=10 ; 日誌文件備份數量,爲0表示不備份 loglevel=info ; 日誌級別,也可設置爲 debug,warn,trace pidfile=/tmp/supervisord.pid ; PID文件路徑 nodaemon=false ; 是否前臺啓動,爲false表示守護進程方式 minfds=1024 ; 打開文件描述符的最小值 minprocs=200 ; 建立進程數的最小值 [supervisorctl] serverurl=unix:///tmp/supervisor.sock ; 經過 unix sokcet 鏈接supervisord ;serverurl=http://127.0.0.1:9001 ; 經過http方式鏈接supervisord [include] files = /etc/supervisord/confs/*.conf ; 包含其餘配置文件,能夠是.conf或.ini
咱們須要把 [include] 前面的註釋打開,並配置 files 的路徑。unix
建立 files 中配置的目錄。
mkdir -p /etc/supervisord/confs/
3、配置一個php腳本進程
咱們在 /etc/supervisord/confs/ 目錄下建立一個 demo.conf 文件。
;demo表示程序名稱 [program:demo] ;須要執行的命令 command=php demo.php ;命令執行的目錄 directory=/data/wwwroot ;環境變量 environment=PATH="/data/nmp/php/bin/" ;哪一個用戶運行 user=root ;是否自啓動 autostart=true ;是否自動重啓 autorestart=true ;自動重啓時間間隔,單位秒 startsecs=3 ;錯誤日誌文件 stderr_logfile=/tmp/demo.err.log ;輸出日誌文件 stdout_logfile=/tmp/demo.out.log
demo.php的代碼以下:
<?php $i = 0; while(true) { $i++; echo $i, PHP_EOL; sleep(1); }
4、管理進程。
管理進程,須要咱們啓動 supervisor 服務,這裏咱們配置 systemctl,開機自動啓動 supervisor。
建立 /usr/lib/systemd/system/supervisord.service 文件,配置以下:
[Unit] Description=Supervisor daemon [Service] Type=forking ExecStart=/usr/bin/supervisord ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown ExecReload=/usr/bin/supervisorctl $OPTIONS reload KillMode=process Restart=on-failure RestartSec=42s [Install] WantedBy=multi-user.target
啓用配置
systemctl enable supervisord.service
啓動 supervisord
systemctl start supervisord.service
成功後,就能夠經過 supervisorctl 交互命令管理進程腳本了。
讀取有更新的配置文件
supervisorctl reread
更新配置文件修改過的程序
supervisorctl update
若是修改過 /etc/supervisord.conf 請使用以下命令
supervisorctl reload
啓動,中止,重啓,程序。
supervisorctl start 程序名 supervisorctl stop 程序名 supervisorctl restart 程序名
5、supervisor圖形化管理界面
須要開啓 /etc/supervisord.conf 文件中的 [inet_http_server]
[inet_http_server] port=0.0.0.0:9001 username=admin password=123456
設置完後,要開放 9001 端口,並重啓 supervisor
firewall-cmd --zone=public --add-port=9001/tcp --permanent firewall-cmd --reload
重啓 supervisor
supervisorctl reload