;)
  thinkIT.ru — первый IT-портал города  
 
 
Первый IT-портал города
 
 
Почта:
Пароль:
    Забыли пароль?
  • Звездные войны: Эпизод I 3D
  • Путешествие-2 3D
  • Значит, война
  • Код доступа «Кейптаун»
  • Такие разные близнецы
  • Хроника
  • На Байкал
  • На грани
  • Все любят китов
  • Одержимая
  • Ржевский против Наполеона 3D

Кино в Таганроге

 

Рубрика: Новая

5
Установка и настройка Battlefield 2 Dedicaded Ranked Server v1.50 + bf2statistics на FreeBSD

Установка и настройка Battlefield 2 Dedicaded Ranked Server v1.50 + bf2statistics на FreeBSD


В статьи описывается установка и настройка выделенного рангового сервера BF2 на ОС FreeBSD.

Автор: Groall | Добавлено: 08 Января, 2010 | Чуток комментариев | Просмотров: 5835

Установка и настройка Battlefield 2 Dedicaded Ranked Server v1.50 + bf2statistics на FreeBSD

Исходные данные. Предполагается, что Вы уже имеете базовые навыки работы в ОС FreeBSD 7.2 i386, т.к. файловые операции и им подобные не расписаны. В локальной сети имеется сервер с IP XX.XX.XX.XX, из Internet`а доступен через NAT. На нем крутятся несколько игровых серверов. Необходимо установить Battlefield 2 Dedicaded Ranked Server v1.50. В дальнейшем рассказе будем использовать IP XX.XX.XX.XX, как принадлежащий нашей машине. Вы замените его на свой во всех конфигах и все. Также нам понадобятся файлы: bf2-linuxded-1.5.3153.0-installer.tgz - архив с сервером, bf2_linuxded150x32crk - крякнутый исполняемый файл для игры с пираткой. Прямые ссылки не указаны, т.к. автор их не помнит, Google найдет вам их.

1. Включаем режим совместимости с Linux.

Добавляем в /etc/rc.conf
linux_enable="YES" 
Добавляем или заменяем строку в /etc/sysctl.conf
compat.linux.osrelease=2.6.16
Выполняем команды:
/etc/rc.d/sysctl start
Устанавливаем эмулятор Linux из портов:
cd /usr/ports/emulators/linux_base-fc6 && make install clean
Если у вас уже стоит эмултяор Linux, то выполняем
kldload linux
Скорее всего подойдут и более старшие версии linux_base. Если же у вас уже установлен эмулятор более младшей версии, то прежде всего следует деинсталлировать его и только потом производить установку linux_base-fc6.

2. Устанавливаем и настраиваем сервер Battlefield 2 Dedicaded Server

Создаем в системе нового пользователя bf2 с помощью команды

adduser

Логинимся под юзером bf2

Скачиваем сервер bf2-linuxded-1.5.3153.0-installer.tgz (смотри первый абзац статьи).

Распаковываем архив с сервером
tar -xzf bf2-linuxded-1.5.3153.0-installer.tgz
Тем самым получим разархивированный шелл файл bf2-linuxded-1.5.3153.0-installer.sh. Запускаем его (Внимание: шелл скрипт надо запускать под bf2 аккаунтом, а не root-ом)
sh bf2-linuxded-1.1.2551.0-installer.sh

Вам надо будет подтвердить 2 лицензионных соглашения, а затем уже можно будет указать path для установки Battlefield 2 сервера.
Укажите /home/bf2/, тогда сервер установится в каталог /home/bf2/bf/

После установки вы можете подправить конфиг файл /home/bf2/bf2/mods/bf2/settings/serversettings.con. Приведем основные опции и их расшифровки
sv.serverName "TTI Battlefield 2 Server" Имя сервера 
sv.password "" Пароль к серверу, лучше оставить пустым 
sv.internet 1 Важный параметр, определяет, будет ли сервер ранговым, будет ли включен pb, будет ли сервер регистрироваться в списках Internet-серверов 
sv.serverIP "XX.XX.XX.XX" IP-адрес на котором будет висеть сервер 
sv.serverPort 16567 Порт на котором будет висеть сервер 
sv.welcomeMessage "Welcome to TTI Battlefield 2 Server!" Текст приветствия 
sv.punkBuster 1 Включить punkBuster 
sv.ticketRatio 100 Назначить 100 тикетов стартовым значением в начале раунда 
sv.roundsPerMap 3 Раундов на карту 
sv.timeLimit 1800 Время раунда, 1800 секунд = 30 минут 
sv.scoreLimit 0 Лимит очков для игроков 
sv.interfaceIP "" Оставили этот параметр пустым, возможно, если у вас много интерфейсов на машине, то здесь придется что-то приписать 
sv.adminScript "default" Имя скрипта с администраторскими настройками 
sv.autoBalanceTeam 1 Включить автобаланс 
sv.useGlobalRank 0 
sv.useGlobalUnlocks 1 Использовать глобальные анлоки, сам не разобрался, пока 1 
sv.sponsorText "Sponsor Text" Текст, который будет периодически показывается игрокам 
sv.sponsorLogoURL "http://XX.XX.XX.XX/sp_logo.png" URL логотипа спонсора 
sv.communityLogoURL "http://XX.XX.XX.XX/images/logo/logo_tr.png" URL логотипа сервера 
sv.friendlyFireWithMines 1 Подрываться на своих минах
Остальные параметры можно понять и настроить исходя из их названия.

Скачиваем крякнутый исполняемый файл bf2_linuxded150x32crk для того чтобы играть без лицензионной версии игры. Кладем его в папку bin\ia-32\ в каталоге с сервером.

Редактируем файл start.sh
ищем в нем
exec $BINARY_DIR/bf2 "$@"
заменяем на
#exec $BINARY_DIR/bf2 "$@" exec $BINARY_DIR/bf2_linuxded150x32crk "$@"

Не забудьте сделать файл bf2_linuxded150x32crk выполняемым и указать его владельцем юзера bf2.

Вроде с сервером все, теперь надо разобраться со статистикой.

3. Прикручиваем статистику

Все действия выполняем от root. Если Вы умеете устанавливать Apache+php+MySQL, то сразу переходим к пункту 3.5. Настройка Apache

3.1. Установка MySQL

cd /usr/ports/databases/mysql51-server/ make install clean
Добавляем в конец /etc/rc.conf
mysql_enable="YES"

3.2 Запуск и настройка MySQL.

Стартуем и устанавливаем пароль рута:
/usr/local/etc/rc.d/mysql-server start /usr/local/bin/mysqladmin -u root password 'new-password' new-password - это пароль от root юзера мускула.
Запускаем утилиту mysql
mysql -u root -p
Создаём базу под bf2statistics, назовём ее bf2stats.
CREATE DATABASE `bf2stats` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
Создаём пользователя и наделяем правами.
GRANT ALL PRIVILEGES ON * . * TO 'bf2'@'XX.XX.XX.XX' IDENTIFIED BY 'my_pass' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0;
Обновляем привилегии.
FLUSH PRIVILEGES;

3.3. Установка web-сервера Apache

Мы установим Apache версии 1.3, его возможностей будет с лихвой хватать для наших задач.
cd /usr/ports/www/apache13 make install clean
для автозапуска добавляем в /etc/rc.conf>
apache_enable="YES"
Запуск осуществляем командой
apachectl start

3.4. Установка php5 с расширениями

cd /usr/ports/lang/php5 make install clean cd /usr/ports/lang/php5-extensions/ make install clean

3.5. Запуск и настройка web-сервера Apache

Немного проясню ситуацию с настройкой Apache. Т.к. на этой же машине крутилось еще несколько игровых серверов, то надо было сделать несколько виртуальных доменов, по одному для каждого сервера, и оставить как виртуальный домен XX.XX.XX.XX. Впрочем, в любом случае удобнее будет сделать, как сделано здесь.

Создаем два каталога. В /usr/local/www/bf2 будет находиться web-морда сервера, например REW. В /usr/local/www/logs будут храниться логи доступа и ошибок домена.
mkdir /usr/local/www/bf2 mkdir /usr/local/www/logs
Устанавливаем их владельца www:www
chown www:www /usr/local/www/apache22/bf2/ /usr/local/www/logs
Редактируем файл настроек Apache
ee /usr/local/etc/apache/httpd.conf
Добавляем в конец файла
NameVirtualHost *:80 
<VirtualHost *:80> 
ServerAdmin admin@mail.ru 
DocumentRoot /usr/local/www/bf2 
#доменное имя вашего сервера 
ServerName bf2.your_domen.su 
#две строки отвечающие за ведение и ротацию логов, замените bf2.your_domen.su на свое доменное имя 
ErrorLog "|/usr/local/sbin/rotatelogs /usr/local/www/logs/bf2.your_domen.su.error.log.%Y-%m-%d 5M" 
CustomLog "|/usr/local/sbin/rotatelogs /usr/local/www/logs/bf2.your_domen.su.-access_log.%Y-%m-%d 100M" common 
<Directory "/usr/local/www/bf2"> 
Options FollowSymLinks -Includes 
AllowOverride All 
Order allow,deny 
Allow from all 
AddType text/html .shtml 
AddType text/html .htm 
AddType application/x-httpd-php .php 
AddType application/x-httpd-php-source .php4s 
AddHandler server-parsed .shtml 
AddHandler server-parsed .htm 
DirectoryIndex index.php 
</Directory> 
</VirtualHost> 
<VirtualHost *:80> 
ServerAdmin admin@mail.ru 
DocumentRoot /usr/local/www/data 
#доменное имя вашего сервера 
ServerName XX.XX.XX.XX 
#две строки отвечающие за ведение и ротацию логов, замените XX.XX.XX.XX на свой IP 
ErrorLog "|/usr/local/sbin/rotatelogs /usr/local/www/logs/XX.XX.XX.XX.error.log.%Y-%m-%d 5M" 
CustomLog "|/usr/local/sbin/rotatelogs /usr/local/www/logs/XX.XX.XX.XX.-access_log.%Y-%m-%d 100M" common 
<Directory "/usr/local/www/data"> 
Options FollowSymLinks -Includes 
AllowOverride All 
Order allow,deny 
Allow from all 
AddType text/html .shtml 
AddType text/html .htm 
AddType application/x-httpd-php .php 
AddType application/x-httpd-php-source .php4s 
#ЭТА СТРОКА НУЖНА ДЛЯ ПРАВИЛЬНОЙ ОБРАБОТКИ СКРИПТОВ СТАТИСТИКИ 
AddType application/x-httpd-php .aspx 
AddHandler server-parsed .shtml 
AddHandler server-parsed .htm 
DirectoryIndex index.php 
</Directory> 
</VirtualHost>
Первый домен нужен для web-морды сервера. Второй для ведения статистики. Перезагружаем сервер Apache
apachectl restart

3.6. Настройка статистики bf2statistics

Качаем последнюю версию bf2statistics отсюда. На момент написания статьи последняя версия 1.42.

Распаковываем скаченный архив. Файлы из него нам пригодятся в двух следующих пунктах.

3.6.1. Настройка web-части

Папку ASP копируем в каталог /usr/local/www/data

Устанавливаем CHMOD 777 на следующие файлы и папки:

/ASP/_config.php
/ASP/_config.php.bak (for config backups)
/ASP/_backup
/ASP/logs
/ASP/logs/_processed

Редактируем /usr/local/www/data/ASP/_config.php в соответствии с листингом

<?php 
/*************************************** * Battlefield 2 Private Stats Config * **************************************** 
* All comments have been removed from * 
* this file. Please use the Web Admin * 
* to change values. * 
***************************************/ 
$db_expected_ver = '1.4.2'; 
$db_host = 'XX.XX.XX.XX'; 
$db_name = 'bf2stats'; 
$db_user = 'bf2'; 
$db_pass = 'my_pass'; 
$admin_user = 'admin'; 
$admin_pass = 'admin_password'; 
$admin_hosts = array('127.0.0.1','XX.XX.XX.0/32'); # IP и диапазоны IP через запятую с которых будет доступна Web-админка 
$admin_log = 'logs/_admin_event.log'; 
$admin_backup_path = '/usr/local/www/data/ASP/_backups/'; 
$admin_backup_ext = '.bak'; 
$admin_page_size = 25; 
$admin_ignore_ai = 1; 
$stats_ext = '.txt'; 
$stats_logs = 'logs/'; 
$stats_logs_store = 'logs/_processed/'; 
$stats_move_logs = 1; 
$stats_min_game_time = 0; 
$stats_min_player_game_time = 0; 
$stats_players_min = 1; 
$stats_players_max = 256; 
$stats_rank_check = 0; 
$stats_rank_tenure = 7; 
$stats_awds_complete = 0; 
$stats_lan_override = 'XX.XX.XX.XX'; 
$stats_local_pids = array('LocalPlayer01','XX.XX.XX.XX','LocalPlayer02','XX.XX.XX.XX'); 
$debug_lvl = 4; 
$debug_log = 'logs/_stats_errors.log'; 
$game_hosts = array('127.0.0.1','XX.XX.XX.XX','XX.XX.XX.40/24'); # IP-адреса с которых разрешено принимать данные об игре и статистики 
$game_custom_mapid = 700; 
$game_unlocks = 0; 
$game_unlocks_bonus = 2; 
$game_unlocks_bonus_min = 1; 
$game_awds_ignore_time = 0; 
$game_default_pid = 29000000; 
?>

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

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

Переходим в каталог /home/bf2/bf2/python/bf2

Копируем все из распакованного ранее каталога "/python/bf2" в "/home/bf2/bf2/python/bf2" (включая поддиректории), с заменой файлов. Редактируем BF2StatisticsConfig.py

ee /home/bf2/bf2/python/bf2/BF2StatisticsConfig.py
в соответствии с листингом
# ------------------------------------------------------------------------------ 
# BF2Statistics 1.4 - Config File 
# ------------------------------------------------------------------------------ 
# Conventions: 
# 0 -> Disable 
# 1 -> Enable 
# ------------------------------------------------------------------------------ 
# ------------------------------------------------------------------------------ 
# Debug Logging 
# ------------------------------------------------------------------------------ 
debug_enable = 1 
debug_log_path = 'python/bf2/logs' # Relative from BF2 base folder 
debug_fraglog_enable = 0 # Detailed 'Fragalyzer' Logs 
# ------------------------------------------------------------------------------ 
# Backend Web Server 
# ------------------------------------------------------------------------------ 
http_backend_addr = 'XX.XX.XX.XX' 
http_backend_port = 80 
http_backend_asp = '/ASP/bf2statistics.php' 
# ------------------------------------------------------------------------------ 
# Snapshot Manager 
# ------------------------------------------------------------------------------ 
snapshot_prefix = 'BF2' # Prefix Snapshots with this tag 
# ------------------------------------------------------------------------------ 
# Medals Processing 
# ------------------------------------------------------------------------------ 
medals_custom_data = '' # Suffix for your custom medals file(s) 
# ------------------------------------------------------------------------------ 
# 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 = 'XX.XX.XX.XX' # Not recommended to change 
# ------------------------------------------------------------------------------ 
# Clan Manager 
# ------------------------------------------------------------------------------ 
enableClanManager = 0 # Use the Clan Manager to control Access to your server! 
serverMode = 0 
# Mode 1: Clan ONLY (Must be on Clan List to Join Server) 
# Mode 2: Priority Proving Grounds (Clan Members AND those players that meet 
# the minimum requirements.Clan Members get priority) 
# Mode 3: Proving Grounds (Clan Members AND those players that meet the 
# minimum requirements) 
# Mode 4: Experts ONLY (Only players that meet the minimum requirements) 
# Mode 0: Public (Free-for-All. No Restrictions!) 
# Clan Manager Criteria 
criteria_data = ( ('clantag', ''), 
# Clan Tag (Matches First Part of Player Name, used for Whitelist) ('score', 0), 
# Minimum Global Score ('rank', 0), 
# Minimum Global Rank ('time', 0), 
# Minimum Global Time Played ('kdratio', 0), 
# Minimum Global Kill/Death Ratio ('country', ''), 
# Registered Country of Origin Code (Seperate multiple by comma ',') ('banned', 10), 
# Maximum banned count! PermBan is ALWAY BlackListed ) 
# ------------------------------------------------------------------------------ 
# Backup Central Community Web Server (OPTIONAL) 
# ------------------------------------------------------------------------------ 
http_central_enable = 0 # Use settings above (0, 1, 2) 
http_central_addr = 'cbd.xxx.aaa' #Address Central STATS Server 
http_central_port = 80 
http_central_asp = '/ASP/bf2statistics.php' 
# Note: this cabalility is for linking stats data to a centrally maintained STATS # 
# server. This could be useful for those who are running a LAN or Tournament # 
# (with local STATS), but wish to have this data credited to their normal STATS # 
# DB. There are three (3) options for the central DB update: # 
# 0: Disabled - 'nuff said! # 
# 1: Sync - This simply copies the SNAPSHOT as-is to the central DB # 
# 2: Minimal - Record everything, except Rank & Award data (typically use # 
# for LANs or Tournaments where local db starts blank) # 
# ------------------------------------------------------------------------------ 
# END CONFIGURATION 
# ------------------------------------------------------------------------------

Отредактируем maplist.con. Приведен пример для четырех карт размером 16.

ee /home/bf2/bf2/mods/bf2/settings/maplist.con
mapList.append strike_at_karkand gpm_cq 16 mapList.append mashtuur_city gpm_cq 16 mapList.append road_to_jalalabad gpm_cq 16 mapList.append sharqi_peninsula gpm_cq 16
Добавляем в /etc/hosts строку
XX.XX.XX.XX bf2web.gamespy.com

Клиентам тоже надо прописать в файл hosts аналогичную строку. Для Windows-клиентов полный путь c:\Windows\System32\drivers\etc\hosts

Уже сейчас можно запускать сервер командой

sh /home/bf2/bf2/start.sh

3.7. Установка редиректа портов для локальных пользователей

Если ваши пользователи не имеют анлимитного или бесплатного доступа в сеть Internet для подключения к серверу Online-аккаунтов, то можно предоставить им возможность подключаться используя наш сервер. Надо осуществлять редирект портов 29900 и 29901 с нашего сервера на IP 207.38.11.34. Для этого можно воспользоваться разными способами (NAT, ipnat, ipfw, pf и т.д.), но самым простым будет использование маленькой программы под названием rinetd. Установим и настроим ее

whereis rinetd rinetd: /usr/ports/net/rinetd cd /usr/ports/net/rinetd make install clean
Редактируем конфигурационный файл
ee /usr/local/etc/rinetd.conf
следующим образом
XX.XX.XX.XX 29900 207.38.11.34 29900 XX.XX.XX.XX 29901 207.38.11.34 29901
Вставим в конец /etc/rc.conf
rinetd_enable="YES"
Запускаем собственно демон
/usr/local/etc/rc.d/rinetd start
И прописываем в клиентском файле hosts следующие строки
XX.XX.XX.XX gpsp.gamespy.com XX.XX.XX.XX gpcm.gamespy.com XX.XX.XX.XX battlefield2d.ms10.gamespy.com XX.XX.XX.XX battlefield2d.available.gamespy.com XX.XX.XX.XX bf2web.gamespy.com
Теперь клиенты без использования интернета смогут подключиться к online-аккаунту.

Можно пробовать коннектиться к серверу и играть!

Отдельно хочется упомянуть форум Боевого народа. Не задавая ни одного вопроса там можно найти ответы на все вопросы, а также web-морды и user/server-bar`ы для серверов.


С уважением, groall

Теги: Battlefield 2, server, dedicated, ranked, FreeBSD, bf2statistics | Оценка: (5) |

Комментарии:

Saint Saint | 08 Января 2010 20:09ссылка сюда
Круто))
Отличная вешь! Теперь надо бэк-линков наставить на неё)))
iNik iNik | 09 Января 2010 09:43ссылка сюда
Спасибо, groall, очень все подробненько расписал.
Беклинков ща наставим.
Sk1f Sk1f | 13 Января 2010 15:17ссылка сюда
Мне тоже очень понравилось описание. И работа сервера! =)
Анонимность Серая Анонимность Серая | 04 Февраля 2011 05:49ссылка сюда
помогите мне зделать свой сервер
Saint Saint | 04 Февраля 2011 09:36ссылка сюдаответ на
всё написано. Осталось научиться читать...
Авторизуйтесь чтобы не быть Серой Анонимностью!

 

Играть в тетрис бесплатно он-лайн, без регистраций и смс =)






Время играть в тетрис!

Играть в тетрис проще простого. Жмем на иконку и вперед.


Найди нас везде!

Теперь ты можешь найти нас во всех популярных социальных сетях. Читай thinkit.ru где тебе удобно!


Банкоматы Таганрога

Теперь ты сможешь легко узнать, где именно находится ближайший банкомат.

 

 
  CreativeCUBE - разработка и поддержка сайтовПроизводство и поддержка сайтов
cCube.ru
  При воровстве с этого сайта ссылка обязательна.
Copyright © 2008-2012 thinkit.ru
Связаться с нами