相关文章
上一篇:使用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:
username = vagrant
password = vagrant
prompt = mysupervisor
下面来分别描述以下各个配置的含义:
[program:zfx-example]
command=/usr/bin/python /www/wwwroot/domain_check/Main.py
directory=/www/wwwroot/domain_check
numprocs=2
process_name=%(program_name)s_%(process_num)02d
autostart=true
autorestart=true
startsecs=6
startretries=3
user=root
priority=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
stopasgroup=false
killasgroup=false
environment=PATH="/home/app_env/bin"
[unix_http_server]
file=/tmp/supervisor.sock
chmod=0700
chown=nobody:nogroup
username=user
password=123
[inet_http_server]
port=127.0.0.1:9001
username=user
password=123
[supervisord]
logfile=/tmp/supervisord.log
logfile_maxbytes=50MB
logfile_backups=10
loglevel=info
pidfile=/tmp/supervisord.pid
[supervisorctl]
serverurl=unix:
serverurl=http:
username=chris
password=123
prompt=mysupervisor
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中进行操作,其他的命令也是如此:
四、基本常用命令
- supervisor命令
sudo service supervisor start # 启动supervisor服务 sudo service supervisor stop # 停止supervisor服务
- supervisorctl命令
program_name 为 [program:x] 里的 x
supervisorctl stop program_name
supervisorctl start program_name
supervisorctl restart program_name
supervisorctl stop|start|restart all
supervisorctl stop groupworker:
supervisorctl stop groupworker:name1
supervisorctl status
supervisorctl status program_name(服务名)
supervisorctl shutdown
supervisorctl reload
supervisorctl update
五、 下次再说
|