Доброго времени суток Хабра-сообщество!
Сегодня я расскажу вам как установить и настроить игровой сервер 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-адреса с которых разрешено принимать данные об игре и статистики. То есть фактически адреса серверов.
Далее открываем браузер, переходим по адресу 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
sudo ./start.sh
или через screen
sudo screen
cd /server/bf2
sudo ./start.sh
Отвязываемся от screen комбинацией клавиш Ctrl+A затем нажимаем D.
На этом статья завершена, если у ваз возникли вопросы или неполадки, консультируйтесь со мной в комментариях.
Автор: btgsystem