Ответ найден в документах Laravel (решение работает для любого постоянно работающего фонового процесса , а не только PHP и Laravel). руководитель!
Настройка супервизора
Файлы конфигурации супервизора обычно хранятся в каталоге /etc/supervisor/conf.d. В этом каталоге вы можете создать любое количество конфигурационных файлов, которые сообщают супервизору, как следует отслеживать ваши процессы. Например, давайте создадим файл laravel-worker.conf, который запускает и отслеживает процесс queue:work:
Начальный супервайзер
После создания файла конфигурации вы можете обновить конфигурацию Supervisor и запустить процессы с помощью следующих команд:
sudo supervisorctl перечитать
обновление sudo supervisorctl
sudo supervisorctl запустить laravel-worker: *
Это даже поможет мне запустить столько процессов, сколько я хочу, с помощью одного файла конфигурации и одной команды. Опять же, из документов Laravel:
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /home/forge/app.com/artisan queue:work sqs --sleep=3 --tries=3
autostart=true
autorestart=true
user=forge
numprocs=8
redirect_stderr=true
stdout_logfile=/home/forge/app.com/worker.log
При вызове sudo supervisorctl start laravel-worker:*
запустится 8 фоновых процессов, которые также перезапускаются в случае ошибки.
Если я просто хочу перезапустить с новой выпущенной версией, я напрямую вызываю команду restart
:
supervisorctl restart laravel-worker:*
Я просто интегрирую это как задачу Deployer в свой конвейер CI/CD.
person
Willian Schneider
schedule
23.10.2016
SIGHUP kill -1
- person Clay   schedule 23.10.2016