Supervisor — это система клиент/сервер, при помощи которой пользователь (администратор) может контролировать подключенные процессы в системах типа UNIX. Инструмент создает процессы в виде под-процессов от своего имени, поэтому имеет полный контроль над ними. В основном Supervisor служит для инициализации, автозапуска, управления процессом. Это простой и достаточно мощный инструмент для контроля процессов. С правильной настройкой он может обеспечить бесперебойную работу вашего веб-сервиса.
Supervisor состоит из серверной части под названием supervisord, которая создает и управляет всеми процессами, и системного/веб-интерфейса supervisorctl для управления и мониторинга supervisord.
На этом думаю хватит, за более подробной информацией сюда http://supervisord.org/introduction.html.
Ниже приведенная информация актуальна для Debian 9.
Выполняем установку:
sudo apt-get install supervisor
Теперь перейдём к файлам конфигураций.
Главный файл конфигурации находится по адресу /etc/supervisor/supervisord.conf.
Но нас больше интересует директория /etc/supervisor/conf.d, в которой мы будем создавать отдельные файлы конфигураций. Лучше сразу проверить, подключаются ли конфиги из этой директории, для этого открываем файл /etc/supervisor/supervisord.conf и ищем там следующие строчки:
[include]
files = /etc/supervisor/conf.d/*.conf
Если закомментировано - раскомментировать, если нет - добавить.
Запускаем все процессы supervisor:
sudo supervisorctl start all
Супер визор запущен! Теперь нужно создать файл конфигурации для процесса, которым мне надо управлять. Переходим в директорию /etc/supervisor/conf.d и создаём там файл comments-worker.conf это и будет конфиг для моего процесса.
Открываем файл на редактирование и пишем (все на моём примере):
[program:comments-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/master/data/www/laravel-test.local/site/artisan queue:work redis --queue=comments --sleep=3 --tries=3
autostart=true
autorestart=true
user=new_user_2
numprocs=2
stdout_logfile=/var/www/master/data/www/laravel-test.local/site/worker.log
stopwaitsecs=3600
Разберём данный файл конфигурации:
[program:comments-worker] - comments-worker в данном случае это название воркера, который будет запущен для процесса и к которому будут относиться все последующие параметры секции.
numprocs - кол-во воркеров которые будут запущены для данного процесса.
process_name - шаблон именования воркеров.
command - команда которая запускает нужный процесс. В моём случае я запускаю процесс слушателя очереди на Redis.
autostart - авто запуск процесса при запуске supervisor.
autorestart - перезапуск воркера, если тот по какой-то причине упал.
user - запуск процесса под определенным пользователем.
stdout_logfile - путь к файлу логов, если не указан или установлен как AUTO - выбирается автоматически, если NONE - файл логов не создаётся.
stopwaitsecs - если процесс будет выполнятся дольше заданного времени, Supervisor убьёт этот процесс.
Каждый раз после редактирования\добавления конфигураций, перезапускаем Supervisor:
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl restart all
В этом небольшом примере, я управляю процессом слежения за очередью на Redis, и с помощью воркера запускаю процесс php artisan queue:work redis --queue=comments --sleep=3 --tries=3
.
Более подробно о командах можно почитать в официальной документации.
Так как это только моё первое знакомство с Supervisor, со временем заметка возможно будет дополнена. Если есть замечания или дополнения - обязательно пишите в комментарии.
{{ item.text }}