Поради як безпечно налаштувати сервер на продакшені
приховати 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 = TrueCSRF_COOKIE_SECURE = True
SECURE_SSL_REDIRECT = True
Django HSTS Settings
# HSTS settings
SECURE_HSTS_SECONDS = 31536000 # 1 yearSECURE_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 migratepython manage.py shell
from django.contrib.contenttypes.models import ContentType
ContentType.objects.all().delete()python manage.py loaddata fixture/whole.json
Джерела
SQLite -> other DB