Перейти к содержанию

Обзор развертывания 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 для управления сертификатами.

Процесс установки приложения

Развертывание приложения выполняется в несколько этапов:

  1. Подготовка системы: Обновление списков пакетов APT и установка необходимых зависимостей (python3, python3-pip, libpq-dev, python3-venv).

  2. Настройка окружения Python:

  3. Создание виртуального окружения в директории /root/django_client/venv.

  4. Установка библиотеки Django последней версии внутри виртуального окружения.

  5. Развертывание проекта:

  6. Создание структуры каталогов приложения.

  7. Инициализация нового проекта Django через команду django-admin startproject.

  8. Настройка конфигурационного файла settings.py: установка параметров BASE_DIR, STATIC_ROOT, ALLOWED_HOSTS и CSRF_TRUSTED_ORIGINS.

  9. Настройка базы данных и статики:

  10. Выполнение миграций базы данных (manage.py migrate).

  11. Сборка статических файлов в директорию static (manage.py collectstatic).

  12. Создание учетной записи: Создание суперпользователя (superuser) для доступа к панели управления.

  13. Настройка системной службы: Создание и запуск сервиса 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.

Инструкция по обновлению приложения

Для обновления основного приложения необходимо выполнить следующие действия:

  1. Обновить системные пакеты (если требуется).

  2. Перейти в директорию проекта /root/django_client/project.

  3. Выполнить обновление миграций базы данных:

    /root/django_client/venv/bin/python manage.py migrate --noinput
    

  4. Собрать статические файлы заново:

    /root/django_client/venv/bin/python manage.py collectstatic --noinput
    

  5. Перезапустить сервис приложения для применения изменений:

    systemctl restart django.service
    

Расположение конфигурационных файлов и данных

  • Конфигурация 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 (локально)
question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×