安装 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 rereadsudo supervisorctl updatesudo 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