Устанавливаем и настраиваем Supervisor

access_time 2020-04-19 03:09:52

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.user_name }}
access_time 2018-11-01 20:15:22

{{ item.text }}