- у вас должен быть терминальный доступ к серверу;
- на сервере должен быть установлен
Docker
(инструкции).
Загрузите содержимое папки infra на сервер.
Это можно сделать загрузив репозиторий непосредственно на сервере.
Другим способом можно загрузить репозиторий на локальный компьютер и выполнить копирование командой scp
:
scp -r infra [имя-пользователя]@[адрес-сервера]:~
Для обеспечения возможности запуска нескольких версий приложения (например, основной и отладочной) на сервере запускается основной прокси-сервер на основе образа Swag. Он предназначен для приёма зашифрованных соединений SSL
и распределения запросов на сервера приложений. Для его настройки предназначена папка proxy.
Для настройки сервера приложения предназначена папка puzzle.
Конфигурационные файлы находятся в папке proxy.
Для использования прокси-сервера у вас должно быть настроено доменное имя.
Если планируется использовать для приложения поддомен, отличный от puzzle, нужно внести соответствующие изменения в строке server_name
в файле конфигурации puzzle.subdomain.conf. При желании, файл конфигурации также можно переименовать1.
Перейдите в папку 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
-
имя файла должно оканчиваться на ".subdomain.conf". ↩