Во первых, начну с разговора об автоматизации, среди протестированных скриптов запуска, контроля упал ли сервер или нет, я нашел самый удобный и рабочий: Linux Game Server Managers - Quick, simple deployment and management of various dedicated game servers Linux Game Server Managers, на этой базе и будем рассматривать установку и настройку.
Обращаю ваше внимание на то, что для VDS/VPS в качестве операционной системы рекомендуется Debian, в данном руководстве я рассматриваю Debian 8 X64.
Нам понадобится следующее программное обеспечение:
ExtraPuTTY - для входа на сервер через протокол SSH
WinSCP - это файловый менеджер, через который мы будем работать с файлами.
А так же необходимые пакеты для корректной работы SteamCMD, расширения dbi.mysql.ext входящей в состав SourceMod, HLstatsX:CE, а так же самого скрипта автоматизации:
Эта библиотека нужна расширению работы с mysql базами данных dbi.mysql.ext
apt-get install lib32z1
Нужное для корректной работы скрипта:
sudo dpkg --add-architecture i386; sudo apt update; sudo apt install mailutils postfix curl wget file tar bzip2 gzip unzip bsdmainutils python util-linux ca-certificates binutils bc jq tmux lib32gcc1 libstdc++6 lib32stdc++6 steamcmd
Для запуска серверного Daemon HLstatsX:CE необходим модуль работы с базами данных:
apt-get install libdbd-mysql-perl
Чтобы HLstatsX:CE корректно распознавала местоположение игроков устанавливаем модуль Geo :: IP :: PurePerl
wget http://search.cpan.org/CPAN/authors/id/B/BO/BORISZ/Geo-IP-PurePerl-1.25.tar.gz
tar -zxf Geo-IP-PurePerl-1.25.tar.gz
cd Geo-IP-PurePerl-1.25
perl Makefile.PL
make
make test
make install
apt-get install libgeo-ip-perl
Если у вас будет использоватся параметр -debug ставим дебагер, если его не будет сервер будет просить установить:
apt-get install gdb
Установка:
Создаем нового пользователя с названием сервера, можно как хотите это просто для понятности, т.к. под root не безопасно и крайне не рекомендуется самой Valve, в процессе вас попросят указать пароль, если пароль одинаков с названием учетной записи то, он спрашиваться не будет.
adduser l4d2_test_coop
Заходим под только созданным пользователем:
su - l4d2_test_coop
Скачиваем скрипт управления сервером:
wget -O linuxgsm.sh https://linuxgsm.sh && chmod +x linuxgsm.sh && bash linuxgsm.sh l4d2server
Теперь заходим в WinSCP заходим под учетной записью root админа и идем в каталог /home/<имя учетной записи созданной ранее> и переименовываем название скрипта l4d2server в желаемое название через файловый менеджер, допустим l4d2_test_coop, и после открываем этот файл двойным кликом мыши прямо в файловом менеджере.
В открывшемся окне, в разделе # Start Variables настраиваем:
defaultmap - это начальная карта с которой стартует сервер
maxplayers - максимальное кол-во игроков
port - желаемый порт сервера.
ip - ип текущего сервера.
После ниже находим и заменяем:
parms="-game left4dead2 -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}"
На:
parms="-game left4dead2 -ip ${ip} -port ${port} +map ${defaultmap} -maxplayers ${maxplayers} +servercfgfile ${servercfg}"
т.к. из-за strictportbind сервер не видно в списках игровых серверов Steam в меню игры.
Сохраняем и переходим к следующему шагу.
Запускаем установку, и следуем указаниям:
./l4d2_test_coop install
В процессе установки скрипт сам настроит SteamCMD и положит все в папку созданного нами пользователя, файлы сервера будут располагаться в папке serverfiles, steamcmd в папке steamcmd ну в общем все достаточно понятно.
Автоматический мониторинг сервера:
crontab -e
0 5 * * * /home/l4d2_test_coop/l4d2_test_coop monitor > /dev/null 2>&1
Теперь наш сервер каждые 5 минут проверяется, и если он зависнет или упадет то запустится вновь.
Разберем команды управления сервером:
Официальная документация тут
Запуск:
Запуск:
./l4d2_test_coop start
Остановка:
./l4d2_test_coop stop
Перезапуск:
./l4d2_test_coop restart
Обновление:
обновление:
./l4d2_test_coop update
проверка файлов:
./l4d2_test_coop validate
Мониторинг:
./l4d2_test_coop monitor
Консоль сервера:
Для выхода из консоли сервера нажмите “CTRL+b d”.
Заметка: нажатие “CTRL+c” выключает сервер.
./l4d2_test_coop console
Настройка
Для того чтобы сервер корректно отображался и к нему можно было подключится нужно добавить конфиг сервера, он называется server.cfg и содержит:
// *Server settings* //
// Название сервера
hostname "l4d2_coop_server"
sv_lan 0
sv_region 255
// Ваш ркон пароль
rcon_password "l4d2_coop_server"
// Кол-во неудачных попыток перед баном IP адреса того кто пытается зайти
sv_rcon_maxfailures 5
sv_search_key "l4d2_coop_server"
sv_tags "теги"
sv_contact "сайт или почта"
// *Additional settings* //
// Разрешенные режимы игры,если их несколько то через запятую без пробелов
sm_cvar sv_gametypes "coop,realism"
sm_cvar sv_alltalk 1
sm_cvar sv_cheats 0
// *Slot and players settings* //
// Allow or disallow the wait command on clients connected to this server
sm_cvar sv_allow_wait_command 0
sm_cvar sv_allow_lobby_connect_only 0
sm_cvar sv_maxplayers 4
sm_cvar sv_visiblemaxplayers 4
sm_cvar sv_force_unreserved 1
Кладем server.cfg в папку /l4d2_test_coop/serverfiles/left4dead2/cfg и пробуем запустить, на этом все, удачных экспериментов!