«Войны в свободное время» или BF2 сервер + статистика в офисе

/www/pages/modesco/ubuntovod

Сегодня я расскажу вам как установить и настроить игровой сервер BattleField 2 и прикрутить к нему локальную статистику игроков.

Сервер:

  • НР ProLiant ML350 G5
  • Intel® Xeon® 5160
  • 8 Gb RAM ECC
  • Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic x86_64)

Вот такая свободная машинка попалась на глаза. Посмотрев на конфигурацию решил что Web сервер, база данных и соответственно игровой сервер уживутся на одной машине.

Описывать установку ОС не буду, начну с необходимых пакетов.

Для работы Web сервера, базы данных и web обвязки сервера нам понадобится Apache, MySQL и PHP, так же для работы статистики, модуль для apache поддерживающий выполнение ASM скриптов.

Для своего удобства, все что касается серверной части я храню в отдельном каталоге в корне системы.

sudo mkdir /server
cd /server
sudo mkdir site
sudo mkdir bf2

Установка сервера Web,PHP,MySQL

Итак, приступим к установке:

sudo apt-get install apache2 apache2-mpm-prefork apache2-utils apache2-suexec libapache-asp-perl php5 php5-mysql libapache2-mod-php5 php-pear mysql-server mysql-client libmysqlclient15-dev

Во время установки, сервер MySQL попросит вас ввести пароль.

Настроим виртуальные хосты

На данный момент у нас должен получится вполне рабочий Web сервер. Проверяем путем перехода на IP адрес сервера через любой браузер с компьютера в вашей локальной сети. На экране, если все правильно работает, появится надпись "It, works!".

Изменяем фаил конфигурации виртуальных хостов:

sudo nano /etc/apache2/sites-available/default

Стираем содержимое файла и вставляем наш новый виртуальный хост:

ServerAdmin somemail@some.ru
ServerName ВАШ.IP.АДРЕС
ServerAlias ВАШ.IP.АДРЕС
DocumentRoot /server/site
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

Теперь папка где лежит наш сайт будет /server/site.

Установка и настройка BattleField 2 сервера

На данном этапе у меня возникла проблема. Т.к. найти на сайте EA серверной части батлы я не смог, пришлось рыскать по интернету в писках файла bf2-linuxded-1.5.3153.0-installer.sh.

Качаем фаил bf2-linuxded-1.5.3153.0-installer.sh:

sudo wget найденная/вами/ссылка/bf2-linuxded-1.5.3153.0-installer.sh

После завершения закачки установка:

sudo chmod +x bf2-linuxded-1.5.3153.0-installer.sh
sudo ./bf2-linuxded-1.5.3153.0-installer.sh

После установки правим конфиг сервера:

sudo nano /server/bf2/mods/bf2/settings/serversettings.con

Примерное содержание файла конфигурации и необходимые правки в нем:

sv.serverName "" //Имя сервера
sv.password "" //Пароль к серверу
sv.internet 1 //Ставим 1, сервер то у нас ранговый.
sv.serverIP "XX.XX.XX.XX" //Адрес сервера
sv.serverPort 16567 //Порт на котором будет висеть сервер
sv.welcomeMessage "" //Текст приветствия
sv.punkBuster 1 //Включить punkBuster
sv.ticketRatio 100 //Назначить 100 тикетов стартовым значением в начале раунда
sv.roundsPerMap 3 //Раундов на карту
sv.timeLimit 1800 //Время раунда, 1800 секунд = 30 минут
sv.scoreLimit 0 //Лимит очков для игроков
sv.autoBalanceTeam 1 //Включить автобаланс
sv.useGlobalRank 1
sv.useGlobalUnlocks 1 //Использовать глобальные анлоки.
sv.friendlyFireWithMines 1 //Подрываться на своих минах

Вот в принципе и все... К запуску готовы!

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

Установка статистики на сервер

Для ведения статистики нам помогут скрипты, которые можно скачать с сайта bf2statistics.com. Нам необходимо скачать фаил BF2Statistics 1.5.1 (единственное, нужно зарегестрироватся на сайте для получения доступа к файлам).

Содержание архива:

  • Client Files
  • Server Files
  • Web Files

Начнем с самого простого. Настройка базы данных.

mysql -u root -p
CREATE DATABASE `bf2stats` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;

База готова!

Настройка python-части

Из папки Server Files копируем содержимое в папку с нашим сервером (/server/bf2) с заменой файлов соотв.

Редактируем файл /server/bf2/python/bf2/BF2StatisticsConfig.py:

sudo nano /server/bf2/python/bf2/BF2StatisticsConfig.py
===========================================================
# ------------------------------------------------------------------------------
# Backend Web Server
# ------------------------------------------------------------------------------
http_backend_addr = `ВАШ.IP.АДРЕС`
http_backend_port = 80
http_backend_asp = `/ASP/bf2statistics.php`
 
# ------------------------------------------------------------------------------
# Player Manager
# ------------------------------------------------------------------------------
pm_backend_pid_manager = 1
pm_local_pid_txt_file = `python/bf2/pid.txt` # Relative from BF2 base folder
pm_ai_player_addr = `ВАШ.IP.АДРЕС` # Not recommended to change

Сохраняем.

Настройка ASP части

Копируем папку ASP, а так же все файлы из каталога bf2sclone из каталога Web Files в нашу директорию с сайтом (/server/site), я это делал при помощи FTP сервера и файлового менеджера mc.

Чтобы не парится с правами, на папку /server/site я установил права доступа 777:

sudo chmod 777 -R /server/site

Если вам важна безопасность, то вот список файлов с правами доступа 777 которые необходимы для сервера:

  • /ASP/_config.php
  • /ASP/_config.php.bak
  • /ASP/_backup
  • /ASP/logs
  • /ASP/logs/_processed

Настроим ASP часть статистики.

Редактируем /server/site/sys-games/ASP/system/config/config.php:

sudo nano /server/site/sys-games/ASP/system/config/config.php
===============================================================
$db_host = `ВАШ.IP.АДРЕС`; #Адрес хоста базы данных
$db_name = `bf2stats`; # Имя базы данных
$db_user = `root`; # Логин к базе
$db_pass = `my_pass`; # Пароль к базе
$admin_user = `admin`; # Логин к админке
$admin_pass = `admin_password`; # пароль к админке
$admin_hosts = array(`127.0.0.1`,`ВАШ.IP.АДРЕС/подсеть`); # IP и диапазоны IP через запятую с которых будет доступна Web-админка
$stats_lan_override = `ВАШ.IP.АДРЕС`;
$stats_local_pids = array(`LocalPlayer01`,`ВАШ.IP.АДРЕС`,`LocalPlayer02`,`ВАШ.IP.АДРЕС`);
$game_hosts = array(`127.0.0.1`,`ВАШ.IP.АДРЕС`,`ВАШ.IP.АДРЕС/24`); # IP-адреса с которых разрешено принимать данные об игре и статистики. То есть фактически адреса серверов.

Далее открываем браузер, переходим по адресу http://ваш.ip.адрес/ASP. Откроется админка, заходим с учетными данными которые вы ввели при редактировании конфигурационного файла. В левом меню нажимаем Install DB.

После установки базы, вам будет предоставлен отчет о пройденном тесте БД. Если все нормально то напроив каждого пункта будет значение Passed.

Далее перейдя в левом меню "System" -> "Edit Configuration", вы можете более детально рассмотреть конфигурацию сервера.

Настрйока Web обвязки

Далее открываем браузер, переходим по адресу http://ваш.ip.адрес/. Откроется страница установки web обвязки сервера статистики, выполните указания установочного скрипта.
После удачной установки можете отредактировать конфигурационный фаил обвязки:

sudo nano /server/site/config.inc.php
======================================================
$DBIP = `localhost`; //Хост базы данных статистики
$DBNAME = `bf2stats`; //Имя базы данных статистики
$DBLOGIN = `root`; // Имя пользователя БД
$DBPASSWORD = ``; // Пароль к БД
 
$TITLE = ``; //Заголовок окна статистики

На данном этапе установка статистики завершена. Как обычно, берем большой напильник и допиливаем наш "паровоз до состояния корабля"...

Работа с напильником

Чтобы наш сервер не проверял валидность ключей:
Устанавливаем пакет iptables:

sudo apt-get install iptables

Далее я добавил в конфигурацию "при подключении к сети" такие строки с блокировкой портов:

sudo nano /etc/network/if-up.d/upstart
iptables -A INPUT -m udp -p udp --sport 29910 -s 0/0 -j DROP
iptables -A INPUT -m udp -p udp --sport 139 -s 0/0 -j DROP
iptables -A INPUT -m tcp -p tcp --sport 29910 -s 0/0 -j DROP
iptables -A INPUT -m tcp -p tcp --sport 1433 -s 0/0 -j DROP
iptables -A INPUT -m tcp -p tcp --sport 1434 -s 0/0 -j DROP
iptables -A INPUT -m tcp -p tcp --sport 139 -s 0/0 -j DROP

Для смены карт на сервере необходимо отредактировать фаил /server/bf2/mods/bf2/settings/maplist.con:

sudo nano /server/bf2/mods/bf2/settings/maplist.con
=====================================================
//mapList.append ИМЯ_КАРТЫ ТИП_ИГРЫ КОЛИЧЕСТВО_ИГРОКОВ
mapList.append mashtuur_city gpm_cq 16
mapList.append road_to_jalalabad gpm_cq 16
mapList.append sharqi_peninsula gpm_cq 16

Политика безопасности нашего домена не разрешает использовать vbs скрипт который предлагают нам на сайте bf2statistic.com. Поэтому я пошел другим путем.

В папке %SystemRoot%/Drivers/etc я создал фаил hosts.ics в который добавил строку:

ВАШ.IP.АДРЕСС bf2web.gamespy.com

Данная строка позволяет редиректить нашу игру к нам на сервер.

Запуск сервера

Думаю все. Можно запускать сервер:

cd /server/bf2
./start.sh

или через screen:

sudo screen
cd /server/bf2
./start.sh

Отвязываемся от screen комбинацией клавиш Ctrl+A затем нажимаем D.

На этом статья завершена.

Ищите как составить договор залога? Вы найдёте всю нужную информацию здесь.