Сегодня я расскажу вам как установить и настроить игровой сервер 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-адреса с которых разрешено принимать данные об игре и статистики. То есть фактически адреса серверов.
|
Далее открываем браузер, переходим по адресу /ваш.ip.адрес/ASP. Откроется админка, заходим с учетными данными которые вы ввели при редактировании конфигурационного файла. В левом меню нажимаем Install DB.
После установки базы, вам будет предоставлен отчет о пройденном тесте БД. Если все нормально то напроив каждого пункта будет значение Passed.
Далее перейдя в левом меню "System" -> "Edit Configuration", вы можете более детально рассмотреть конфигурацию сервера.
Настрйока Web обвязки
Далее открываем браузер, переходим по адресу /ваш.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.
На этом статья завершена.