Ejecutar el trabajador de la cola de laravel como servicio Systemd

Ejecutar el trabajador de la cola de laravel como servicio Systemd

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

Si bien Laravel proporciona una interfaz de línea de comandos simple para administrar los trabajadores de la cola, puede ser un desafío mantenerlos en funcionamiento continuamente en entornos de producción. En este artículo, exploraremos cómo ejecutar trabajadores de la cola de laravel usando Systemd, un sistema init popular para Linux.

Requisitos previos

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

  • Un sistema operativo basado en Linux
  • PHP versión 7.2 o superior
  • El marco de Laravel instalado y configurado
  • El sistema init systemd instalado y configurado

Creación de un servicio Systemd

El primer paso para ejecutar los trabajadores de la cola de Laravel con Systemd es crear un archivo de servicio Systemd. Este archivo definirá el comportamiento del trabajador de la cola y cómo se debe iniciar, detener y reiniciar.

Crear un nuevo archivo en el "/Etc/systemd/system/" directorio con un .Extensión del servicio, como "Laravel-Worker.servicio".

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

Agregue el siguiente contenido al archivo:

[Unidad] Descripción = Laravel Queue Worker After = Red.Target [Service] user = www-data group = www-data reinSart = Always WorkingDirectory =/Path/to/Your/Laravel Execstart =/usr/bin/Php Artisan Queue: Work--sleep = 3 --tries = 3 [[ Install] WantedBy = Multi-user.objetivo
12345678910111213[Unidad] Descripción = Laravel Queue Workersafter = Red.Target [Service] user = www-dataGroup = www-datarStart = AlwaysWorkingDirectory =/Path/to/Your/LaravelExecStart =/usr/bin/php multi usuario.objetivo

Reemplazar "/Path/To/Your/Laravel" con su directorio de aplicaciones de Laravel. También coloque su comando artesanal en "Execstart" opción.

Desglosemos este archivo y lo que significa 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 posterior especifica que el servicio debe comenzar después de que se haya alcanzado el objetivo de la red.
  • Servicio: Esta sección especifica los detalles de cómo se debe ejecutar el servicio. Los parámetros de usuario y grupo especifican el usuario y el grupo en el que el servicio debe ejecutarse. El "Reanudar" El parámetro especifica que el servicio debe reiniciarse si se detiene o se bloquea. El "Execstart" El parámetro especifica el comando que debe ejecutarse para iniciar el trabajador de la cola. En este caso, estamos utilizando el binario PHP para ejecutar la cola: el comando de trabajo con el --dormir = 3 y --intenta = 3 opción. Estas opciones especifican que el trabajador de la cola debe dormir durante 3 segundos entre cada trabajo y debe volver a intentar los trabajos fallidos hasta 3 veces antes de marcarlos como fallido.
  • 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 objetivo de múltiples usuarios, que es el objetivo 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 Systemd Daemon. Debe ejecutar este comando cada vez, realiza cualquier cambio en el archivo de servicio.

SUDO SystemCtl-Daemon-Re-Re-Reload  

Para garantizar que el trabajador de la cola de laravel comience automáticamente cuando el servidor se inicia, podemos habilitar el servicio utilizando el siguiente comando:

sudo systemCtl habilita laravel-worker  

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

Comenzando el servicio

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

sudo systemctl start laravel-worker  

Este comando iniciará el trabajador de la cola de Laravel como un servicio Systemd. Puede verificar que el servicio se ejecute correctamente verificando 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.

Controlar el servicio

Una vez que el servicio se ejecuta, puede controlarlo utilizando los comandos SystemD estándar. Aquí hay algunos comandos comunes que puede usar para controlar el servicio de trabajadores de la cola Laravel:

  • sudo systemctl detener a laravel-trabajador: Este comando detendrá el servicio.
  • sudo systemctl reiniciar laravel-worker: Este comando reiniciará el servicio.
  • sudo systemctl deshabilitar Laravel-Worker: Este comando deshabilitará el servicio que comience automáticamente en el arranque.
  • sudo systemctl status laravel-worker: Este comando mostrará el estado del servicio, incluido si se está ejecutando o detenido, y cualquier entrada de registro reciente.

Conclusión

Ejecutar trabajadores de la cola de laravel con SystemD es una excelente manera de garantizar que sus trabajos de fondo siempre funcionen sin problemas y eficientemente en entornos de producción. Al crear un archivo de servicio Systemd y habilitarlo en el arranque, puede automatizar el proceso de iniciar y detener el trabajador de la cola, lo que facilita la administración y el control.

En este artículo, hemos cubierto los pasos básicos para crear un archivo de servicio Systemd para el trabajador de la cola de Laravel, iniciar el servicio, habilitarlo en el arranque y controlarlo utilizando comandos Systemd. Con este conocimiento, puede administrar y escalar con confianza sus aplicaciones Laravel con facilidad.