Розгортання у Production
Нижче наведено приклад схеми розгортання згенерованого сайту школи на VPS. Команди й шляхи потрібно адаптувати до конкретного сервера. Публічний лендінг фреймворку має окрему інфраструктуру; цей посібник його не розгортає.
Перед запуском налаштуйте DATABASES у згенерованому config/settings.py: генератор читає DB_ENGINE і DB_NAME, а параметри користувача, пароля й хоста для зовнішньої БД потрібно додати самостійно. Встановіть драйвер обраної СУБД і Gunicorn; передайте DEBUG=False, DJANGO_SECRET_KEY, ALLOWED_HOSTS та інші параметри через середовище. Після міграцій виконайте python manage.py setup_school_roles, python manage.py collectstatic --noinput і python manage.py check --deploy.
🏗️ Схема розгортання
[Інтернет / Відвідувачі]
│
▼ HTTPS (Порт 443)
[Nginx Веб-сервер]
├── /static/ ──────> Директорія статичних файлів
├── /media/ ──────> Завантажені документи, меню та фото
├── / ──────> React SPA (dist/index.html)
└── /api/, /admin/ ─> Gunicorn (WSGI) ──> Django (Порт 8000)
│
▼
[Налаштована СУБД]
1. Налаштування Gunicorn як Systemd сервісу
Створіть файл конфігурації /etc/systemd/system/school.service:
[Unit]
Description=Gunicorn daemon for School Framework Website
After=network.target
[Service]
User=www-data
Group=www-data
WorkingDirectory=/var/www/my_school
ExecStart=/var/www/my_school/.venv/bin/gunicorn \
--workers 3 \
--bind 127.0.0.1:8000 \
config.wsgi:application
[Install]
WantedBy=multi-user.target
Запустіть сервіс:
2. Налаштування Nginx
Створіть конфігурацію сайту /etc/nginx/sites-available/school:
server {
server_name school1.kyiv.ua www.school1.kyiv.ua;
# Збірка React фронтенду
root /var/www/my_school/frontend/dist;
index index.html;
client_max_body_size 50M;
# Статичні файли Django (адмінка, стилі)
location /static/ {
alias /var/www/my_school/static/;
expires 30d;
add_header Cache-Control "public, no-transform";
}
# Завантажені документи (статути, меню, фото)
location /media/ {
alias /var/www/my_school/media/;
expires 7d;
}
# API та Адмінка передаються на Gunicorn
location ~ ^/(api|admin)/ {
proxy_pass http://127.0.0.1:8000;
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;
}
# SPA маршрутизація для всіх інших сторінок
location / {
try_files $uri $uri/ /index.html;
}
}
Після налаштування DNS і сертифіката перевірте HTTPS та лише потім відкривайте сайт назовні. Приклад команд для Certbot: