Что такое Supervisor?
Запуск процессов в supervisor
Использование Supervisor удобно при работе с постоянно запущенными процессами на VPS или выделенном сервере. Он позволяет автоматизировать запуск и контроль служб, поддерживая стабильную работу проектов.
Supervisor — это менеджер процессов, который значительно упрощает управление длительно работающими программами и предоставляет удобный интерфейс. Он состоит из серверной части под названием supervisord, которая создаёт и контролирует процессы, и интерфейса supervisorctl (системного или веб), предназначенного для управления и мониторинга supervisord.
Установка
В Debian/Ubuntu Supervisor можно установить из репозитория:
apt-get install supervisor
После установки Supervisor необходимо настроить и добавить программы или процессы, которыми он будет управлять. Файл конфигурации находится по пути /etc/supervisor/supervisord.conf (в Ubuntu и Debian) или /etc/supervisord.conf — в других системах.
Чтобы добавить новый процесс (воркер), добавьте в конфигурацию следующий код:
[program:worker]
command=/usr/bin/php /var/www/worker.php
stdout_logfile=/var/log/worker.log
autostart=true
autorestart=true
user=www-data
stopsignal=KILL
numprocs=1
Параметры:
[program:worker]
— имя процесса, к которому относятся все параметры секции;command=/usr/bin/php /var/www/worker.php
— путь к исполняемому файлу;stdout_logfile=/var/log/worker.log
— путь к файлу для вывода консоли;autostart=true
— автоматический запуск процесса при старте Supervisor;autorestart=true
— автоматический перезапуск при сбое;user=www-data
— пользователь, от имени которого запускается процесс;stopsignal=KILL
— сигнал для остановки;numprocs=1
— количество экземпляров процесса.
После добавления новых процессов необходимо перезапустить Supervisor:
/etc/init.d/supervisor restart
Supervisor позволяет включить веб-интерфейс supervisorctl, который активируется через конфигурационный файл. Для этого нужно изменить секцию [inet_http_server], указав корректные имя пользователя и пароль:
[inet_http_server]
port=127.0.0.1:9001
;username=some_user_name
;password=some_password
Дополнительные возможности
В Supervisor встроен механизм мониторинга событий, который позволяет получать уведомления об ошибках:
[eventlistener:memmon]
command=memmon -a 200MB -m error@site.com
events=TICK_60