Разработчикам

Очереди в Laravel на продакшн-сервере: настройка и мониторинг

Эдгар Косулин 2 мин чтения

Содержание

Очереди в Laravel позволяют выполнять задачи асинхронно, разгружая основной процесс приложения. Это особенно полезно для отправки email, генерации отчетов, обработки изображений и других длительных операций. В этой статье разберем, как правильно запустить и мониторить очередь на продакшн-сервере.

Кто запускает artisan queue:work на сервере?

Вручную запускать php artisan queue:work на продакшн-сервере не лучший вариант, потому что процесс завершится при разрыве SSH-соединения или перезагрузке сервера. Вместо этого, для управления воркером используется Supervisor, процесс-менеджер, который следит за выполнением команд и автоматически перезапускает их при сбое.

Настройка Supervisor для очередей Laravel

1. Установка Supervisor

На большинстве серверов Linux Supervisor можно установить так:

sudo apt update && sudo apt install supervisor -y

После установки Supervisor должен автоматически запуститься. Если нет, включаем его вручную:

sudo systemctl enable --now supervisor

2. Создание конфигурации для воркера

Открываем файл конфигурации:

sudo nano /etc/supervisor/conf.d/laravel-worker.conf

Добавляем следующее:

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/html/artisan queue:work --tries=3
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
numprocs=1
redirect_stderr=true
stdout_logfile=/var/log/laravel-worker.log

Объяснение параметров:

  • command: запускает воркер Laravel.
  • autostart=true: запускает процесс при старте Supervisor.
  • autorestart=true: перезапускает воркер при сбое.
  • numprocs=1: количество воркеров (можно увеличить для нагрузки).
  • stdout_logfile: путь к файлу логов. Сохраняем и закрываем файл (Ctrl + X, затем Y и Enter).

3. Применение настроек и запуск воркера

Теперь Supervisor нужно перечитать конфигурацию и обновить список процессов:

sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start laravel-worker

Проверяем статус воркера:

sudo supervisorctl status

Если всё работает, должно появиться:

laravel-worker:laravel-worker_00   RUNNING   pid 12345, uptime 0:01:10

Как убедиться, что воркер работает?

1. Проверка логов

Если задачи не обрабатываются, сначала проверяем логи Laravel:

tail -f storage/logs/laravel.log

Или лог воркера Supervisor:

tail -f /var/log/laravel-worker.log

2. Проверка незавершенных задач

Можно посмотреть список задач, которые зависли:

php artisan queue:failed

Если там есть ошибки, попробуй повторно запустить их:

php artisan queue:retry all

3. Перезапуск воркера после обновления кода

После деплоя кода воркер может продолжать работать со старой версией. Чтобы он корректно обновился, выполните команду:

php artisan queue:restart

Эта команда отправляет сигнал воркерам завершить текущие задачи и автоматически перезапуститься.

Заключение

Теперь ты знаешь, как правильно запускать и мониторить очереди в Laravel на продакшн-сервере. Использование Supervisor позволяет гарантировать стабильную работу воркеров и их автоматический перезапуск при сбоях. Не забывай проверять логи и статус очереди, чтобы оперативно реагировать на возможные ошибки.

Laravel PHP

Поделиться: Telegram ВКонтакте

Новые статьи и разборы — в канале Siteko: Telegram MAX

Подписчикам: +30 дней к пробному хостингу, клиентам: +150 ₽ на баланс

Пошаговые инструкции по нашим услугам — в базе знаний

Ещё по теме

Разработчикам 5 мин чтения

Laravel 13: нововведения и улучшения

Laravel 13 вышел 17 марта 2026 года: Тейлор Отвелл представил релиз на Laracon EU. Если вы привыкли к тому, что мажорные версии Laravel приносят болезненные миграции, этот релиз вас приятно удивит: команда сознательно сделала ставку на минимум ломающих изменений и максимум практической пользы. Больш...