Battlefield 2 Dedicaded Ranked Server v1.50 + bf2statistics на FreeBSD
Содержание
- 1 Установка и настройка Battlefield 2 Dedicaded Ranked Server v1.50 + bf2statistics на FreeBSD
- 1.1 Включаем режим совместимости с Linux.
- 1.2 Устанавливаем и настраиваем сервер Battlefield 2 Dedicaded Server
- 1.3 Прикручиваем статистику
Установка и настройка 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 найдет вам их.
Включаем режим совместимости с 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.
Устанавливаем и настраиваем сервер Battlefield 2 Dedicaded Server
Создаем в системе нового пользователя bf2 с помощью команды
adduser<p>Логинимся под юзером 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.
Вроде с сервером все, теперь надо разобраться со статистикой.
Прикручиваем статистику
Все действия выполняем от root. Если Вы умеете устанавливать Apache+php+MySQL, то сразу переходим к пункту 3.5. Настройка Apache
Установка MySQL
cd /usr/ports/databases/mysql51-server/ make install clean
Добавляем в конец /etc/rc.conf
mysql_enable="YES"
Запуск и настройка 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;
Установка web-сервера Apache
Мы установим Apache версии 1.3, его возможностей будет с лихвой хватать для наших задач.
cd /usr/ports/www/apache13 make install clean
для автозапуска добавляем в /etc/rc.conf>
apache_enable="YES"
Запуск осуществляем командой
apachectl start
Установка php5 с расширениями
cd /usr/ports/lang/php5 make install clean cd /usr/ports/lang/php5-extensions/ make install clean
Запуск и настройка 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
Настройка статистики bf2statistics
Качаем последнюю версию bf2statistics отсюда. На момент написания статьи последняя версия 1.42.
Распаковываем скаченный архив. Файлы из него нам пригодятся в двух следующих пунктах.
Настройка 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. Все, ваша база данных заполнилась таблицами.
Настройка 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
Установка редиректа портов для локальных пользователей
Если ваши пользователи не имеют анлимитного или бесплатного доступа в сеть 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`ы для серверов.