Pull to refresh

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

Reading time 6 min
Views 18K
Доброго времени суток Хабра-сообщество!
Сегодня я расскажу вам как установить и настроить игровой сервер BattleField 2 и прикрутить к нему локальную статистику игроков.


Сервер:
НР ProLiant ML350 G5
Intel® Xeon® 5160
8 Gb RAM ECC
OS 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

Стираем содержимое файла и вставляем наш новый виртуальный хост:
<VirtualHost ВАШ.IP.АДРЕС:80>
        ServerAdmin somemail@some.ru
        ServerName ВАШ.IP.АДРЕС
        ServerAlias ВАШ.IP.АДРЕС
        DocumentRoot /server/site
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
</VirtualHost>

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

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

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

Качаем фаил bf2-linuxded-1.5.3153.0-installer:
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 //Подрываться на своих минах

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

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

Для ведения статистики нам помогут скрипты, которые можно скачать с сайта www.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-адреса с которых разрешено принимать данные об игре и статистики. То есть фактически адреса серверов.

Далее открываем браузер, переходим по адресу ваш.ip.адрес/ASP. Откроется админка, заходим с учетными данными которые вы ввели при редактировании конфигурационного файла. В левом меню нажимаем Install DB.
После установки базы, вам будет предоставлен отчет о пройденном тесте БД. Если все нормально то напроив каждого пункта будет значение Passed.
Далее перейдя в левом меню «System=>Edit Configuration», вы можете более детально рассмотреть конфигурацию сервера.

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

Далее открываем браузер, переходим по адресу ваш.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.

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

UPD1: Исправлены опечатки в тексте.
Tags:
Hubs:
+10
Comments 45
Comments Comments 45

Articles