# Продакшен развертывание с nginx ## Новые команды ### `make build-prod` **Расширенная сборка для продакшена с автоматической настройкой nginx** Команда выполняет: 1. **Сборка Docker образов** для продакшена 2. **Проверка и установка nginx** (если не установлен) 3. **Проверка и установка certbot** (если не установлен) 4. **Создание конфигурации nginx** для проксирования: - `http://80` → `https://443` (редирект) - `https://links.shareon.kr/` → `http://localhost:3000` (Next.js frontend) - `https://links.shareon.kr/api/` → `http://localhost:8000` (Django API) - `https://links.shareon.kr/admin/` → `http://localhost:8000` (Django admin) 5. **Активация конфигурации** и перезапуск nginx ### `make ssl-cert` **Автоматическое получение SSL сертификата от Let's Encrypt** Использует certbot для получения сертификата для доменов: - `links.shareon.kr` - `sharon.kr` ### `make deploy-full` **Полное развертывание в продакшен с SSL** Выполняет полный цикл развертывания: 1. `make build-prod` - сборка и настройка nginx 2. `make up-prod` - запуск контейнеров 3. `make migrate` - выполнение миграций БД 4. `make ssl-cert` - получение SSL сертификата ## Схема проксирования ``` Internet → nginx:443 (SSL) → localhost:3000 (Frontend) → localhost:8000 (API/Admin) ``` ### Маршрутизация | URL | Назначение | Порт | |---------------------------------------|---------------------|-------| | `https://links.shareon.kr/` | Next.js Frontend | 3000 | | `https://links.shareon.kr/api/` | Django REST API | 8000 | | `https://links.shareon.kr/admin/` | Django Admin | 8000 | | `https://links.shareon.kr/static/` | Django Static files | 8000 | | `https://links.shareon.kr/media/` | Django Media files | 8000 | ## Использование ### Первичное развертывание ```bash make deploy-full ``` ### Обновление кода ```bash git pull make build-prod make up-prod make migrate ``` ### Только обновление SSL сертификата ```bash make ssl-cert ``` ## Безопасность Nginx конфигурация включает: - Автоматический редирект HTTP → HTTPS - HSTS заголовки - Защитные заголовки (X-Frame-Options, X-Content-Type-Options, X-XSS-Protection) - Современные SSL протоколы (TLS 1.2, TLS 1.3) ## Требования - Ubuntu/Debian сервер - sudo доступ для установки nginx/certbot - Настроенные DNS записи для доменов - Открытые порты 80 и 443