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

一、supervisor的安装

1、通过easy_install安装

yum -y install python-setuptools
easy_install supervisor

2、通过yum安装

yum -y install supervisor

3、通过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=/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 的路径。

创建 files 中配置的目录。

mkdir -p /etc/supervisord/confs/

  

三、配置一个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);
}

  

四、管理进程。

管理进程,需要我们启动 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 程序名

  

五、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

  

转载于:https://www.cnblogs.com/jkko123/p/10846038.html

php使用supervisor管理进程脚本相关推荐

  1. mysql用supervisor管理_使用Supervisor管理进程

    1.  Superivisor简介: Supervisor是一个C/S系统,它允许用户在类UNIX系统上监控和管理一系列的进程.你可以把一个进程以Daemon的形式用Supervisor来管理. 2. ...

  2. 在Docker里使用(支持镜像继承的)supervisor管理进程(转)

    这篇文章是受 dockboard 之托帮忙翻译的与 docker 有关的技术文章.译自 Using Supervisor with Docker to manage processes (suppor ...

  3. docker supervisor管理进程

    一.使用supervisor来管理 supervisor:进程管理工具,基于C/S架构.(其提供web接口给用户查询和 控制),它允许用户去监控和控制在类unix系统的进程. 使用supervisor ...

  4. supervisor 管理进程

    一.简介 (1) 基于python编写,安装方便 (2) 进程管理工具,可以很方便的对用户定义的进程进行启动,关闭,重启,并且对意外关闭的进程进行重启 ,只需要简单的配置一下即可,且有web端,状态. ...

  5. 使用 supervisor 管理进程

    Supervisor (http://supervisord.org) 是一个用 Python 写的进程管理工具,可以很方便的用来启动.重启.关闭进程(不仅仅是 Python 进程).除了对单个进程的 ...

  6. Mac Supervisor 管理进程

    无论是在日常工作中还是平时玩代码中,我总是离不开 Supervisor,其实很久之前我就写过一篇文章:supervisord 部署 Flask,在里面,我仔细讲解了如何在 Linux 环境下安装并且配 ...

  7. docker之使用supervisor管理多个进程

    docker题外话: centos7安装supervisor: 源码编译安装: 下载源码文件:supervisor-3.3.1.tar.gz 下载地址:https://pypi.python.org/ ...

  8. Supervisor管理hhvm进程

    2019独角兽企业重金招聘Python工程师标准>>> hhvm速度很快,但由于与网站程序兼容性或hhvm本身不成熟,跑一段时间后会出现hhvm经常宕掉,而前台出现502 bad g ...

  9. 使用supervisor 管理swoft进程

    背景: 项目中遇到有些脚本需要通过后台进程运行,保证不被异常中断,之前都是通过nohup.&.screen来实现,带着能否做一个start/stop/restart/reload的服务启动的想 ...

最新文章

  1. C++回声服务器_5-多进程版本
  2. 系统服务器巡查表,服务器操作系统巡检表
  3. leetcode算法题--煎饼排序
  4. TF:利用是Softmax回归+GD算法实现MNIST手写数字图片识别(10000张图片测试得到的准确率为92%)
  5. 自动化测试框架搭建-邮件-5
  6. ubuntu install redis/mongo
  7. 大型分布式存储方案MinIO介绍,看完你就懂了!
  8. 美股第三次熔断!一觉醒来,苹果损失了1.5亿部iPhone 11 Pro
  9. spring注册bean
  10. 一个卖了1300的Java程序引发的深思
  11. 如何复制百度文库上的东西
  12. gege.fans上热搜背后是明星私域流量的折射
  13. PR模板 红黑大气手机竖屏竖版时尚短视频宣传抖音PR模板
  14. 9大代理服务器软件的比较与分析
  15. java实现微信H5支付和回调的Demo源码
  16. 使用Python根据视频链接下载MP4视频
  17. 2020年Vault咨询公司排名TOP 50
  18. The JSP specification requires that an attribute name is preceded by whitespace 解决
  19. 【基础】光滑曲线什么意思?以及 n次方差、n次方和公式、二项式定理(和的n次方)
  20. 按键精灵模拟键盘批量输入英文大小写

热门文章

  1. mysql myisam存储引擎不能添加外键,添加后显示成功,实则失败
  2. java经典100例算法题_10道java经典算法题,每一题都能帮你提升java水平!
  3. IDEA如何生成get和set方法
  4. 为什么要进行透明计算和透明计算是什么
  5. Java NIO使用及原理分析
  6. SQL Server 2008如何创建定期自动备份任务
  7. scanperiod 不生效
  8. 控制面板的cpl程序列表
  9. JavaEE课程目标、个人目标、互联网应用和企业级应用的区别
  10. 【JSOI2008】星球大战 (并查集)