homestead环境Supervisor 配置

安装 Supervisor

Supervisor 是一个 Linux 操作系统上的进程监控软件,它会在 queue:listen queue:work 命令发生失败后自动重启它们。在 Ubuntu 安装 Supervisor,可以用以下命令:

sudo apt-get install supervisor
{tip} 如果自己手动配置 Supervisor 听起来有点难以应付,可以考虑使用 Laravel Forge,它能给你的 Laravel 项目自动安装与配置 Supervisor。

配置 Supervisor

配置ini文件之前请在supervisord.conf文件中将[include]开放,如果发现系统权限问题不让更改文件说明需要用root用户来更改,如何在homestead中恢复root用请参考《vagrant ubuntu 创建 root用户》 《vagrant ubuntu 创建 root用户并使用ssh连接》Supervisor 的配置文件一般是放在 /etc/supervisor 目录下。在这个目录中你可以创建任意数量的配置文件来要求 Supervisor 怎样监控你的进程。例如我们创建一个 laravel-worker.ini 来启动与监控一个 queue:work 进程:

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /home/Code/laravelshop/artisan queue:work sqs --sleep=3 --tries=3
autostart=true
autorestart=true
numprocs=8
user = root          ; 用哪个用户启动
redirect_stderr=true
stdout_logfile=/home/Code/laravelshop/worker.log

这个例子里的 numprocs 命令会要求 Supervisor 运行并监控 8 个 queue:work 进程,并且在它们运行失败后重新启动。当然,你必须更改 command 命令的 queue:work sqs ,以显示你所选择的队列驱动。

启动 Supervisor
当这个配置文件被创建后,你需要更新 Supervisor 的配置,并用以下命令来启动该进程:

sudo supervisorctl reread

sudo supervisorctl update

sudo supervisorctl start laravel-worker:*

重启 Supervisor 让配置文件生效

supervisorctl reload

查看配置文件运行状态

ps -ef|grep supervisord

如果正常将会出现下面报告

root       849     1  0 01:48 ?        00:00:00 /usr/bin/python /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
root      2711     1  0 01:59 ?        00:00:00 /usr/bin/python /usr/local/bin/supervisord -c /etc/supervisord.conf
root      2715  2669  0 02:01 pts/1    00:00:00 grep --color=auto supervisord

更多有关 Supervisor 的设置与使用,请参考 Supervisor 官方文档

如果有报错请参考 《supervisor常见报错》

在重启并重新加载配置文件后报错

root@homestead:~# supervisorctl reload
error: <class 'socket.error'>, [Errno 2] No such file or directory: file: /usr/lib/python2.7/socket.py line: 228

说明是权限问题需要执行下面命令将解决权限问题

sudo touch /var/run/supervisor.sock 
sudo chmod 777 /var/run/supervisor.sock
阅读 120

Comments