Cómo ejecutar Laravel Queue Worker como un servicio Systemd

2 mar 2023 4 min di lettura
Cómo ejecutar Laravel Queue Worker como un servicio Systemd
Indice dei contenuti

Introducción

Laravel es un marco de aplicación web PHP popular que simplifica el proceso de creación de aplicaciones web modernas y escalables. Una de las principales características de Laravel es su capacidad para administrar trabajos en segundo plano a través de su sistema de colas. Los trabajadores en cola de Laravel están diseñados para procesar trabajos en cola de forma asincrónica en segundo plano, lo que puede mejorar en gran medida el rendimiento y la capacidad de respuesta de su aplicación web.

Laravel Queue Worker es un componente del marco PHP Laravel que le permite ejecutar trabajos de forma asíncrona dentro de su aplicación.

Los trabajos son tareas que tardan en completarse y pueden ejecutarse independientemente del resto de la aplicación. Estos trabajos pueden ser por ejemplo enviar correos electrónicos, procesar imágenes, generar informes, etc.

Laravel Queue Worker te permite poner estos trabajos en una cola y ejecutarlos de forma asíncrona, en segundo plano, sin bloquear la ejecución del resto de la aplicación. De esta manera, la aplicación puede continuar funcionando normalmente, incluso mientras se ejecutan trabajos en segundo plano.

El Laravel Queue Worker es responsable de administrar la cola de trabajos y ejecutar los trabajos en sí. Se ejecuta como un proceso separado del resto de la aplicación y se puede configurar para ejecutar varios procesos simultáneamente para manejar un gran volumen de trabajo.

Laravel Queue Worker admite varios controladores de cola, como base de datos, Redis, Amazon SQS y más. Esto le permite integrar fácilmente el sistema de colas de Laravel con diferentes servicios de colas externos.

En resumen, Laravel Queue Worker es un componente fundamental para el procesamiento asincrónico de trabajos en Laravel, lo que permite mejorar el rendimiento y la escalabilidad de las aplicaciones web que utilizan este framework.

requisitos previos

Antes de comenzar, debe asegurarse de que su servidor cumpla con los siguientes requisitos:

  • Un sistema operativo basado en Linux
  • PHP versión 7.2 o superior
  • El framework Laravel instalado y configurado
  • El sistema de inicio Systemd instalado y configurado

Crear un servicio Systemd

El primer paso para ejecutar colas de trabajo de Laravel con Systemd es crear un archivo de servicio de Systemd. Este archivo definirá el comportamiento del trabajador en cola y cómo debe iniciarse, detenerse y reiniciarse.

Cree un nuevo archivo en el directorio "/etc/systemd/system/" con una extensión.service, por ejemplo , "laravel-worker.service".

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

Agregue el siguiente contenido al archivo:

[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

Reemplace "/ruta/a/su/laravel" con el directorio de su aplicación Laravel. También configure su comando artesano en las opciones "ExecStart".

Analicemos este archivo y el significado de cada sección:

  • Unidad: Esta sección define la unidad de servicio y proporciona una breve descripción de lo que hace. El parámetro Después especifica que el servicio debe comenzar después de que se haya alcanzado el destino de la red.
  • Servicio: esta sección especifica los detalles sobre cómo ejecutar el servicio. Los parámetros Usuario y Grupo especifican el usuario y el grupo bajo los cuales se debe ejecutar el servicio. El parámetro "Reiniciar" especifica que el servicio debe reiniciarse en caso de que se apague o se cuelgue. El parámetro "ExecStart" especifica el comando que debe ejecutarse para iniciar el operador de cola. En este caso, estamos usando el binario php para ejecutar el comando queue:work con las opciones --sleep=3 y --tries=3. Estas opciones especifican que el trabajador en cola debe estar inactivo durante 3 segundos entre cada trabajo y debe volver a intentar los trabajos fallidos hasta 3 veces antes de marcarlos como fallidos.
  • Instalar: esta sección especifica los niveles de ejecución en los que se debe habilitar el servicio. El parámetro WantedBy especifica que el servicio debe habilitarse en el destino multiusuario, que es el destino predeterminado para la mayoría de las distribuciones de Linux.

Guarde el archivo y salga del editor.

Habilitar el servicio

Primero ejecute el siguiente comando para recargar el servicio del demonio systemd. Debe ejecutar este comando cada vez que realice cambios en el archivo de servicio.

sudo systemctl daemon-reload

Para asegurarnos de que el trabajador de la cola de Laravel se inicie automáticamente cuando se inicie el servidor, podemos habilitar el servicio con el siguiente comando:

sudo systemctl enable laravel-worker

Este comando creará un enlace simbólico en el directorio apropiado para iniciar automáticamente el servicio al arrancar.

iniciar el servicio

Ahora que hemos creado y activado el archivo de servicio Systemd, podemos iniciar el servicio usando el siguiente comando:

sudo systemctl start laravel-worker

Este comando iniciará el trabajador de la cola de Laravel como un servicio de Systemd. Puedes comprobar que el servicio funciona correctamente comprobando su estado:

sudo systemctl status laravel-worker

Este comando mostrará información sobre el servicio, incluido su estado actual y cualquier entrada de registro reciente.

Consulta el servicio

Una vez que el servicio se está ejecutando, puede controlarlo mediante los comandos estándar de Systemd. Aquí hay algunos comandos comunes que puede usar para controlar el servicio de trabajo en cola de Laravel:

  • sudo systemctl stop laravel-worker: este comando detendrá el servicio.
  • sudo systemctl restart laravel-worker: este comando reiniciará el servicio.
  • sudo systemctl disable laravel-worker: este comando deshabilitará el inicio automático del servicio en el arranque.
  • sudo systemctl status laravel-worker: este comando mostrará el estado del servicio, incluso si se está ejecutando o detenido y las entradas de registro recientes.

Conclusión

Ejecutar trabajadores en cola de Laravel con Systemd es una excelente manera de garantizar que los procesos en segundo plano siempre se ejecuten sin problemas y de manera eficiente en entornos de producción. Al crear un archivo de servicio de Systemd y permitir que se inicie, puede automatizar el proceso de iniciar y detener el trabajador de la cola, lo que facilita su administración y control.

En este artículo, cubrimos los pasos básicos para crear un archivo de servicio de Systemd para el trabajador de la cola de Laravel, iniciar el servicio, permitir que se inicie y controlarlo mediante los comandos de Systemd. Con este conocimiento, puede administrar y escalar con confianza sus aplicaciones Laravel con facilidad.

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.