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
php使用supervisor管理进程脚本的更多相关文章
- Supervisor 管理进程,Cloud Insight 监控进程,完美!
Supervisor 是由 Python 语言编写.基于 linux 操作系统的一款服务器管理工具,用于监控服务器的运行,发现问题能立即自动预警及自动重启等. Cloud Insight 是一款次世代 ...
- supervisor管理进程 superlance对进程状态报警
supervisor介绍 首先,介绍一下supervisor.Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linu ...
- Linux服务:使用Supervisor管理进程
一.简介 由于基本每个公司都会用到supervisor这个进程管理工具,这里简单阐述一下. Supervisor (http://supervisord.org) 是一个用Python写Linux下的 ...
- Supervisor管理进程
Supervisor管理进程 转载 2016年04月14日 18:26:45 标签: supervisord 28344 Supervisor重新加载配置启动新的进程 liaojie 发布于 1年前, ...
- Django与supervisor 管理进程
1.前言 在Django项目中,我们需要用到一些独立于Django框架外的脚本.这样一些脚本可能需要独立的持续运行,且具有很强的可维护性,这个时候supervisor就可以排上用场了. 基于pytho ...
- supervisor管理进程工具配置
Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统 ...
- 在Docker里使用(支持镜像继承的)supervisor管理进程(转)
这篇文章是受 dockboard 之托帮忙翻译的与 docker 有关的技术文章.译自 Using Supervisor with Docker to manage processes (suppor ...
- pm2 代替 Supervisor 管理进程
前提 我们在使用 Laravel 的时候不免用到列队来处理任务,而 Laravel 官方文档给出的是 Supervisor 来管理进程和监控.但是我们在使用中有下面几个缺点: Supervisor 单 ...
- 使用 supervisor 管理进程
安装: # yum install python-setuptools # easy_install supervisor 如果已经安装了epel和python-pip, 也可以简单 pip inst ...
随机推荐
- TestNG如何用命令行运行
TestNG如何用命令行运行 调用TestNG最简单的方法事下面的: java org.testng.TestNG testng1.xml 以上是我在网上搜索到的最多的答案,但对于第一次接触testn ...
- (day68)Vue-CLI项目、页面跳转和传参、生命周期钩子
目录 一.Vue-CLI (一)环境搭建 (二)项目的创建 (三)项目目录结构 (四)Vue组件(.vue文件) (五)全局脚本文件main.js(项目入口) (六)Vue请求生命周期 二.页面跳转和 ...
- [译]Vulkan教程(20)重建交换链
[译]Vulkan教程(20)重建交换链 Swap chain recreation 重建交换链 Introduction 入门 The application we have now success ...
- 转载-Archunit的使用
Archunit的使用 注:开发的编辑器: Intellij Idea,JDK版本是JDK8 Archunit是什么,官网的英文介绍很好,建议阅读原文,"ArchUnit is a ...
- DEBUG的基本命令的使用[MASM]
DEBUG的基本命令的使用 DEBUG是专门为汇编语言设计的一种调试工具,它通过步进,设置断点等方式为汇编语言程序员提供了非常有效的调试手段. DEBUG的命令都是一个字母,后跟一个或多个参数:字母 ...
- ej3-0开端
开始 编码多年,总有一些最佳实践,Java也是,比如设计模式,比如Effective Java 3 (ej3) . 设计模式先后看过<大话设计模式>,<HeadFirst 设计模式& ...
- 软件测试价值提升之路- 第二章"价值实现的起点"读书笔记
价值实现的起点 2.1 打破常规 打破哪些已经不适应现在软件开发需要的“准则”,明确需要在什么样的环境下.瞄准什么目标来实现测试的价值 找风险:研发内部测试 测试最基础的是找bug,但需要根据风险找最 ...
- 如何在动态链接库dll/so中导出自定义的模板类template class | how to implement a template class with c++ and export in dll/so
本文首发于个人博客https://kezunlin.me/post/4ec4ae49/,欢迎阅读最新内容! how to implement a template class with c++ and ...
- NXP恩智浦VEGA织女星开发板免费申请!
前言 大概两周前申请了一块NXP恩智浦的开发板,今天终于收到了!在这里推荐给大家,官方网站刚上线一个月左右,目前申请的人还不算多,感兴趣的朋友可以申请一个,体验一下这个四核性能怪兽.大厂就是大气,包装 ...
- HTML元素分类 块级元素 内联元素 块级内联元素
概述 HTML中存在许多元素,如<h1>,<p>,<a>,<block>,<image>,这些元素可分为三类,依次是块级元素,内联元素,块级 ...