Обзор развертывания 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 используются команды: - Запуск всех контейнеров: