Очереди в Laravel представляют собой мощный инструмент для отложенного выполнения задач, таких как отправка электронной почты, генерация отчетов или обработка больших объемов данных в фоновом режиме.
Использование systemd для управления очередями Laravel обеспечивает их надежность и упрощает процесс мониторинга. В этой статье мы рассмотрим, как настроить очереди Laravel через systemd.
Преимущества использования systemd над Supervisor
Хотя Supervisor является популярным инструментом для управления процессами и часто используется для контроля за очередями в Laravel, systemd предлагает несколько ключевых преимуществ, делая его предпочтительным выбором в определенных сценариях:
- Интеграция с системой: systemd является системной службой для Linux, которая уже включена в большинство современных дистрибутивов, для его использования не требуются дополнительные установки, в отличие от Supervisor.
- Логирование: централизованное логирование через journald упрощает процесс мониторинга и отладки, в то время как с Supervisor может потребоваться настройка дополнительных инструментов для агрегации и анализа логов.
- Простота настройки: настройка очереди через systemd заключается в создании небольшого конфигурационного файла-службы.
Настройка очереди через systemd
Убедитесь, что у вас установлен Laravel и настроен для использования очередей. Вы должны определить соединение для очередей в файле конфигурации config/queue.php
вашего проекта.
1. Создание файла службы systemd
Для начала создайте файл службы. Он будет использоваться для управления процессом очереди Laravel как службой. Создайте файл с именем laravel-queue.service
в директории /etc/systemd/system/
:
sudo nano /etc/systemd/system/laravel-queue.service
Добавьте в файл следующее содержимое, заменив user
, group
и path/to/your/laravel/app
на соответствующие значения для вашей среды:
[Unit]
Description=Laravel Queue Worker
After=network-online.target
[Service]
User=user
Group=group
Restart=always
ExecStart=/usr/bin/php /path/to/your/laravel/app/artisan queue:work --tries=3 --sleep=3
WorkingDirectory=/path/to/your/laravel/app
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=laravel-queue
[Install]
WantedBy=multi-user.target
2. Активация и запуск службы
После создания файла необходимо перезагрузить systemd, чтобы он обнаружил новую службу:
sudo systemctl daemon-reload
Затем включите службу, чтобы она автоматически запускалась при загрузке системы:
sudo systemctl enable laravel-queue.service
И запустите:
sudo systemctl start laravel-queue.service
3. Мониторинг и управление службой
После запуска службы вы можете проверить ее статус командой:
sudo systemctl status laravel-queue.service
Для просмотра логов работы очереди используйте:
journalctl -u laravel-queue.service
Если вам нужно остановить очередь:
sudo systemctl stop laravel-queue.service
Для перезапуска после изменений в конфигурации или коде:
sudo systemctl restart laravel-queue.service
Заключение
Выбор между systemd и Supervisor для управления очередями Laravel зависит от конкретных требований проекта, предпочтений разработчика и окружающей системной среды.
Systemd может предложить более глубокую интеграцию с системой и лучшее управление ресурсами. В то же время, Supervisor может быть предпочтительнее, если требуется более гибкое и продвинутое использование или в средах, где systemd недоступен.