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

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

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

Установка выполняется в несколько этапов, создавая специализированного пользователя и устанавливая необходимые пакеты.

  1. Создание пользователя и настройка прав:
  2. Создается пользователь {{ lgsm_user }} с домашней директорией.
  3. Пользователь добавляется в группу sudo с правами на выполнение команд без ввода пароля.
  4. Проверяется отсутствие ограничений requiretty в файлах sudoers.

  5. Установка зависимостей:

  6. Устанавливаются системные пакеты: bsdmainutils, bzip2, jq, lib32gcc-s1, lib32stdc++6, netcat, pigz, unzip, git, python3, python3-venv, python3-pip.

  7. Установка LinuxGSM:

  8. Скрипт linuxgsm.sh загружается в домашнюю директорию пользователя.
  9. Выполняется команда bash linuxgsm.sh {{ server_name }} для создания сервера игры.
  10. После успешного создания скрипт linuxgsm.sh удаляется.

  11. Установка Web-LGSM:

  12. Клонируется репозиторий https://github.com/BlueSquare23/web-lgsm.git в директорию {{ home_dir }}/{{ web_lgsm_dir }}.
  13. Скрипт install.sh внутри репозитория выполняется от имени пользователя {{ lgsm_user }}.

  14. Настройка Docker и Nginx:

  15. Устанавливается Docker и роль docker-managed-install.
  16. Создается конфигурация docker compose в директории /root/nginx.
  17. Запускаются контейнеры 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.

Запуск контейнеров выполняется командой:

docker compose up -d
в директории /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.

Команды управления: - Запуск сервиса:

systemctl start web-lgsm.service
- Остановка сервиса:
systemctl stop web-lgsm.service
- Перезапуск сервиса:
systemctl restart web-lgsm.service
- Проверка статуса:
systemctl status web-lgsm.service
- Включение автозапуска при загрузке системы:
systemctl enable web-lgsm.service

Сервис настроен на автоматический перезапуск (Restart=always) с задержкой в 3 секунды (RestartSec=3) в случае сбоя.

Для управления контейнерами Docker используются команды: - Запуск всех контейнеров:

docker compose up -d
- Остановка всех контейнеров:
docker compose down
- Перезапуск контейнеров:
docker compose restart

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×