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

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

приховати SECRET_KEY

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

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 навіть не обговорюється, але маю сказати

Static Files

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

python manage.py collectstatic

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

якщо його встановлено на продакшен-сервері то треба додати до налаштувань домену

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

 

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