Как отлаживать связку Nginx+Supevisor+Gunicorn+Django?

Связка Nginx + Supervisor + Gunicorn + Django является популярным и мощным комбинированным стеком для разворачивания и управления Django-приложениями. Она предлагает высокую производительность, масштабируемость и надежность.

Для отладки данной связки необходимо следовать нескольким шагам.

Шаг 1: Установка и настройка Nginx
Nginx — это популярный веб-сервер, который будет обрабатывать входящие запросы и перенаправлять их на Gunicorn или статические файлы. Для установки Nginx выполните следующие команды:

sudo apt update
sudo apt install nginx

После установки вам понадобится настроить Nginx для проксирования запросов на Gunicorn. Создайте конфигурационный файл в каталоге /etc/nginx/sites-available/, например myproject.conf, и отредактируйте его следующим образом:

server {
    listen 80;
    server_name your_domain_or_ip;
    location / {
        proxy_pass http://unix:/path/to/your/project.sock;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Не забудьте заменить your_domain_or_ip на ваш домен или IP-адрес и /path/to/your/project.sock на путь к сокету вашего проекта.

После внесения изменений сохраните и закройте файл. Затем создайте символическую ссылку на этот файл в каталоге /etc/nginx/sites-enabled/:

sudo ln -s /etc/nginx/sites-available/myproject.conf /etc/nginx/sites-enabled/

Теперь перезапустите Nginx, чтобы применить изменения:

sudo systemctl restart nginx

Шаг 2: Установка и настройка Gunicorn
Gunicorn - это WSGI-сервер (Web Server Gateway Interface), который отвечает за запуск и обработку запросов вашего Django-приложения. Установите Gunicorn через pip:

pip install gunicorn

Затем создайте файл gunicorn.service в каталоге /etc/systemd/system/ и отредактируйте его следующим образом:

[Unit]
Description=Gunicorn daemon
After=network.target

[Service]
User=your_username
Group=www-data
WorkingDirectory=/path/to/your/project
ExecStart=/path/to/your/virtualenv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/path/to/your/project.sock your_project.wsgi:application

[Install]
WantedBy=multi-user.target

Установите сервис через systemctl:

sudo systemctl start gunicorn
sudo systemctl enable gunicorn

Шаг 3: Установка и настройка Supervisor
Supervisor является системой управления процессами, которая гарантирует, что Gunicorn всегда работает и восстанавливается после сбоев. Установите Supervisor через pip:

pip install supervisor

Создайте конфигурационный файл для Supervisor в каталоге /etc/supervisor/conf.d/, например myproject.conf, и отредактируйте его следующим образом:

[program:gunicorn]
command=/path/to/your/virtualenv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/path/to/your/project.sock your_project.wsgi:application
directory=/path/to/your/project
user=your_username
autostart=true
autorestart=true
redirect_stderr=true

Не забудьте заменить /path/to/your/virtualenv, /path/to/your/project и your_username на соответствующие значения.

Перезапустите Supervisor, чтобы применить изменения:

sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl restart gunicorn

После завершения этих шагов связка Nginx + Supervisor + Gunicorn + Django должна быть правильно настроена и готова к отладке вашего Django-приложения.