Ускорялка загрузки сервера+минификация thx GMD для Pterodactyl

сделано всё благодаря статьям от гмд -

==================================
==================================
АРХИВ ФАЙЛОВ -
deploy.rar (23,0 КБ)

==================================
==================================

!!!ПРИМЕЧАНИЕ: ПОДОЙДЁТ ТОЛЬКО ДЛЯ ВЛАДЕЛЬЦЕВ VDS!!!

По сути - это склейка кода минификации с ускорением загрузки (ака аддоны в единой папке)
Чем хорош скрипт - то что он автоматический деплой в прод сервер делает, в случае изменений на дев сервере (благодаря хэшу)!

всё делал для работы и автоматизации скрипта на панели птеродактиль.
можно поменять пути для дев/прод серверов чтоб делалось не автоматически а вручную по команде. Но дальнейшая инструкция именно для VDS + Pterodactyl

Что получается в итоге: скорость загрузки сервера за считанные секунды (особенно заметно как в моём случае, если у вас “толстый” сервер типа SWRP) а так же минификация кода в 1 строку и небольшим изменениям чтоб сбросить вес луа файлов.

================================================================
Для начала создаём второй сервер в панели, на котором будет оригинал код аддонов + гейммода


Prod - это ваш основной сервер который всегда будет запущен
dev - для редактирования кода аддонов/гейммода, который автоматом будет деплоится на прод.

Далее открываем Filezilla или другой клиент, идём по пути /var/lib/pterodactyl/volumes
и смотрим где какой айди сервера, не перепутайте где у вас прод а где дев. Открывайте любой из этих волюмов и по папкам поймёте где у вас что.

Теперь нужно закачать луа Бинарник для вашей убунту и закинуть его в папку lua_bin около волюмов. Должно быть так: /var/lib/pterodactyl/lua_bin
Где взять луа - переходим сюда https://github.com/dyne/luabinaries/releases/download/6756718/lua55
Скачается lua55. Переименовываем его просто в lua и закидываем в папку lua_bin.
Должно получится так:

На prod сервере переходим в вебфтп (файлы) и прямо в корне создаём папку dev_server.

Теперь переходим в админ панель птеродактиля, раздел mounts и создаём 2 новых маунта


Первый - это будет наша магическая связь между девом и продом
Нажимает Create new.
В Name пишем gmod_deploy
В source пишем путь к dev серверу вплоть до garrysmod. Должно получится так:
/var/lib/pterodactyl/volumes/cf90cc34-a597-4983-a8ec-12345678/garrysmod
В Target пишем путь до dev_server продакшн сервера, то есть так: /home/container/dev_server
2 галочки ниже ставим на False
И нажимаем создать

Теперь похожую процедуру делаем для второго маунта:
Называем его lua
В Source - /var/lib/pterodactyl/lua_bin
В Target - /home/container/lua_bin (её создавать не надо, она появится сама)
2 галочки ниже ставим на False

После как создали маунты открываем первый gmod_deploy (тыкаем просто на его название), справа будут Eggs и Nodes. В Eggs указываем Garrys mod, в Nodes - ноду где ваш прод и дев. Повторяем тоже самое для маунта lua.
Должно выйти так:

ПРОВЕРЯЕМ ТО ЧТО МАУНТ ПРАВИЛЬНО СОЗДАЛСЯ , С ПРАВИЛЬНЫМИ ПУТЯМИ.
Переходим в админ панели в настройки вашего прод сервера и открываем раздел Mounts
Вы должны увидеть новые созданные шагом выше два маунта и нажать справа на плюсик (на оба)

ЕСЛИ МАУНТОВ НЕ ВИДНО

Может быть так что они не появились. не писяем.
Как решать:
открываем клиент через который вы конектитесь к консоли vds машины.
вводим команду: systemctl restart wings
Возвращаемся в браузер, обновляем вкладку и проверяем не появились ли на вкладке mounts прод сервера наши два маунта. Если да - отлично.

==============================
ЕСЛИ всё ещё не появились:
будем тогда редачить config.yml.
прописываем nano /etc/pterodactyl/config.yml
мотаем вниз до allowed_mounts: [ ]
Теперь нужно внести вместо скобок наши два маунта из Source:
allowed_mounts:

  • /var/lib/pterodactyl/lua_bin
  • /var/lib/pterodactyl/volumes/cf90cc34-a597-4983-a8ec-123456788/garrysmod
    Как должно выглядеть в коде:

Сохраняем, и снова перезапускаем Wings: systemctl restart wings
После этого 100% появятся маунты.

Тыкаем на каждый маунт справой стороны на зелёный плюсик. Должен изменится статус на Mounted:

Теперь переходим на prod сервер. Создаём в корне папку deploy, в неё выгружаем 3 файла из архива.

Первый файл при старте будет запускаться именно start_server.sh
Открываем его и в DEV_MODE_DIR заменяем папку гейммода, если у вас другая. например так: DEV_MODE_DIR=“/home/container/dev_server/gamemodes/darkrp”
Сохраняем, выходим.
Открываем deploy.sh
Повторяем процедуру по гейммоду на строке GAMEMODE_NAME=“starwarsrp”
В файле есть исключения, так как минификатор может похерить немного код например для talk-modes аддона или подключение к бд - GM_EXCLUDE_REL=“gamemode/config/sv_mysql.lua”
Исключение аддонов на строке 163
ВАЖНО: тут именно названия папок. Это значит что внесённые в эту таблицу название папки аддона - не будет минифицироваться и складываться в общую папку аддонов (superaddon). Для примера я там уже ввёл некоторые аддоны.
Исключение касается так же xeon-drm и файла gluapackso.vdf, если у вас аддоны от билли или его глуа пак.

Процесс сжатия в 1 папку работает только для папки аддонов. Гейммод пропускает эту часть и на него работает только минификация.

В скрипте так же предусмотрено случай, если у вас в двух разных аддонах есть одинаковые названия файлов - один из них будет переименован с префиксом _conflictminify.

В скрипте так же предусмотрен бэкап перед каждым новым деплоем. То есть отредачили dev - сделали рестарт - скрипт снова пережимает все файлы на прод и минифицирует их, и так же создаёт бэкап прошлого деплоя. Для аддонов - это прямо в папке garrysmod, для гейммода - в папке gamemodes

Всё будет логироваться, это будет описано дальше.

Все исключения и изменения ввели? Идём дальше
Открываем снова админ панель прод сервера и раздел startup. Вставляем В САМОЕ НАЧАЛО запуск нашего sh файла: bash /home/container/deploy/start_server.sh
Должно выйти так:

Теперь убираем все аддоны с прод сервера (если они там были)
Вываливаем гейммод и аддоны как обычно на дев сервер.
Всё готово, можно запускать и проверять!

Стартуем наш prod сервер и смотрим в консоль:
image
В моём случае я не делал правок на деве, потому процесс сжатия и минификации пропускается.

Результат:


Все аддоны в папке superaddons, кроме тех что внесли в исключения.
И все файлы внутри superaddons а так же гейммода - минифицированны!

По поводу логирования:
файл лога создаётся прямо в корне. Туда пишется только ошибки или то что было переименовано из-за одинакового названия файлов. Разобраться легко.

Благодаря этому теперь сервер, при 200 аддонов в коллекции стим и 50+ на хосте - запускается за 17 секунд, вместо ~55 без сжатия в 1 папку аддонов.

ВОЗМОЖНЫЕ ПРОБЛЕМЫ И ИХ РЕШЕНИЕ

Пока что я сталкивался только с 3мя проблемами:

  1. Первая уже была описана про маунты, прямо в инструкции спойлер
    Решение там же

  2. Если при запуске скрипт деплоя ложится с грешками на lua, типо Lua бинар не найден:
    значит вы используете не тот Lua файл либо он повреждён либо ещё что-то (тот который в /var/lib/pterodactyl/lua_bin)
    Перезалейте, используйте версию 5.4 и выше обязательно!
    Решение - берите луа файл из статьи.

  3. Тоже касается бинара Lua, ошибка GLIBC_2.38’ not found
    Всё так же про Lua файл, только у вас либо какая-то модифицированная версия этого луа файла, либо версия старая. Например 5.1 и 5.3 не подходят, а 5.5 подходит
    Решение - берите луа файл из статьи.

  4. Жалоба Lua, но конкретно на права.
    Тут всё просто, нужно выдать все права самому бинарнику луа.
    Решение:
    Открываем консоль нашей VDS
    пишем cd /var/lib/pterodactyl/lua_bin
    chown pterodactyl:pterodactyl lua
    chmod +x lua
    На всякий случай ещё systemctl restart wings

1 лайк