【PHP】php使用spudervisor管理进程

supervisor是用 python 开发的一个在linux系统下的进程管理工具,可以方便的监听,启动,停止一个或多个进程。
当一个进程被意外杀死后,supervisor监听到后,会自动重新拉起进程。

一、supervisor的安装

  1. 通过yum安装
yum -y install supervisor
  1. 通过pip安装
yum -y install epel-release
yum -y install python-pip
pip install supervisor

安装好后,会生成三个执行命令,echo_supervisord_conf,supervisorctl,supervisord。

二、supervisor的配置文件

supervisor 的默认配置文件在 /etc/supervisord.conf 下,如果没有可以通过如下命令生成

echo_supervisord_conf > /etc/supervisord.conf

常用的配置项如下:

[unix_http_server]
file=/var/run/supervisor/supervisor.sock   ; unix socket文件,supervisorctl会使用
;chmod=0700                 ; socket文件权限
;chown=nobody:nogroup       ; socket文件所属用户和用户组

;[inet_http_server]         ; web管理界面,默认不开启
;port=127.0.0.1:9001        ; 管理界面的IP和端口
;username=user              ; 登陆管理界面的用户名
;password=123               ; 登陆管理界面的密码

[supervisord]
logfile=/var/log/supervisor/supervisord.log  ; 日志文件
logfile_maxbytes=50MB       ; 日志文件大小,为0表示不限制
logfile_backups=10          ; 日志文件备份数量,为0表示不备份
loglevel=info               ; 日志级别,也可设置为 debug,warn,trace
pidfile=/var/run/supervisord.pid ; PID文件路径
nodaemon=false              ; 是否前台启动,为false表示守护进程方式
minfds=1024                 ; 打开文件描述符的最小值
minprocs=200                ; 创建进程数的最小值

[supervisorctl]
serverurl=unix:///var/run/supervisor/supervisor.sock ; 通过 unix sokCET 连接supervisord
;serverurl=http://127.0.0.1:9001 ; 通过http方式连接supervisord

[include]
files = supervisord.d/*.ini;  包含其他配置文件,可以是.conf或.ini

三、配置一个PHP脚本进程

/etc/supervisord.d 目录下创建一个 testtest.ini 文件

;testtest表示程序名称
[program:testtest]
;需要执行的命令
command=php testtest.php
;命令执行的目录
directory=/home/wwwroot/www.xxx.com
;环境变量
environment=PATH="/usr/local/php/bin/"
;哪个用户运行
user=root
;是否自启动
autostart=true
;是否自动重启
autorestart=true
;自动重启时间间隔,单位秒
startsecs=3
;错误日志文件
stderr_logfile=/tmp/testtest.err.log
;输出日志文件
stdout_logfile=/tmp/testtest.out.log

testtest.php 代码:

<?PHP
 
$i = 0;
while(true) {
    $i++;
    echo $i,PHP_EOL;
    sleep(1);
}

四、进程管理

管理进程,需要我们启动 supervisor 服务,这里我们配置 systemctl,开机自动启动 supervisor
创建 /usr/lib/systemd/system/supervisord.service 文件,配置如下:

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

[Service]
Type=forking
# -c 指定配置文件
ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf 
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 程序名

五、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
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值