Bash Laravel Scripting Servidores

Laravel 5.2 configurar queue:work con Supervisor en VPS con Ubuntu 14.04

Septiembre 2, 2016

[AdSense-A]

Hola a todos!, en este artículo veremos como configurar Laravel 5.2 queue:worker en un servidor VPS en producción con Ubuntu 14.04.

Primero por qué queue:worker y no queue:listen, la diferencia radica en la velocidad y la prevención de sobrecarga de CPU de nuestro VPS a la hora de utilizar queue:listen

Al ejecutar queue:listen en realidad Laravel comienza a ejecutar el siguiente loop

"/usr/bin/php5" artisan queue:work  --queue="default" --delay=0 --memory=128 --sleep=3 --tries=0 --env=local

Esto hace que Laravel botee cada vez, lo cual se reduce a una sobrecarga innecesaria de la CPU al utilizar Laravel para ejecutr un comando dentro de un loop.

A diferencia de queue:work, donde éste comando utiliza sólo un proceso de PHP evitando utilizar Laravel para que llame al mismo comando queue:work desde queue:listen, como podemos darnos cuenta en el loop mostrado anteriormente.

Una vez sabido esto, manos a la obra 🙂

1.- Instalaremos supervisor

# Debian / Ubuntu:
$ sudo apt-get install supervisor

2.- Ahora crearemos un archivo llamado laravel_queue.conf (pueden ponerle el nombre de su proyecto si es que tiene más de un proyecto Laravel en el mismo servidor), éste archivo debemos crealo en /etc/supervisor/conf.d/

# Debian / Ubuntu:
$ sudo nano /etc/supervisor/conf.d/project_queue.conf

3.- Dentro de este archivo colocaremos la configuración que necesita supervisor, entre ello el comando a ejecutar

[program:project_queue]
process_name=%(program_name)s_%(process_num)02d
command=php /home/user/midominio.com/artisan queue:work --queue=default --env=production --sleep=3 --tries=3 --daemon
autostart=true
autorestart=true
numprocs=1
stderr_logfile=/home/user/midominio.com/queue_error.log
stdout_logfile=/home/user/midominio.com/queue_worker.log

4.- Guardamos el archivo y le damos permisos al archivo

$ sudo chmod +x /etc/supervisor/conf.d/project_queue.conf

5.- Actualizamos supervisor para que lea el nuevo archivo de configuración

$ sudo supervisorctl reread

6.- Y hacemos que comience el nuevo proceso agregado

$ sudo supervisorctl update

[AdSense-A]

7.- Para terminar podemos ejecutar el siguiente comando para verificar que nuestro proceso está en funcionamiento:

$ sudo supervisorctl

Obtendremos algo como lo siguiente:

$ project_queue:project_queue_00  RUNNING   pid 1161, uptime 11 days, 14:27:00  
$ supervisor>

Importante y como recomendación si realizan cambios a su archivo .env posterior a comenzar el proceso con supervisor, les recomiendo que una vez modifiquen su archivo .env, detengan supervisor y lo comiencen a ejecutar nuevamente con los siguientes comandos:

$ sudo supervisorctl stop all
$ sudo supervisorctl start all

Eso es todo, espero le sirva a más de alguno 😀

Comentarios

comentarios

Related Articles

Read previous post:
Forzar dominio a utilizar www en NGINX

[AdSense-A] Para forzar un dominio a utilizar www dentro de NGINX, debemos agregar el siguiente bloque dentro de nuestro archivo...

Close