Автор: Сгибнев Михаил
В связи с появлением большого количества домовых сетей не связанных с Интернет или внешний трафик
в которых обходится очень дорого особое значение приобретают локальные игровые серверы.
Данная статья имеет целью ознакомить читателя с методикой развертывания сервера PvPGN,
обеспечивающего реализацию возможностей BattleNet. В качестве операционной системы используется
NetBSD 2.0.2
Установка сервера Apache
В данной статье я не преследую цели выполнить оптимальную настройку Apache, MySQL или PHP, но устанавливать
эти продукты из системы портов было бы слишком просто. Поэтому, все будем компилировать из исходных текстов.
Итак, первым у нас на очереди вэб-сервер Apache, который займется у нас отображением статистики игры.
Текущей, на момент написания статьи, была версия 2.0.54:
tar xvzf httpd-2.0.54.tar.gz
cd httpd-2.0.54
./configure --prefix=/opt2/apache2 --enable-so --enable-ssl --enable-cgi
make
make install
Установка сервера MySQL
Тут нам будет немного труднее.
Необходимо создать группу и пользователся, с правами которого будет выполняться сервер.
groupadd mysql
useradd -g mysql mysql
Распаковываем архив, компилируем и устанавливаем сервер:
tar xvzf mysql-4.1.14.tar.gz
cd mysql-4.1.14
./configure --prefix=/opt2/mysql
make
make install
cp support-files/my-medium.cnf /etc/my.cnf
Первый запуск:
/opt2/mysql/bin/mysql_install_db --user=mysql
chown -R root .
chown -R mysql var
chgrp -R mysql .
bin/mysqld_safe --user=mysql &
/opt2/mysql/bin/mysqladmin -u root password new-password
Необходимо убедиться в том, что сервер баз данных запустился и готов принимать запросы:
root@netbsd:netstat -an
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
...
tcp 0 0 *.3306 *.* LISTEN
...
или
root@netbsd:ps -aux | grep mysql
root 20364 0.0 0.0 152 4 p0- IW 1:25PM 0:00.03 /bin/sh /opt2/mysql/bin/mysqld_safe --user=mysql
mysql 25919 0.0 0.0 42136 4028 p0- IWa 1:25PM 5:44.66 /opt2/mysql/libexec/mysqld --basedir=/opt2/mysql
Теперь необходимо создать базу данных для нашего игрового сервера:
mysql -u root -p
mysql> create database pvpgn;
mysql> grant all on pvpgn.* to pvpgn@'localhost' identified by "password";
Установка PHP
Здесь все просто:
tar xvzf php-5.0.4.tar.gz
cd php-5.0.4
./configure --with-apxs2=/opt2/apache2/bin/apxs --with-mysql=/opt2/mysql/ --prefix=/opt2/php --disable-libxml
make
make install
Установка сервера PvPGN
Вот мы и подошли к самому захватывающему.
tar xvzf pvpgn-1.7.8.tar.gz
cd pvpgn-1.7.8/src
Местоположение хедеров и библиотек MySQL можно указать через аргументы
LDFLAGS и
CPPFLAGS, я предпочел внести
изменеия непосредственно в файл configure, где добавил соответствующие пути к переменным
mysql_try_libs и
mysql_try_includes.
Далее нам необходимо сделать ход конем:
cp /usr/pkg/lib/mysql/libmysqlclient.so.14 /usr/lib/
иначе, мы получим ошибку при выполнении ./configure.
Далее, нам понадобится GNU версия утилиты make, которую я поставил из прекомпилированных пакетов:
pkg_add gmake-3.80nb4.tgz
Заключительный этап установки:
./configure --prefix="/opt2/bnetd" --disable-d2cs --disable-d2dbs --with-mysql
gmake
gmake install
Настройка сервера PvPGN и отображение статистики игр
Для обеспечения работоспособности сервера необходим пакет
pvpgn-support-1.0.
Здесь все предельно ясно:
tar xvzf pvpgn-support-1.0.tar.gz
cp -r pvpgn-support-1.0/* /opt2/bnetd/var/files/
В файле конфигурации
/opt2/bnetd/etc/bnetd.conf необходимо раскомментировать
и исправить следующую строку:
storage_path = sql:mode=mysql;host=localhost;name=pvpgn;user=pvpgn;pass=password;default=0
Запускаем сервер:
/opt2/bnetd/sbin/bnetd
Проверяем правильность работы:
root@netbsd:netstat -an
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *.6200 *.* LISTEN
tcp 0 0 *.6112 *.* LISTEN
tcp 0 0 *.3306 *.* LISTEN
udp 0 0 *.6112 *.*
Исследуем журнальный файл:
Sep 12 17:08:17 [info ] eventlog_startup: logging event levels: fatal,error,warn,info,debug,trace
Sep 12 17:08:17 [debug] give_up_root_privileges: about to give up root privileges
Sep 12 17:08:17 [info ] pvpgn_greeting: PvPGN BnetD Mod version 1.7.8 process 29451
Sep 12 17:08:17 [info ] storage_init: initializing storage layer (available drivers: file, sql)
Sep 12 17:08:17 [info ] sql_dbcreator: Creating missing tables and columns (if any)
Sep 12 17:08:18 [info ] sql_dbcreator: added missing table BNET to DB
Sep 12 17:08:18 [info ] sql_dbcreator: added missing column uid int NOT NULL PRIMARY KEY to table BNET
Sep 12 17:08:18 [info ] sql_dbcreator: added missing column acct_username varchar(32) to table BNET
Sep 12 17:08:18 [info ] sql_dbcreator: added missing column username varchar(32) to table BNET
Sep 12 17:08:18 [info ] sql_dbcreator: sucessfully issued: && UPDATE BNET SET username = lower(acct_username)
...
Sep 12 17:09:13 [info ] sql_dbcreator: added missing default account to table arrangedteam
Sep 12 17:09:13 [info ] sql_dbcreator: finished adding missing tables and columns
Sep 12 17:09:13 [info ] storage_init: using sql storage driver
Sep 12 17:09:13 [info ] fdw_kqueue_init: fdwatch kqueue() based layer initialized (max 1000 sockets)
Это указывает нам на то, что база данных игры была нормально создана и сервер запущен и выполняется.
В качестве финального аккорда настроим отображение статистики:
tar xvzf pvpgn-stats-2.3.20.tar.gz
mkdir /opt2/apache2/htdocs/stat
cp -r pvpgn-stats-2.3.20/* /opt2/apache2/htdocs/stat
Отредактируйте файл
/opt2/apache2/htdocs/stat/config.inc.php и все, дело сделано :-)
Наиболее полно все вопросы функционирования и настройки сервера PvPGN рассмотрены на
сайте
http://pvpgn.berlios.de/.