Supervisor на VPS: управление Python-процессами — иллюстрация к статье Storm Cloud Blog, категория DevOps
Supervisor на VPS: управление Python-процессами — иллюстрация к статье Storm Cloud Blog, категория DevOps
DevOps·2 мин··

Supervisor на VPS: управление Python-процессами

Supervisor на VPS: автозапуск Celery, Gunicorn, workers. Альтернатива systemd для нескольких процессов одного приложения.

Краткий ответ: Supervisor следит за группой процессов: перезапуск при падении, единый лог, supervisorctl restart all. Удобен когда одному приложению нужны web + worker + beat.

systemd — один unit = один процесс. Supervisor — один конфиг на стек Django + Celery + RabbitMQ consumer.


Установка

sudo apt install supervisor -y
sudo systemctl enable supervisor

Конфиг Gunicorn + Celery

; /etc/supervisor/conf.d/myapp.conf
[program:gunicorn]
command=/var/www/app/venv/bin/gunicorn --bind 127.0.0.1:8000 config.wsgi:application
directory=/var/www/app
user=deploy
autostart=true
autorestart=true
stderr_logfile=/var/log/supervisor/gunicorn.err.log
stdout_logfile=/var/log/supervisor/gunicorn.out.log

[program:celery]
command=/var/www/app/venv/bin/celery -A config worker -l info
directory=/var/www/app
user=deploy
autostart=true
autorestart=true
numprocs=1
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl status

supervisorctl команды

sudo supervisorctl restart gunicorn
sudo supervisorctl tail -f celery stderr
sudo supervisorctl stop all

Supervisor vs systemd vs PM2

Supervisor systemd PM2
Python Отлично Хорошо Node-focused
Несколько процессов Да Несколько units Да
Стандарт Linux Дополнение Нативный npm

Node.js — PM2. Go/Rust — systemd.


Итог

Supervisor упрощает Python-стек с воркерами. Один конфиг — web + queue + scheduler.

VPS от 2 GB — StormNet Cloud. Flask — Flask deploy.

Частые вопросы

Supervisor или systemd для Python на VPS?

systemd — стандарт для одного процесса. Supervisor удобнее когда web + celery + beat в одном конфиге.

Нужен ли Supervisor для Gunicorn?

Не обязателен — Gunicorn можно запустить через systemd. Supervisor полезен при нескольких связанных workers.