Django deploy налаштування

Поради як безпечно налаштувати сервер на продакшені

приховати SECRET_KEY

Можемо читати з .env, а можемо з окремого файлу (а також перед кожним запуском формувати новий)

.env – інструкція тут , просто з файлу так:

import os
with open(os.path.join(BASE_DIR, ‘secret_key.txt’)) as f:
SECRET_KEY = f.read().strip()

Https налаштування (якщо для сайту вже налаштовано)

# HTTPS settings
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
SECURE_SSL_REDIRECT = True

Django HSTS Settings

# HSTS settings
SECURE_HSTS_SECONDS = 31536000 # 1 year
SECURE_HSTS_PRELOAD = True
SECURE_HSTS_INCLUDE_SUBDOMAINS = True

ALLOWED_HOSTS додаємо тільки ті домени, які використовуємо

ALLOWED_HOSTS = [‘domain.tld’, ‘www.domain.tld’]

DEBUG=False навіть не обговорюється, але маю сказати

Про цю опцію маю попередити – користуйтесь не сервером розробки а, наприклад gunicorn. Бо як правило це відбувається  вже в інтернеті. тут жарти закінчуються зламаними сайтами та купою неприємностей (найлегший випадок – неробочий сайт)

Static Files

STATIC_URL = ‘/static/’
STATIC_ROOT = os.path.join(BASE_DIR, “static/”)

python manage.py collectstatic

локальний NGINX (/etc/nginx/sites-available/)

якщо його встановлено для пришвидшення роботи сайту на продакшен-сервері, то треба додати до налаштувань домену аліас для статичних файлів (як прописано в конфігах) за замовчуванням це тека static у корені проєкту

location /static {
alias /projects/django/domain.tld/static; #Django project’s static files
}

Автоматизована перевірка проєкту

Django має команду для перевірки готовності проєкту до використання в інтернеті

python manage.py check –deploy

Міграція з однієї бази в іншу (наприклад з sqlite до postgresql)

python manage.py dumpdata > data.json

python manage.py makemigrations
python manage.py migrate

python manage.py shell
from django.contrib.contenttypes.models import ContentType
ContentType.objects.all().delete()

python manage.py loaddata fixture/whole.json

 

 

Джерела

toneteaches 

SQLite -> other DB

medium.com

sweetcode.io

 

Залишити відповідь