
Сегодня я расскажу вам как установить и настроить игровой сервер 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 скриптов.
Для своего удобства, все что касается серверной части я храню в отдельном каталоге в корне системы.
1 2 3 4 |
sudo mkdir /server cd /server sudo mkdir site sudo mkdir bf2 |
Установка сервера Web,PHP,MySQL
Итак, приступим к установке:
1 |
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!".
Изменяем фаил конфигурации виртуальных хостов:
1 |
sudo nano /etc/apache2/sites-available/default |
Стираем содержимое файла и вставляем наш новый виртуальный хост:
1 2 3 4 5 |
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:
1 |
sudo wget найденная/вами/ссылка/bf2-linuxded-1.5.3153.0-installer.sh |
После завершения закачки установка:
1 2 |
sudo chmod +x bf2-linuxded-1.5.3153.0-installer.sh sudo ./bf2-linuxded-1.5.3153.0-installer.sh |
После установки правим конфиг сервера:
1 |
sudo nano /server/bf2/mods/bf2/settings/serversettings.con |
Примерное содержание файла конфигурации и необходимые правки в нем:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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
Начнем с самого простого. Настройка базы данных.
1 |
mysql -u root -p |
1 |
CREATE DATABASE `bf2stats` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; |
База готова!
Настройка python-части
Из папки Server Files копируем содержимое в папку с нашим сервером (/server/bf2) с заменой файлов соотв.
Редактируем файл /server/bf2/python/bf2/BF2StatisticsConfig.py:
1 |
sudo nano /server/bf2/python/bf2/BF2StatisticsConfig.py |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
=========================================================== # ------------------------------------------------------------------------------ # 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:
1 |
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:
1 |
sudo nano /server/site/sys-games/ASP/system/config/config.php |
1 2 3 4 5 6 7 8 9 10 11 |
=============================================================== $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 обвязки сервера статистики, выполните указания установочного скрипта.
После удачной установки можете отредактировать конфигурационный фаил обвязки:
1 |
sudo nano /server/site/config.inc.php |
1 2 3 4 5 6 7 |
====================================================== $DBIP = `localhost`; //Хост базы данных статистики $DBNAME = `bf2stats`; //Имя базы данных статистики $DBLOGIN = `root`; // Имя пользователя БД $DBPASSWORD = ``; // Пароль к БД $TITLE = ``; //Заголовок окна статистики |
На данном этапе установка статистики завершена. Как обычно, берем большой напильник и допиливаем наш "паровоз до состояния корабля"...
Работа с напильником
Чтобы наш сервер не проверял валидность ключей:
Устанавливаем пакет iptables:
1 |
sudo apt-get install iptables |
Далее я добавил в конфигурацию "при подключении к сети" такие строки с блокировкой портов:
1 |
sudo nano /etc/network/if-up.d/upstart |
1 2 3 4 5 6 |
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:
1 |
sudo nano /server/bf2/mods/bf2/settings/maplist.con |
1 2 3 4 5 |
===================================================== //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 в который добавил строку:
1 |
ВАШ.IP.АДРЕСС bf2web.gamespy.com |
Данная строка позволяет редиректить нашу игру к нам на сервер.
Запуск сервера
Думаю все. Можно запускать сервер:
1 2 |
cd /server/bf2 ./start.sh |
или через screen:
1 2 3 |
sudo screen cd /server/bf2 ./start.sh |
Отвязываемся от screen комбинацией клавиш Ctrl+A затем нажимаем D.
На этом статья завершена.