Обзор развертывания Web-LGSM на сервере¶
Предварительные требования¶
Для успешного развертывания приложения необходимо наличие сервера с операционной системой Debian или Ubuntu. Требуется доступ к серверу с правами суперпользователя (root) или возможность выполнения команд через sudo.
Система должна иметь доступ к интернету для загрузки зависимостей и репозиториев. В процессе установки будут использованы следующие порты:
-
Порт
12357для локального доступа к бэкендуweb-lgsm. -
Порты
80и443для работы веб-сервераnginxи получения SSL-сертификатов.
Структура файлов и каталогов¶
Приложение и его компоненты размещаются в следующих директориях:
-
Домашняя директория пользователя
{{ lgsm_user }}({{ home_dir }}): -
{{ home_dir }}/{{ server_name }}: Каталог с установленным сервером игры черезlinuxgsm. -
{{ home_dir }}/{{ web_lgsm_dir }}: Каталог с репозиториемweb-lgsmи скриптами запуска. -
{{ home_dir }}/.ansible_tmp: Временная директория для операций установки. -
Системные каталоги:
-
/etc/systemd/system/web-lgsm.service: Файл конфигурации системного сервиса. -
/root/nginx: Директория для конфигурацииnginxиdocker compose. -
/root/nginx/compose.yml: Файл конфигурации контейнеров. -
/data/nginx/nginx-certbot.env: Файл переменных окружения дляnginx. -
/data/nginx/user_conf.d: Директория для пользовательских конфигурацийnginx. -
/etc/letsencrypt: Директория для хранения SSL-сертификатов (монтируется в контейнер).
Процесс установки приложения¶
Установка выполняется в несколько этапов, создавая специализированного пользователя и устанавливая необходимые пакеты.
-
Создание пользователя и настройка прав:
-
Создается пользователь
{{ lgsm_user }}с домашней директорией. -
Пользователь добавляется в группу
sudoс правами на выполнение команд без ввода пароля. -
Проверяется отсутствие ограничений
requirettyв файлахsudoers. -
Установка зависимостей:
-
Устанавливаются системные пакеты:
bsdmainutils,bzip2,jq,lib32gcc-s1,lib32stdc++6,netcat,pigz,unzip,git,python3,python3-venv,python3-pip. -
Установка LinuxGSM:
-
Скрипт
linuxgsm.shзагружается в домашнюю директорию пользователя. -
Выполняется команда
bash linuxgsm.sh {{ server_name }}для создания сервера игры. -
После успешного создания скрипт
linuxgsm.shудаляется. -
Установка Web-LGSM:
-
Клонируется репозиторий
https://github.com/BlueSquare23/web-lgsm.gitв директорию{{ home_dir }}/{{ web_lgsm_dir }}. -
Скрипт
install.shвнутри репозитория выполняется от имени пользователя{{ lgsm_user }}. -
Настройка Docker и Nginx:
-
Устанавливается
Dockerи рольdocker-managed-install. -
Создается конфигурация
docker composeв директории/root/nginx. -
Запускаются контейнеры
nginxиcertbotчерез командуdocker compose up -d.
Права доступа и безопасность¶
Настройка прав доступа осуществляется следующим образом:
-
Директория
/etc/sudoers.dимеет права0750и принадлежит пользователюroot. -
Файл конфигурации
sudoдля пользователя{{ lgsm_user }}(/etc/sudoers.d/99-{{ lgsm_user }}-nopasswd) имеет права0440. -
Временная директория
/tmpимеет права1777. -
Директория
/var/tmp/.ansibleимеет права1777. -
Директория
{{ home_dir }}/.ansible_tmpимеет права0700и принадлежит пользователю{{ lgsm_user }}. -
Директория
/root/nginxимеет права0644и принадлежит пользователюroot. -
Файл
compose.ymlимеет права0644.
Контейнеры Docker и их запуск¶
Для работы веб-интерфейса и получения SSL-сертификатов используются контейнеры Docker. Конфигурация описана в файле /root/nginx/compose.yml.
Используемый образ: jonasal/nginx-certbot:latest.
Параметры запуска контейнера nginx:
-
Режим сети:
host. -
Перезапуск:
unless-stopped. -
Переменные окружения:
-
CERTBOT_EMAIL=hkadm@hostkey.com. -
Файл переменных:
/data/nginx/nginx-certbot.env. -
Монтированные тома:
-
nginx_secrets(внешний том) монтируется в/etc/letsencrypt. -
/data/nginx/user_conf.dмонтируется в/etc/nginx/user_conf.d. -
/homeмонтируется в/home.
Запуск контейнеров выполняется командой:
в директории/root/nginx. Прокси серверы¶
В качестве прокси-сервера используется контейнер nginx с поддержкой Certbot для автоматического получения и обновления SSL-сертификатов.
Конфигурация прокси сервера:
-
Изображение:
jonasal/nginx-certbot:latest. -
Электронная почта для
Certbot:hkadm@hostkey.com. -
Конфигурация пользователя размещается в
/data/nginx/user_conf.d. -
Сертификаты хранятся в томе
nginx_secrets, который монтируется в/etc/letsencryptвнутри контейнера.
Настройки прав¶
Права на файлы и директории настроены следующим образом:
-
Директория
{{ home_dir }}/{{ web_lgsm_dir }}имеет права0755и принадлежит пользователю{{ lgsm_user }}. -
Скрипт
install.shвнутри репозитория имеет права0755. -
Файл сервиса
web-lgsm.serviceимеет права0644и принадлежит пользователюroot. -
Директория
/root/nginxимеет права0644.
Запуск, остановка и обновление¶
Управление сервисом web-lgsm осуществляется через systemd.
Файл сервиса: /etc/systemd/system/web-lgsm.service.
Команды управления:
-
Запуск сервиса:
-
Остановка сервиса:
-
Перезапуск сервиса:
-
Проверка статуса:
-
Включение автозапуска при загрузке системы:
Сервис настроен на автоматический перезапуск (Restart=always) с задержкой в 3 секунды (RestartSec=3) в случае сбоя.
Для управления контейнерами Docker используются команды:
-
Запуск всех контейнеров:
-
Остановка всех контейнеров:
-
Перезапуск контейнеров: