Настройка Nginx для работы с Django#

1 Убедитесь, что Nginx и Gunicorn установлены:#

sudo apt update sudo apt install nginx python3-pip pip3 install gunicorn

2 Запуск Gunicorn вручную (тестирование)#

Перейдите в папку вашего проекта Django и выполните:

gunicorn --bind 0.0.0.0:8000 myproject.wsgi:application

Замените myproject на имя вашего проекта. Приложение должно быть доступно по адресу http://localhost:8000.

3 Настройка Nginx#

Создайте новый конфигурационный файл Nginx для вашего сайта. Обычно он помещается в /etc/nginx/sites-available/:

sudo nano /etc/nginx/sites-available/myproject

Добавьте следующее содержимое:

server {     
  listen 80;     
  server_name mydomain.com www.mydomain.com;  # Замените на ваше доменное имя или IP      
   location = /favicon.ico { access_log off; log_not_found off; }     
   location /static/ {alias /path/to/your/project/static/;  # Укажите путь к вашим статическим файлам } 
   location /media/ {         alias /path/to/your/project/media/;   # Укажите путь к вашим медиа-файлам }     
   location / {proxy_pass http://127.0.0.1:8000;  # Прокси на 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;         
               proxy_set_header X-Forwarded-Proto $scheme;     } 
   }

4 Символическая ссылка на сайт#

Активируйте новый сайт, создав символическую ссылку:

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

Удалите файл default, если он включен:

sudo rm /etc/nginx/sites-enabled/default

5 Перезагрузка Nginx#

Проверьте корректность конфигурации Nginx:

sudo nginx -t

Перезапустите Nginx:

sudo systemctl restart nginx

6 Сервис для Gunicorn (по желанию)#

Чтобы Gunicorn запускался автоматически как сервис, создайте файл службы:

sudo nano /etc/systemd/system/gunicorn.service

Добавьте следующее содержимое:

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

[Service]
User=your_user  # Замените на вашего пользователя
Group=www-data
WorkingDirectory=/path/to/your/project
ExecStart=/usr/bin/gunicorn --workers 3 --bind unix:/path/to/your/project/myproject.sock myproject.wsgi:application

[Install]
WantedBy=multi-user.target

Активируйте и запустите службу:

sudo systemctl start gunicorn sudo systemctl enable gunicorn

Теперь Nginx будет проксировать запросы к Gunicorn, обрабатывающему ваше Django-приложение!