Подписывайтесь:

Блог AST-SoftPro

Gunicorn и Nginx: деплой Python-приложений в продакшн

11.06.2026 5 мин чтения
Gunicorn и Nginx: деплой Python-приложений в продакшн

Введение в деплой Python-приложений

Деплой веб-приложения на Python — это не просто запуск скрипта. Даже самая простая Flask- или Django-обработка требует масштабируемой инфраструктуры: WSGI-сервера, reverse proxy и корректной настройки SSL, логирования и мониторинга. В продакшене нельзя полагаться только на python app.py. Такое решение подойдёт для разработки, но не обеспечит стабильность, безопасность и производительность в условиях реального трафика. Вместо этого используют комбинацию:

  • Gunicorn — WSGI-сервер, управляющий процессами Python-приложения;

  • Nginx — reverse proxy с поддержкой SSL, статических файлов и балансировки нагрузки. В статье описаны этапы настройки этой пары для деплоя в продакшн: от базовой конфигурации до логирования и мониторинга.

Почему Gunicorn?

Gunicorn (Green Unicorn) — это легковесный WSGI-сервер, разработанный специально для Python-приложений. Он не является веб-сервером напрямую, но эффективно управляет процессами приложений через модели 'prefork' или 'gevent'.

Основные преимущества:

  • Простота интеграции с Flask и Django;

  • Поддержка нескольких рабочих процессов (workers) — позволяет масштабироваться под нагрузку;

  • Эффективное использование CPU за счёт асинхронной обработки в режиме --worker-class=gunicorn.worker.gevent.GeventWorker.

Пример запуска Gunicorn:

gunicorn --workers 4 --bind unix:app.sock myproject.wsgi:application

Настройка Nginx как reverse proxy

Nginx не выполняет логику приложения, но он критически важен для:

  • Принятия HTTP-запросов;

  • Передачи их Gunicorn (reverse proxy);

  • Обслуживания статических ресурсов (CSS, JS, изображения);

  • Поддержки HTTPS через SSL-сертификаты.

Базовая конфигурация Nginx

Файл /etc/nginx/sites-available/myapp:

server {
    listen 80;
    server_name example.com www.example.com;

    location /static/ {
        alias /home/app/static/;
    }

    location / {
        proxy_pass http://unix:/path/to/app.sock; # Unix socket от Gunicorn
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Настройка SSL с Let's Encrypt

Безопасность — обязательный элемент продакшн-среды. Использование HTTPS не только повышает доверие, но и защищает данные пользователей.

Шаги:

  1. Установить Certbot (для получения сертификатов от Let’s Encrypt);

  2. Конфигурация Nginx для SSL;

  3. Автоматическое обновление сертификата через cron.

Пример добавления HTTPS в конфигурацию Nginx:

server {
    listen 443 ssl;
    server_name example.com www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    include snippets/ssl-params.conf; # Рекомендованные настройки безопасности

    location / {
        proxy_pass http://unix:/path/to/app.sock;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Логирование в продакшн-среде

Логирование — ключевой элемент диагностики и мониторинга. Без него сложно отслеживать ошибки, анализировать производительность или реагировать на сбои.

Рекомендации:

  1. Разделение логов: Gunicorn + Nginx должны вести свои логи;

  2. Централизованная система: использование syslog или Fluentd для сбора;

  3. Уровень детализации — ERROR, WARNING и INFO в зависимости от среды.

Пример конфигурации gunicorn.conf.py:

loglevel = 'info'
access_logfile = '/var/log/gunicorn/access.log'
error_logfile = '/var/log/gunicorn/error.log'

Мониторинг производительности и доступности

Даже при правильной настройке система может выйти из строя. Поэтому необходим мониторинг.

Что мониторить:

  • Доступность сервиса (HTTP 200 OK);

  • Время ответа;

  • Количество активных процессов Gunicorn;

  • Объём логов в реальном времени. Инструменты: Prometheus + Grafana, или простые скрипты на основе curl и grep.

AI-Помощник