IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 使用supervisor管理laravel队列 - 配置文件supervisord.conf -> 正文阅读

[PHP知识库]使用supervisor管理laravel队列 - 配置文件supervisord.conf

相关文章

上一篇:使用supervisor管理laravel队列
,此篇重点性描述了我本地配置supervisor的全部过程;但是并未介绍为啥这么配置,这里,我就来记录一下配置supervisor的各个参数以及含义

一、先生成各个项目对应的suoervisor配置文件

上一篇中说到,supervisor的配置文件一般在路径etc/supervisor/supervisord.conf
在这里插入图片描述
在这里可以看到有个【include】配置,当我们要管理的进程很多的时候,写在这个文件里就会有点大,而且管理不方便;所以我们可以把配置信息写到多个文件中,然后include过来。这里已经配置为会包含conf.d目录下所有.conf的文件,所以我们可以直接在conf.d目录下,直接生成各个项目对应的supervisor文件即可;

cd /etc/supervisor/conf.d
sudo vim zfx-ezample.conf

就会生成一个zfx-ezample.conf文件,当然,记得将名字改成你自己可以标识的项目配置文件名

二、supervisor文件的配置

supervisor配置文档

在新建的zfx-example.conf文件中,增加以下代码:

[program:zfx-example]
process_name=%(program_name)s_%(process_num)02d
command=php /home/vagrant/code/edp/php/artisan queue:work redis --sleep=3 --tries=3
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
user=vagrant
numprocs=8
redirect_stderr=true
stdout_logfile=/home/vagrant/code/edp/php/storage/logs/supervisor.log
stopwaitsecs=3600

[unix_http_server]
file = /var/run/supervisor.sock
chmod = 0700
chown= nobody:nogroup
username = vagrant
password = vagrant

[inet_http_server]
port = 127.0.0.1:9001
username = vagrant
password = vagrant


[supervisord]
logfile = /tmp/supervisord.log
logfile_maxbytes = 50MB
logfile_backups=10
loglevel = info
pidfile = /tmp/supervisord.pid


[supervisorctl]
serverurl = unix:///var/run/supervisor.sock
username = vagrant
password = vagrant
prompt = mysupervisor

下面来分别描述以下各个配置的含义:

[program:zfx-example]
# [program:程序名]

# command=/bin/bash -c "需要执行的命令,多句命令用分号隔开"
# command=python /root/ihasy/application.py --port=9001 --mysql_database=ihasy --mysql_host=localhost --mysql_password=764895 --mysql_user=root
command=/usr/bin/python /www/wwwroot/domain_check/Main.py
directory=/www/wwwroot/domain_check

numprocs=2                                    # 启动进程的数目,默认为1。; 若 numprocs 不为1时,就是进程池的概念。process_name 的表达式中一定要包含 process_num 来区分不同的进程
process_name=%(program_name)s_%(process_num)02d

autostart=true                                # 该程序是否跟随supervisor一起启动,默认是true。如果是true的话,子进程将在supervisord启动后被自动启动。
autorestart=true                              # 如果该程序挂了,是否重新启动(异常退出时,自动启动,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启)
startsecs=6                                   # 启动后持续6秒后未发生异常,才表示启动成功。启动6秒后没有异常退出,就表示进程正常启动了,默认为1秒
startretries=3                                # 异常后,自动重启次数。启动失败自动重试次数,默认是3。当超过3次后,supervisor将把此进程的状态置为FATAL 

user=root                                     # 设置启动该程序的用户,默认是root
priority=999                                  # 进程启动优先级(值越小越优先启动)。权重值,值越低,越早启动,越晚关闭。默认999                  

stdout_logfile=/var/www/ProjectName.out.log   # 终端标准输出重定向文件
stdout_logfile_maxbytes=2MB                   # 文件最大大小
stdout_logfile_backups=30                     # 文件备份最大数量
stdout_capture_maxbytes=2MB
stderr_logfile=/var/www/ProjectName.err.log   # 终端错误输出重定向文件
stderr_logfile_maxbytes=2MB                   # 文件最大大小
stderr_logfile_backups=30                     # 文件备份最大数量
stderr_capture_maxbytes=2MB
redirect_stderr=true                          # 如果为true,则stderr的日志会被写入stdout日志文件中

stopasgroup=false                             # 默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=false                             # 默认为false,向进程组发送kill信号,包括子进程
environment=PATH="/home/app_env/bin"          # 可以通过 environment 来添加需要的环境变量,一种常见的用法是使用指定的 virtualenv 环境 

# startsecs=6:即6秒内程序即没有出现异常,也没有执行完,执行完也是异常退出,会自动重启。
# process_name=%(program_name)s_%(process_num)02d:这个是进程名,如果我们下面的numprocs参数为1的话,就不用管这个参数了,它默认值%(program_name)s也就是上面的那个program冒号后面的名字,但是如果numprocs为多个的话,那就不能这么干了。想想也知道,不可能每个进程都用同一个进程名吧。
[unix_http_server]     
# socket文件的路径,supervisorctl用XML_RPC和supervisord通信就是通过它进行的。如果不设置的话,supervisorctl也就不能用了。不设置的话,默认为none。非必须设置       
file=/tmp/supervisor.sock 
# 这个就是修改上面的那个socket文件的权限为0700。不设置的话,默认为0700。 非必须设置                                    
chmod=0700    
# 这个就是修改上面的那个socket文件的属组为user.group。不设置的话,默认为启动supervisord进程的用户及属组。非必须设置             
chown=nobody:nogroup       
# 使用supervisorctl连接的时候,认证的用户。不设置的话,默认为不需要用户。 非必须设置   
username=user              
# 和上面的用户名对应的密码,可以直接使用明码,也可以使用SHA加密。如:{SHA}82ab876d1387bfafe46cc1c8a2ef074eae50cb1d。默认不设置。非必须设置                               
password=123

# 侦听在TCP上的socket,Web Server和远程的supervisorctl都要用到它。不设置的话,默认为不开启。非必须设置
[inet_http_server]         
# 这个是侦听的IP和端口,侦听所有IP用 :9001或*:9001。只要上面的[inet_http_server]开启了,就必须设置它。 
port=127.0.0.1:9001         
# 这个和上面的uinx_http_server一个样。非必须设置
username=user               
# 这个也一个样。非必须设置
password=123    

# 这个主要是定义supervisord这个服务端进程的一些参数的。这个必须设置,不设置,supervisor就不用干活了
[supervisord]                
# 这个是supervisord这个主进程的日志路径,注意和子进程的日志不搭嘎。默认路径$CWD/supervisord.log,$CWD是当前目录。非必须设置
logfile=/tmp/supervisord.log 
# 这个是上面那个日志文件的最大的大小,当超过50M的时候,会生成一个新的日志文件。当设置为0时,表示不限制文件大小。默认值是50M,非必须设置。              
logfile_maxbytes=50MB        
# 日志文件保持的数量,上面的日志文件大于50M时,就会生成一个新文件。文件数量大于10时,最初的老文件被新文件覆盖,文件数量将保持为10。当设置为0时,表示不限制文件的数量。默认情况下为10。非必须设置
logfile_backups=10
# 日志级别,有critical, error, warn, info, debug, trace, or blather等。默认为info。非必须设置项           
loglevel=info                
# supervisord的pid文件路径。默认为$CWD/supervisord.pid。非必须设置  
pidfile=/tmp/supervisord.pid 

[supervisorctl]
# 这个是supervisorctl本地连接supervisord的时候,本地的UNIX socket路径,注意这个和前面的[unix_http_server]对应。默认值就是unix:///tmp/supervisor.sock。非必须设置
serverurl=unix:///tmp/supervisor.sock
# 这个是supervisorctl远程连接supervisord的时候,用到的TCP socket 路径,注意这个和前面的[inet_http_server]对应。默认值就是http://127.0.0.1:9001。非必须项
serverurl=http://127.0.0.1:9001
# 用户名,默认空。非必须设置
username=chris
# 密码,默认为空。非必须设置             
password=123
# 输入用户名密码时候的提示符。默认supervisor。。非必须设置
prompt=mysupervisor
# 这个参数和shell中的history类似,我们可以用上下键来查找前面执行过的命令。默认是no file的。所以我们想要有这种功能,必须指定一个文件。非必须设置
history_file=~/.sc_history              

三、supervisor开机启动

上一篇也提到过,配置完文件后,需要中心加载配置文件启动才能将新配置的配置项生效,命令如下:

sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start laravel-worker:*
或者使用:
sudo supervisorctl -c /etc/supervisor/supervisord.conf

但是你会发现,上次的配置并未配置

user=root # 设置启动该程序的用户,默认是root

这一项,所以直接可以使用以上命令启动,而这次我配置了user=vagrant,如果直接上述命令,会提示以下错误:

Error: Server requires authentication
For help, use /usr/bin/supervisorctl -h

在这里插入图片描述
这是因为设置了访问的账号密码,所以只能先supervisorctl进去,然后在supervisorctl中进行操作,其他的命令也是如此:
在这里插入图片描述

四、基本常用命令

  1. supervisor命令

sudo service supervisor start # 启动supervisor服务
sudo service supervisor stop # 停止supervisor服务

  1. supervisorctl命令
program_name 为 [program:x] 里的 x
# 停止某个进程
supervisorctl stop program_name
# 启动某个进程
supervisorctl start program_name
# 重启某个进程
supervisorctl restart program_name
# 停止|启动|重启 全部进程,注:start、restart、stop 都不会载入最新的配置文件
supervisorctl stop|start|restart all

# 结束所有属于名为 groupworker 这个分组的进程 (start,restart 同理)
supervisorctl stop groupworker:
# 结束 groupworker:name1 这个进程 (start,restart 同理)
supervisorctl stop groupworker:name1

# 查看所有任务状态
supervisorctl status 
# 查看单个任务状态
supervisorctl status program_name(服务名)
# 关闭所有任务
supervisorctl shutdown 
# 载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程
supervisorctl reload
# 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启
supervisorctl update

# 查看运行状态并进入控制台,在控制台中执行命令可以省去supervisorctl命令。
# 即先输入: supervisorctl,后面再输入命令的时候就不用加上supervisorctl了。例如:stop httpserver

五、 下次再说

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-04-23 10:41:29  更:2022-04-23 10:41:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 7:37:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码