Supervisor es un monitor de procesos comúnmente utilizado en entornos Linux, este se encarga de detectar las tareas solicitadas y asignarlas en una cola para que se ejecuten, la implementación de este servicio en el facturador es con la intención de que las tareas complejas se ejecuten en segundo plano de manera organizada mediante las colas para no colapsar los recursos de los servidores ni de la aplicación.
{info} Para instalaciones en entornos LAMP debe recurrir a los manuales en la web del framework https://laravel.com/docs/5.7/queues#supervisor-configuration
cd /root/facturadorpro41
docker-compose down
nano docker-compose.yml
nginx1
fpm1
## el numero al final es el que usará en los siguientes pasos
supervisor[numero_proyecto]:
image: rash07/php7.4-supervisor
working_dir: /var/www/html
volumes:
- ./:/var/www/html
- ./supervisor.conf:/etc/supervisor/conf.d/supervisor.conf
restart: always
resultando como el siguiente ejemplo:
version: '3'
services:
nginx1:
image: rash07/nginx
working_dir: /var/www/html
environment:
VIRTUAL_HOST: facturalo.pro, *.facturalo.pro
volumes:
- ./:/var/www/html
- $PATH_INSTALL/proxy/fpms/$DIR:/etc/nginx/sites-available
restart: always
fpm1:
image: rash07/php-fpm:2.0
working_dir: /var/www/html
volumes:
- ./ssh:/root/.ssh
- ./ssh:/var/www/.ssh
- ./:/var/www/html
restart: always
mariadb1:
image: mariadb:10.5.6
environment:
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_PORT_HOST=${MYSQL_PORT_HOST}
volumes:
- mysqldata1:/var/lib/mysql
ports:
- "${MYSQL_PORT_HOST}:3306"
restart: always
redis1:
image: redis:alpine
volumes:
- redisdata1:/data
restart: always
scheduling1:
image: rash07/scheduling
working_dir: /var/www/html
volumes:
- ./:/var/www/html
restart: always
supervisor1:
image: rash07/php7.4-supervisor
working_dir: /var/www/html
volumes:
- ./:/var/www/html
- ./supervisor.conf:/etc/supervisor/conf.d/supervisor.conf
restart: always
networks:
default:
external:
name: proxynet
volumes:
redisdata1:
driver: "local"
mysqldata1:
driver: "local"
nano supervisor.conf
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/html/artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
user=root
numprocs=8
redirect_stderr=true
stdout_logfile=/var/www/html/storage/logs/supervisor.log
stopwaitsecs=3600
nano .env
QUEUE_CONNECTION=database
docker-compose up -d
php artisan config:cache ; php artisan cache:clear
service supervisor start
supervisorctl reread
supervisorctl update
supervisorctl start all
{info} en caso de realizar modificaciones en el archivo supervisor.conf utilizar posteriormente los comandos del pto. 20