Как запустить Laravel Queue Worker как службу Systemd

2 mar 2023 3 min di lettura
Как запустить Laravel Queue Worker как службу Systemd
Indice dei contenuti

Введение

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

Laravel Queue Worker — это компонент PHP-фреймворка Laravel, который позволяет вам асинхронно выполнять задания в вашем приложении.

Задания — это задачи, для выполнения которых требуется время, и они могут выполняться независимо от остального приложения. Эти задания могут быть, например, отправкой электронных писем, обработкой изображений, созданием отчетов и т. д.

Laravel Queue Worker позволяет помещать эти задания в очередь и запускать их асинхронно, в фоновом режиме, не блокируя выполнение остальной части приложения. Таким образом, приложение может продолжать нормально работать даже во время выполнения фоновых заданий.

Laravel Queue Worker отвечает за управление очередью заданий и выполнение самих заданий. Он работает как отдельный процесс от остальной части приложения и может быть настроен для одновременного запуска нескольких процессов для обработки большого объема работы.

Laravel Queue Worker поддерживает несколько драйверов очередей, таких как база данных, Redis, Amazon SQS и другие. Это позволяет легко интегрировать систему очередей Laravel с различными внешними службами очередей.

Таким образом, Laravel Queue Worker — это фундаментальный компонент для асинхронной обработки заданий в Laravel, который позволяет повысить производительность и масштабируемость веб-приложений, использующих этот фреймворк.

Предпосылки

Прежде чем начать, убедитесь, что ваш сервер соответствует следующим требованиям:

  • Операционная система на базе Linux
  • PHP версии 7.2 или выше
  • Установленный и настроенный фреймворк Laravel
  • Система инициализации Systemd установлена и настроена

Создайте службу Systemd

Первым шагом к запуску обработчиков очередей Laravel с Systemd является создание служебного файла Systemd. Этот файл будет определять поведение рабочего процесса в очереди и то, как его следует запускать, останавливать и перезапускать.

Создайте новый файл в каталоге «/etc/systemd/system/» с расширением.service, например , «laravel-worker.service».

sudo nano /etc/systemd/system/laravel-worker.service

Добавьте в файл следующее содержимое:

[Unit]
 Description=Laravel Queue Worker
 After=network.target

 [Service]
 User=www-data
 Group=www-data
 Restart=always
 WorkingDirectory=/path/to/your/laravel
 ExecStart=/usr/bin/php artisan queue:work --sleep=3 --tries=3

 [Install]
 WantedBy=multi-user.target

Замените «/path/to/your/laravel» каталогом вашего приложения Laravel. Также установите свою команду мастера в опциях «ExecStart».

Давайте проанализируем этот файл и значение каждого раздела:

  • Единица: в этом разделе определяется единица обслуживания и приводится краткое описание того, что она делает. Параметр After указывает, что служба должна запускаться после достижения пункта назначения в сети.
  • Служба: в этом разделе приведены сведения о том, как запустить службу. Параметры User и Group указывают пользователя и группу, под которыми должна работать служба. Параметр «Перезапуск» указывает, что сервис должен быть перезапущен в случае выключения или сбоя. Параметр ExecStart указывает команду, которую необходимо выполнить для запуска оператора очереди. В этом случае мы используем двоичный файл php для запуска команды queue:work с параметрами --sleep=3 и --tries=3. Эти параметры указывают, что рабочий процесс в очереди должен бездействовать в течение 3 секунд между каждым заданием и должен повторять невыполненные задания до 3 раз, прежде чем пометить их как неудачные.
  • Установка: в этом разделе указываются уровни запуска, на которых должна быть включена служба. Параметр WantedBy указывает, что служба должна быть включена в многопользовательской цели, которая является целью по умолчанию для большинства дистрибутивов Linux.

Сохраните файл и выйдите из редактора.

Включить службу

Сначала выполните следующую команду, чтобы перезагрузить службу демона systemd. Вы должны запускать эту команду каждый раз, когда вносите изменения в файл службы.

sudo systemctl daemon-reload

Чтобы убедиться, что работник очереди Laravel запускается автоматически при запуске сервера, мы можем включить службу с помощью следующей команды:

sudo systemctl enable laravel-worker

Эта команда создаст символическую ссылку в соответствующем каталоге для автоматического запуска службы при загрузке.

Запустить службу

Теперь, когда мы создали и активировали файл службы Systemd, мы можем запустить службу с помощью следующей команды:

sudo systemctl start laravel-worker

Эта команда запустит обработчик очереди Laravel как службу Systemd. Вы можете убедиться, что сервис работает правильно, проверив его статус:

sudo systemctl status laravel-worker

Эта команда отобразит информацию о службе, включая ее текущий статус и все последние записи реестра.

Проверить сервис

Когда служба запущена, вы можете управлять ею с помощью стандартных команд Systemd. Вот несколько распространенных команд, которые вы можете использовать для управления рабочим сервисом Laravel с очередями:

  • sudo systemctl stop laravel-worker: эта команда остановит службу.
  • sudo systemctl restart laravel-worker: эта команда перезапустит службу.
  • sudo systemctl disable laravel-worker: эта команда отключит автоматический запуск службы при загрузке.
  • sudo systemctl status laravel-worker: эта команда отобразит статус службы, включая то, запущена она или остановлена, а также любые последние записи в реестре.

Заключение

Запуск воркеров в очереди Laravel с помощью Systemd — отличный способ убедиться, что фоновые процессы всегда работают гладко и эффективно в производственных средах. Создав файл службы Systemd и разрешив его запуск, вы можете автоматизировать процесс запуска и остановки обработчика очереди, упрощая управление и контроль.

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

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.