-
Notifications
You must be signed in to change notification settings - Fork 8
Установка скриптов на физические машины
Инструкция примерная и написана для Ubuntu 12.04 LTS
На машинах с игровыми серверами необходимо ставить:
apt-get install apache2 apache2-suexec ia32-libs sendmail pure-ftpd screen
apt-get install python-pip python-pyinotify python-pexpect python-redis python-pyrrd
Если возникнет ошибка:
Настраивается пакет bluez (4.98-2ubuntu7) ...
reload: Unknown instance:
invoke-rc.d: initscript dbus, action "force-reload" failed.
start: Job failed to start
invoke-rc.d: initscript bluetooth, action "start" failed.
dpkg: не удалось обработать параметр bluez (--configure):
подпроцесс установлен сценарий post-installation возвратил код ошибки 1
То сделать так:
service dbus start
apt-get install ia32-libs
apt-get -f install
Для Ubuntu 14.04 LTS:
apt-get install libc6:i386 libstdc++6:i386 gcc-multilib apache2 apache2-suexec-custom sendmail pure-ftpd screen
apt-get install python-pip python-pyinotify python-pexpect python-redis python-pyrrd python-mysqldb
Отключить журналирование у раздела /home:
tune2fs -o journal_data_writeback /dev/mapper/vsemserv--vg-root
tune2fs -O ^has_journal /dev/mapper/vsemserv--vg-root
Создать папку (лучше отдельный раздел) /images
В нем синхронизировать с помощью rsync следующие папки с другими машинами или корневым репо:
/images/maps
/images/mods
/images/plugins
/images/servers
Создать и дать права на чтение www-data (или кто там пользователь apache):
/images/stat/bases
/images/stat/graphs
Настроить Firewall
Включить порты в UFW:
ufw allow 22
ufw allow 80
ufw allow 443
ufw allow 90
ufw allow ftp
ufw allow mysql
ufw allow 6379
ufw allow 25
ufw allow 110
ufw allow 10031
ufw allow to 100.200.300.400 proto udp port 27000:28900
ufw allow to 100.200.300.400 proto tcp port 27000:28900
Скопировать с другой машины файл правил /etc/ufw/after.rules и прописать там IP всех машин. Соответсвенно при добавлении новых машин, надо на существующих обновлять правила.
Установить fail2ban:
apt-get install fail2ban
Перезапуск файрвола осуществлять командой:
service fail2ban stop && sleep 5 && /lib/ufw/ufw-init stop && ufw disable && sleep 1 && ufw enable && sleep 2 && service fail2ban start && sleep 5 && /etc/ufw/poststart.sh
Настроить Apache (для управления машинами из панели)
Создать файл /etc/apache2/conf.d/1-userdir.conf и прописать в нем UserDir disabled
В apache2.conf изменить формат combined - заменить %r на %U В конец apache2.conf добавить строку IncludeOptional conf.d/*.conf
Включить модули: a2enmod rewrite deflate mem_cache headers suexec userdir cgid
Прописать машину в панель:
Создать машину и подключить её к локации и привязать к ней IP в: https://panel.domain/locations/control
Создать папку /etc/hosting и скопировать в неё файл /images/scripts/root_config/scrips.cfg Вписать в него ID созданной ранее машины и параметры доступа к БД
Добавить в конец конфига /etc/crontab строки из /images/scripts/root_config/crontab Запустить дважды скрипт /images/scripts/global/create_cfg_user.py
Добавить в конец конфига /etc/sudoers строки из /images/scripts/root_config/sudoers Перезапуск: service sudo restart
Прописать параметры Redis в скрипт /images/scripts/global/servers_check_params.py :
r = redis.Redis(host='100.200.300.400',
port=6379,
db=0,
password='PASSWORD')
Настроить FTP: Скопировать с другой машины конфиги: /etc/pure-ftpd/conf/ChrootEveryone /etc/pure-ftpd/conf/Umask
И рестарт: service pure-ftpd restart
===================================================
Плагины/Моды
Моды в папке /images/mods Плагины: /images/plugins
Логика такая: Мод привязывается к шаблонам серверов. Плагин привязывается к модам, А ТАКЖЕ к шаблонам серверов. ЭТО ВАЖНО ПОНИМАТЬ!
После любых изменений, если машин несколько, необходимо запускать скрипт sync-mods.sh или sync-plugins.sh Предварительно прописать в них адреса машин.
Структура простая. Создается папка с именем мода/плагины и версия через "-" (тире). Внтури нее создается необходимая структура папок/файлов так, как они должны быть от КОРНЯ сервера, в случае серверов Valve это там, где находятся папки addons, cfg и т.д.
После этого, если машина одна, рекомендую устанавливать права командой: chmod -R a+rX /images/plugins && chmod -R a+rX /images/mods
Если вы просто добавили мод/плагин другой версии, то в панели https://panel.domain/gameTemplates/control найти его и изменить там версию и описание дополнить.
Если это новый мод/плагин, то там же добавить. Делать по аналогии с другими.
После добавления МОДА необходимо в строке с шаблоном сервера нажать кнопку с чемоданом, выбрать там необходимые моды (ЗАЖАТЬ CTRL ПРЕДВАРИТЕЛЬНО!!!), после также с зажатым CTRL выбрать плагины. Потом в строке же сервера появится мод. Щелкнуть на нем и привязать к нему нужные плагины.
После добавления ПЛАГИНА необходимо в строке с шаблоном любого сервера, у которого есть нужный мод, щелкнуть на моде, выбрать там необходимые плагины (ЗАЖАТЬ CTRL ПРЕДВАРИТЕЛЬНО!!!) и сохранить. И потом привязать его к шаблону сервера, как описано выше.
К сожалению, есть баг при добавлении нового мода, у меня руки не дошли его исправить. Необходимо после создания мода в панели зайти в PhpMyAdmin
В БД teamserver и таблице mods, найти нужный мод, нажать edit и в поле moreParams поставить галку NULL
Вообще, я не реализовал это в панели, но это поле нужно, чтобы передавать параметры скриптам установки мода. Параметры - это названия полей из таблицы servers.
Дополнительно можно создать скрипт конфигурации мода/плагина при установке. Действовать по аналогии с уже созданными в директории /images/scripts/individual/configurators
Имя скрипта - имя плагина/мода БЕЗ ВЕРСИИ. Писать на Python.