php使用supervisor管理进程脚本

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/448834.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重写规则和重载规则

重写规则&#xff1a; 发生在有继承关系的类之间&#xff08;同一类就是重载了&#xff09;相同的方法名&#xff0c;参数列表&#xff0c;返回类型可见性&#xff08;public,protected,private&#xff09;不能被缩小异常不能被放大规则与c中不一样静态类型不能被重写方法重载…

消息中间件:RocketMQ 介绍(特性、术语、原理、优缺点、消息顺序、消息重复)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 消息中间件的作用 1. 应用解耦 2. 异步处理 比如用户注册场景&#xff0c;注册主流程完成以后&#xff0c;需要调用邮件系统发送邮件…

C# JsonHelper类

记录一下&#xff0c;方便下次用。 public class JsonHelper{#region Json/// <summary>/// JavaScriptSerializer/// </summary>/// <typeparam name"T"></typeparam>/// <param name"obj"></param>/// <returns&…

[译】Redux入门教程(一)

前言 老外写技术文章真是叼&#xff0c;这是国外的一个程序员写的一个简单易懂,循序渐进的Redux教程&#xff0c;本着共享的精神&#xff0c;就翻译出来给大家一起看&#xff0c;文章最后有链接&#xff0c;不想看我翻译的直接去看原文吧。 下面是原教程的英文目录 这篇先更三分…

使用 Intellij Idea 打包 java 工程为可执行 jar 包

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 其实还有个简单多了方法&#xff0c;见&#xff1a; 超简单方法&#xff1a; Intellij Idea 把 java 工程打成可运行的 jar 步骤&#x…

QuickStart系列:docker部署之Gitlab本地代码仓库

gitlab是可以在本地搭建的使用git作为源代码管理的仓库。 运行环境&#xff1a; win10vmware14docker7docker 1. 使用命令拉取镜像&#xff08;非必须&#xff0c;耗时比较久&#xff0c;这里以ce为准&#xff0c;ce是社区版&#xff0c;ee是企业版&#xff09;&#xff1a; do…

超简单方法: Intellij Idea 把 java 工程打成可运行的 jar

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 找到 Intellij Idea 最下面的 Terminal 选项&#xff0c;并点击进入该界面。 2. 在光标位置输入命令&#xff1a;mvn clean 。清理…

LDAP-轻量级目录访问协议(统一认证)

概念 LDAP是轻量目录访问协议&#xff0c;英文全称是Lightweight Directory Access Protocol&#xff0c;一般都简称为LDAP。 参考资料 LDAP概念和原理介绍 我花了一个五一终于搞懂了OpenLDAP LDAP-Apache Directory Studio使用&#xff08;创建DC.OU及用户&#xff09; 转载于…

kafka集群搭建(消息)

1、Kafka使用背景在我们大量使用分布式数据库、分布式计算集群的时候&#xff0c;是否会遇到这样的一些问题&#xff1a;我们想分析下用户行为&#xff08;pageviews&#xff09;&#xff0c;以便我们设计出更好的广告位我想对用户的搜索关键词进行统计&#xff0c;分析出当前的…

[转]在Windows 下使用OpenCL

目前&#xff0c;NVIDIA和AMD的Windows driver均有支援OpenCL&#xff08;NVIDIA的正式版driver是从195.62版开始&#xff0c;而AMD则是从9.11版开始&#xff09;。NVIDIA的正式版driver中包含OpenCL.dll&#xff0c;因此可以直接使用。AMD到目前为止&#xff0c;则仍需要安装其…

docker 之 Dockerfile 实践

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 上一篇介绍了Dockerfile中使用的指令&#xff0c;现在开始进行指令实践 先查看下本地的镜像&#xff0c;选一个作为base image&#xf…

tomcat启动后命令行日志中文乱码

这是日志的编码设置和窗体的编码格式不一致。 将 conf\logging.properties 文件中的 UTF-8 改成 GBK 重启tomcat &#xff08;右键cmd标题栏部分&#xff0c;可以查看cmd属性&#xff09; 转载于:https://www.cnblogs.com/Echiops/p/10974587.html

Coursera机器学习笔记(一) - 监督学习vs无监督学习

转载 http://daniellaah.github.io/2016/Machine-Learning-Andrew-Ng-My-Notes-Week-1-Introduction.html 一. 监督学习 什么是监督学习? 我们来看看维基百科中给出的定义: 监督式学习&#xff08;英语&#xff1a;Supervised learning&#xff09;&#xff0c;是一个机器学习…

基于OpenCL的mean filter性能

1.对于一个标准的3*3 均值滤波&#xff0c;kernel代码如下&#xff1a; 使用buffer/image缓冲对象 __kernel void filter(__global uchar4* inputImage, __global uchar4* outputImage, uint N) {int x get_global_id(0);int y get_global_id(1);int width get_global_size(…

Docker 实战:编写 Dockerfile

一、编译镜像 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 编译镜像 Dockerfile类似于Makfile&#xff0c;用户使用docker build就可以编译镜像&#xff0c;使用该命令可以设置编译…

dubbo-环境搭建,实现一个简单地dubbo实例(附github地址)

一、建立maven模块和provider、consumer、service子模块&#xff0c;其中service是开发接口的模块 建立一个maven模块&#xff0c;不选择样板&#xff0c;直接next知道完成&#xff0c;建立三个子模块,建立完后发现各个模块的java目录不是源目录 右键——>make Directory as…

static 二次理解

当api底层用到static修饰的话&#xff0c;因为是类的&#xff0c;此容器中只有一份转载于:https://blog.51cto.com/jiaxiaoxu/2394844

AMD 5XXX 系列显卡的 peak bandwidth计算

在ATI Stream Computing Programming Guide中&#xff0c;例举了AMD 5系列显卡的参数信息。 我比较关注其中Peak bandwidths的计算&#xff0c;以便在opencl程序测试bandwidth利用率。 下面&#xff0c;我以5870为例&#xff0c;探讨一下如何计算得到这些结果&#xff1a; L1 c…

Docker : Dockerfile 定制镜像

使用 Dockerfile 定制镜像 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写…

动态规划 最长上升子序列

题意&#xff1a;给出一个序列&#xff0c;求它的最长上升子序列的长度 题目链接&#xff1a;https://ac.nowcoder.com/acm/problem/26156 输入:n代表长度&#xff0c;然后是一个字符串 分析&#xff1a;用dp[i]表示长度为i1的上升子序列末尾元素的最小值&#xff08;一开始初始…