Обзор развертывания django_client на сервере¶
Предварительные требования¶
Для корректной работы приложения требуются следующие параметры системы и сетевые настройки:
-
Операционная система: Ubuntu или Debian.
-
Права доступа: Права суперпользователя (root) для установки системных пакетов и управления сервисами.
-
Порты:
-
8000— внутренний порт приложения. -
443— внешний порт для HTTPS трафика.
FDQN итоговой панели на домене hostkey.in¶
Для работы веб-интерфейса используется следующий шаблон доменного имени:
| Параметр | Значение |
|---|---|
| Префикс | django |
| Домен | hostkey.in |
| Полный шаблон | django{Server_ID_from_Invapi}.hostkey.in |
Структура файлов и каталогов¶
Основные директории, используемые в системе:
-
/root/django_client/project— рабочая директория проекта Django. -
/root/django_client/venv— виртуальное окружение Python. -
/etc/systemd/system/django.service— файл системной службы приложения. -
/data/nginx/user_conf.d/— пользовательские конфигурации Nginx. -
/data/nginx/letsencrypt/— файлы SSL-сертификатов и проверка ACME. -
/root/nginx/compose.yml— конфигурация Docker для управления сертификатами.
Процесс установки приложения¶
Развертывание приложения выполняется в несколько этапов:
-
Подготовка системы: Обновление списков пакетов
APTи установка необходимых зависимостей (python3,python3-pip,libpq-dev,python3-venv). -
Настройка окружения Python:
-
Создание виртуального окружения в директории
/root/django_client/venv. -
Установка библиотеки
Djangoпоследней версии внутри виртуального окружения. -
Развертывание проекта:
-
Создание структуры каталогов приложения.
-
Инициализация нового проекта Django через команду
django-admin startproject. -
Настройка конфигурационного файла
settings.py: установка параметровBASE_DIR,STATIC_ROOT,ALLOWED_HOSTSиCSRF_TRUSTED_ORIGINS. -
Настройка базы данных и статики:
-
Выполнение миграций базы данных (
manage.py migrate). -
Сборка статических файлов в директорию
static(manage.py collectstatic). -
Создание учетной записи: Создание суперпользователя (superuser) для доступа к панели управления.
-
Настройка системной службы: Создание и запуск сервиса
systemdдля обеспечения автоматического перезапуска приложения при сбоях или загрузке сервера.
Права доступа и безопасность¶
-
Приложение работает от имени пользователя
root. -
Для работы SSL используется механизм проверки через директорию
.well-known/acme-challenge/, которая доступна через Nginx. -
Настройка
CSRF_TRUSTED_ORIGINSограничивает доверенные источники для защиты от CSRF-атак, разрешая запросы только с установленного домена приложения.
Базы данных¶
Приложение использует базу данных (через библиотеку libpq-dev), данные которой хранятся в системных директориях, управляемых процессом Django. Инициализация структуры таблиц происходит через механизм миграций Django.
Контейнеры Docker и их запуск¶
Для управления SSL-сертификатами используется один контейнер:
Контейнер Nginx Certbot
-
Образ:
jonasal/nginx-certbot:latest -
Порты: Работает в режиме
network_mode: host. -
Тома (volumes):
-
nginx_secrets:/etc/letsencrypt— хранение сертификатов. -
/data/nginx/user_conf.d:/etc/nginx/user_conf.d— пользовательские конфиги Nginx. -
/data/nginx/letsencrypt:/var/www/letsencrypt— проверка ACME. -
Переменные окружения:
CERTBOT_EMAIL=hkadm@hostkey.com. -
Политика перезапуска:
unless-stopped.
Инструкция по обновлению приложения¶
Для обновления основного приложения необходимо выполнить следующие действия:
-
Обновить системные пакеты (если требуется).
-
Перейти в директорию проекта
/root/django_client/project. -
Выполнить обновление миграций базы данных:
-
Собрать статические файлы заново:
-
Перезапустить сервис приложения для применения изменений:
Расположение конфигурационных файлов и данных¶
-
Конфигурация Django:
/root/django_client/project/django_client/settings.py -
Статические файлы:
/root/django_client/project/static/ -
Конфигурация Nginx (Docker):
/root/nginx/compose.yml
Доступные порты для подключения¶
| Порт | Назначение | Протокол |
|---|---|---|
443 | Веб-интерфейс приложения | HTTPS |
8000 | Внутренний интерфейс Django | HTTP (локально) |