Laravel Horizon - это пакет для управления очередями в Laravel, который предоставляет красивый дашборд и код-ориентированную конфигурацию для Redis-очередей. По сути, Laravel Horizon работает внутри одного проекта Laravel и не предоставляет собой инструмент для управления несколькими проектами напрямую.
Однако, если у вас есть несколько проектов Laravel и вы хотите использовать Horizon в каждом из них, вы должны настроить каждый экземпляр Horizon независимо. Тогда Supervisor может быть использован, чтобы убедиться, что все экземпляры Horizon разных проектов запущены и работают должным образом.
Вот как можно настроить Supervisor для управления несколькими инстансами Laravel Horizon для разных проектов:
1. Установите Laravel Horizon в каждом из ваших проектов, следуя официальной документации.
2. Настройте файл конфигурации `horizon.php` в каталоге `config` каждого проекта в соответствии с нуждами проекта.
3. Создайте конфигурационные файлы Supervisor для каждого проекта. Обычно они размещаются в `/etc/supervisor/conf.d/`. Например, для двух разных проектов:
`/etc/supervisor/conf.d/project1-horizon.conf`
```ini
[program:project1-horizon]
process_name=%(program_name)s
command=php /path/to/project1/artisan horizon
autostart=true
autorestart=true
user=www-data
redirect_stderr=true
stdout_logfile=/path/to/project1/storage/logs/horizon.log
stopwaitsecs=3600
```
`/etc/supervisor/conf.d/project2-horizon.conf`
```ini
[program:project2-horizon]
process_name=%(program_name)s
command=php /path/to/project2/artisan horizon
autostart=true
autorestart=true
user=www-data
redirect_stderr=true
stdout_logfile=/path/to/project2/storage/logs/horizon.log
stopwaitsecs=3600
```
Убедитесь, что вы изменили пути (`/path/to/projectN`) к своим проектам и пользователя, под которым должны выполняться эти процессы (`www-data` обычно используется для веб-серверов, таких как Apache или Nginx), а также пути к файлам логов.
4. Перечитайте конфигурации Supervisor и обновите их, чтобы убедиться, что изменения применены:
```bash
sudo supervisorctl reread
sudo supervisorctl update
```
5. Запустите или перезапустите управляемые процессы:
```bash
sudo supervisorctl start project1-horizon
sudo supervisorctl start project2-horizon
```
Или, если они уже запущены и вы делали изменения в конфигурации:
```bash
sudo supervisorctl restart project1-horizon
sudo supervisorctl restart project2-horizon
```
6. Вы можете проверить статус всех процессов, управляемых Supervisor, используя следующую команду:
```bash
sudo supervisorctl status
```
Теперь Supervisor будет управлять Horizon для всех ваших проектов, указанных в соответствующих конфигурационных файлах, и будет держать их запущенными, даже если они упадут по какой-либо причине.