php使用supervisor管理進程腳本

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
相關文章
相關標籤/搜索