Для подготовки django для работы на сервере нужно поправить несколько файлов:
dganjo_project/settings.py - файл настроек самого проекта
www.conf - файл настроек nginx для сайта
/etc/systemd/system/gunicorn.service - настроим в systemd gunicorn нужен для передачи веб соединения непосредственно самому проекту
dganjo_project/settings.py:
#DEBUG = True
DEBUG = False
ALLOWED_HOSTS = ["192.168.0.9", "localhost", "dotty.su", "www.dotty.su"]
# Forbidden (403) CSRF verification failed
CSRF_TRUSTED_ORIGINS = ['https://*.dotty.su','https://*.127.0.0.1']
www.conf:
server {
listen 80;
listen 443 ssl;
server_name www.dotty.su dotty.su;
location = /favicon.ico {
access_log off;
log_not_found off;
} # указываем серверу игнорировать проблемы, связанные со значком веб-страницы
location ~ /.well-known {
root /usr/share/nginx/html;
allow all;
}
if ($scheme = 'http') {
return 301 https://$host$request_uri;
}
#ssl settings:
ssl_certificate .../fullchain.pem;
ssl_certificate_key .../privkey.pem;
...
# log
error_log /var/log/nginx/error-dotty.log;
access_log /var/log/nginx/access-dotty.log main;
# путь к файлам сайта
root /var/www/html/dotty.su;
# задаем параметр перенаправления всех запросов на созданный gunicorn socket
# location / {
# include proxy_params;
# proxy_pass http://unix:/run/gunicorn.sock;
# }
location / {
# Адрес и порт бэкенда (например, Gunicorn)
proxy_pass http://172.17.0.1:8000; # адрес доступный из докера
# Передача реального хоста в Django
proxy_set_header Host $http_host;
# IP-адрес клиента
proxy_set_header X-Forwarded-For $remote_addr;
# Исходный протокол (HTTP/HTTPS)
proxy_set_header X-Forwarded-Proto $scheme;
# Максимальный размер загружаемых данных
client_max_body_size 20m;
}
location /static/ {
try_files $uri $uri/ =404; # Возвращает 404, если файл не найден
}
location ~* ^.+\.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|pdf|tar|js|webm)$ {
expires modified +1w;
}
}
/etc/systemd/system/gunicorn.service:
[Unit]
Description=gunicorn daemon
#Requires=gunicorn.socket
After=network.target
[Service]
User=user
Group=user_group
WorkingDirectory=/django/admin#ExecStart=/django/venv/bin/gunicorn --workers 5 --bind unix:/run/gunicorn.sock admin.wsgi:application
ExecStart=/django/venv/bin/gunicorn --workers 5 --bind 0.0.0.0:8000 admin.wsgi:application
[Install]
WantedBy=multi-user.target
* Настройка Nginx и Gunicorn для Django-проекта: от установки Python до SSL
* Настройка nginx для react и django rest api
* Forbidden (403) CSRF verification failed
* Как запустить сайт с Docker, Nginx и Certbot: полный гайд
* Docker-compose для создания веб-сервера