Настройка 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-приложение!