Skip to content

Latest commit

 

History

History

infra

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

Подготовка сервера к развертыванию приложения

Предварительные требования

  • у вас должен быть терминальный доступ к серверу;
  • на сервере должен быть установлен Docker (инструкции).

Копирование файлов

Загрузите содержимое папки infra на сервер.

Это можно сделать загрузив репозиторий непосредственно на сервере.

Другим способом можно загрузить репозиторий на локальный компьютер и выполнить копирование командой scp:

scp -r infra [имя-пользователя]@[адрес-сервера]:~

Замечания по архитектуре

Для обеспечения возможности запуска нескольких версий приложения (например, основной и отладочной) на сервере запускается основной прокси-сервер на основе образа Swag. Он предназначен для приёма зашифрованных соединений SSL и распределения запросов на сервера приложений. Для его настройки предназначена папка proxy.

Для настройки сервера приложения предназначена папка puzzle.

Настройка основного прокси-сервера

Конфигурационные файлы находятся в папке proxy.

Для использования прокси-сервера у вас должно быть настроено доменное имя. Если планируется использовать для приложения поддомен, отличный от puzzle, нужно внести соответствующие изменения в строке server_name в файле конфигурации puzzle.subdomain.conf. При желании, файл конфигурации также можно переименовать1.

Настройка получения SSL сертификатов

Перейдите в папку proxy. Скопируйте содержимое файла .env.sample в файл .env в той же папке:

cp -i .env.sample .env

Замените значения переменных на соответствующие вашему серверу:

  • TZ - часовой пояс;
  • URL - основной домен приложения;
  • EXTRA_DOMAINS - дополнительные домены, например, для отладочной версии приложения;
  • EMAIL - адрес электронной почты, который будет использовать Let's Encrypt при необходимости связаться с владельцем домена.

Можно использовать и другие настройки Swag (инструкции).

Запуск прокси-сервера

Находясь в папке proxy, выполните команду

docker compose up -d

При первом запуске Swag попробует получить сертификаты SSL. Следить за этим процессом можно по выводу контейнера:

docker logs -f swag

После успешного запуска можно поверить работу прокси-сервера, обратившись по адресу приложения в браузере. Должна отобразиться страница ошибки "502 - Bad Gateway", шаблон которой находится в файле 502.html.

Настройка сервера приложения

Конфигурационные файлы находятся в папке puzzle.

Переменные

Скопируйте содержимое файла .env.sample в файл .env в той же папке:

cp -i .env.sample .env

Отредактируйте значения переменных в файле .env. Обязательно нужно изменить значения следующих переменных: POSTGRES_PASSWORD, CONNECTION_STRING, SECRET.

  • POSTGRES_DB - имя базы данных приложения
  • POSTGRES_USER - имя пользователя баы данных
  • POSTGRES_PASSWORD - пароль пользователя базы данных
  • POSTGRES_HOST - сервер базы данных
  • POSTGRES_PORT - порт сервера базы данных
  • CONNECTION_STRING - строка подключения к базе данных
  • FIRST_SUPERUSER_EMAIL - адрес электронной почты администратора приложения
  • FIRST_SUPERUSER_PASSWORD - пароль администратора приложения
  • SECRET - случайный набор символов для шифрования данных
  • BACKEND_IMAGE - образ серверной части приложения
  • FRONTEND_IMAGE - образ Nginx с клиентской частью приложения

Строка подключения CONNECTION_STRING должна использовать те же реквизиты, что заданы в переменных POSTGRES_.

Переменная POSTGRES_HOST должна указывать на сервис базы данных как он задан в файле конфигурации docker-compose.yaml.

Переменные BACKEND_IMAGE и BACKEND_IMAGE по умолчанию указывают на хранилище образов этого репозитория. Измените их, если вы собрали свои образы для приложения.

Запуск сервера приложения

Если используются образы из частного репозитория, пройдите аутентификацию с помощью команды docker login, например:

docker login ghcr.io

Находясь в папке puzzle, выполните команду

docker compose up -d

Конфигурация полагается на наличие Docker-сети "puzzle", которая создается при запуске прокси-сервера.

Команды обслуживания

Начальную настройку приложения после развертывания можно произвести с помощью модуля обслуживания manage.py.

Модуль manage.py предназначен для управления сервером из командной строки. Запустить модуль в работающем контейнере Docker можно с помощью команды exec:

docker exec puzzle_backend python manage.py

Создание фигур

Команда create-pieces загружает в приложение фигуры из заданного количества клеток. В настоящее время доступны фигуры из 5 клеток:

docker exec puzzle_backend python manage.py create-pieces 5

Создание наборов игр

Команда create-games создает набор игр с полем указанного размера для заполнения фигурами из заданного количества клеток. В каждой игре будет использован свой набор фигур подходящего размера. Например, для создания игр с полем из 8 строк и 5 столбцов для фигур из 5 клеток, нужно выполнить команду:

docker exec puzzle_backend python manage.py create-games 8 5 5

Footnotes

  1. имя файла должно оканчиваться на ".subdomain.conf".