Как установить Black Russia — полный гайд по настройке RP-сервера

‑___

Рекомендуется размещать экземпляр на Debian 11 или Ubuntu 22.04 с минимум 8 ГБ оперативной памяти и NVMe?SSD; выделите 4 ядра CPU для игрового процесса и 2 ядра для СУБД. Подробная пошаговая методика по подготовке файлов, зависимостей и конфигураций представлена по ссылке Black Russia инструкция по установке, где указаны рекомендуемые версии, контрольные суммы и примеры конфигов. Перед развёртыванием проверьте хэши, совместимость версий и создайте снапшот диска.

Порядок действий: обновите ОС – apt update && apt upgrade -y; установите git, curl, mariadb-server или MySQL 5.7+, сконфигурируйте NGINX как обратный прокси при необходимости; клонируйте репозиторий и подтвердите версию сборки перед запуском сервисов.

База и безопасность: создайте базу с кодировкой utf8mb4, выставьте innodb_buffer_pool_size ? 50% RAM и max_connections 250, организуйте резервное копирование каждые 6 часов с хранением на 7 дней. Ограничьте доступ по SSH ключами, включите fail2ban, откройте в брандмауэре только необходимые порты, заведите systemd?юнит с nofile 65536 и настройками автоматического рестарта, мониторьте нагрузки и периодически проверяйте логи для своевременного устранения проблем.

Проверка системных требований и зависимостей

Сверьте заявленные зависимости проекта с реальной средой: версии библиотек, сервисы и доступные API – при расхождениях задокументируйте отличие и план действий.

Определите ключевые элементы: рантаймы, менеджеры пакетов, базы данных и брокеры сообщений; составьте короткий отчёт с тем, что совпадает, а что требует внимания.

на что конкретно обращать внимание при проверке

держите под версионным контролем lock?файлы или манифесты зависимостей и проверяйте их перед релизом: это уменьшает шанс разносу версий в командах. внедрите автоматические проверки: сравнение заявленных и фактических версий, простые тестовые обращения к ключевым точкам и отчёт по отличиям – пусть проверка выполняется в CI. регулярно запускайте аудит безопасности зависимостей, чтобы знать о известных уязвимостях и планировать обновления заранее. фиксируйте список поддерживаемых версий и общие рекомендации для разработчиков, чтобы все работали в одном контексте и не гадали ‘почему у меня по?другому’. при необходимости воспроизводите окружение в изоляции и прогоняйте ключевые сценарии, чтобы увидеть взаимодействия компонентов в действии. маленький совет на будущее: документируйте не только версии, но и причинно?следственные связи – какие изменения требуют миграций данных или корректировок конфигурации.

Развёртывание файловой структуры и права владельцев

Развёртывание простой, логичной структуры каталогов и строгая политика владельцев и прав – ключ к предсказуемому управлению данными и быстрому восстановлению; разделяйте конфиги, логи и пользовательские данные, назначайте владельцев через пользователей и группы и применяйте ACL для исключений.

Планируйте структуру под роли и окружения, документируйте соглашения и держите права минимально достаточными: так легче контролировать доступ и отслеживать ответственность при администрировании и аудите.

Принципы развёртывания файловой структуры

сначала картируйте сервисы и роли: для каждой сервисной группы выделяйте собственный корневой каталог, чтобы не смешивать конфигурацию, данные и временные файлы; это похоже на кухню ресторана, где овощи, соусы и готовые блюда хранятся отдельно, чтобы не перепутать ингредиенты. задавайте однозначные имена и шаблоны: короткие префиксы по проектам и по окружениям, единый формат для дат и версий, чтобы поиск и бэкапы шли без головной боли. разделяйте mutable и immutable данные: конфиги и исполняемые артефакты – отдельно от пользовательских или временных данных; это облегчает откат и уменьшает шанс порчи рабочих директорий. используйте символьные ссылки для общих ресурсов и версионных точек, чтобы развертывание новых версий не ломало старые пути. группируйте по назначению: логи в одном месте, медиаконтент в другом, данные игроков/пользователей в изолированном каталоге – тогда политики резервного копирования и ограничения размера диска проще назначать. документируйте структуру в простом тексте рядом с репозиторием: команда и смены должны без подсказок понимать, где какие файлы лежат.

Назначение прав и управление владельцами

назначайте владельцев по принципу наименьших привилегий: пользователь или группа получают ровно те права, которые требуются для работы, и ничего лишнего; представьте, что вы даёте ключи только от нужной комнаты. для общих директорий применяйте setgid-группы и предсказуемую umask, чтобы новые файлы наследовали групповую принадлежность и не требовали постоянной ручной правки. используйте числовые режимы и бит sticky там, где нужно запретить удаление чужих файлов в общих папках; это простой способ избежать случайной потери данных. в случаях с нестандартными правами применяйте ACL: они позволяют давать исключения без ломки основной модели владельцев и групп. при резервном копировании сохраняйте метаданные владельцев и прав, иначе восстановление приведёт к путанице в доступах и дополнительной ручной работе. оформите политику: кто и каким инструментом меняет владельцев, какие операции разрешены при смене версий и как фиксировать изменения – это экономит время при разборе инцидентов и передаче проекта другим админам.

Инициализация сервисов: регистрация юнитов; тестовый сценарий

Зарегистрируйте systemd-юниты для игрового процесса, базы данных и кеша: создайте файлы в /etc/systemd/system и задайте зависимость запуска (After=) и автозапуск (WantedBy=multi-user.target).

Выполните systemctl daemon-reload, затем включите и запустите юниты командой systemctl enable —now project-rp.service project-rp-db.service project-rp-redis.service; проверяйте состояние через systemctl status и логи через journalctl -u.

Примеры юнитов и тестовый сценарий

  1. /etc/systemd/system/project-rp-db.service – содержимое:
  2. [Unit] Description=Project DB; After=network.target; Wants=project-rp-redis.service;
  3. [Service] Type=simple; User=mysql; ExecStart=/usr/bin/mysqld_safe; Restart=on-failure; LimitNOFILE=65536;
  4. [Install] WantedBy=multi-user.target
  5. /etc/systemd/system/project-rp-redis.service – содержимое:
  6. [Unit] Description=Project Redis; After=network.target;
  7. [Service] Type=notify; User=redis; ExecStart=/usr/bin/redis-server /etc/redis/redis.conf; Restart=on-failure;
  8. [Install] WantedBy=multi-user.target
  9. /etc/systemd/system/project-rp.service – содержимое:
  10. [Unit] Description=Project Game Server; After=network.target project-rp-db.service project-rp-redis.service;
  11. [Service] User=game; Group=game; ExecStart=/opt/project-rp/bin/server —config /etc/project-rp/config.json; Restart=on-failure; LimitNOFILE=65536; Environment=HOME=/home/game
  12. [Install] WantedBy=multi-user.target
  13. Примените изменения: systemctl daemon-reload.
  14. Включите автозапуск и запустите: systemctl enable —now project-rp-db.service project-rp-redis.service project-rp.service.
  15. Проверьте статусы: systemctl status project-rp.service -l; ожидаемая строка в статусе – ‘Active: active (running)’.
  16. Следите логами сервера: journalctl -u project-rp.service -f —since ‘1 minute ago’; ключевые строки для успешного старта: ‘Resources loaded:’, ‘Server listening on’, ‘Database connected’.
  17. Функциональный smoke-тест:
    1. Подключитесь клиентом к порту сервера (по умолчанию 30120):

Комментировать

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.