В этой статье я опишу процесс сборки и установки сервера World of Warcraft на базе открытого дистрибутива Mangos (http://getmangos.com/) который является бесплатной альтернативой продукту от Blizzard, но не является его точной копией, так как Blizzard не открывал исходный код своего сервера. Основой сервера является база данных mysql и два небольших демона для работы с ней. Я использовал дистрибутив Ubuntu 8.04 для сборки.
Установим все необходимое для сборки и дальнейшей работы нашего игрового сервера
Код:
apt-get install build-essential gcc g++ cpp automake git-core autoconf make patch libmysql++-dev libtool libcurl4-openssl-dev libssl-dev grep binutils subversion zlibc libc6 nano mysql-server unrar-free openssl
Затем скачаем исходные коды сервера и scriptdev2 который необходим для его работы
Код:
git clone git://github.com/mangos/mangos.git
cd mangos
svn co https://scriptdev2.svn.sourceforge.net/svnroot/scriptdev2/ src/bindings/ScriptDev2/
Затем применим патчи для исходных текстов
Код:
git am src/bindings/ScriptDev2/patches/MaNGOS-*
Затем переходим к сборке нашего сервера, это может занять некоторое время
Код:
autoreconf --install --force
mkdir objdir
cd objdir
../configure --prefix=/opt/mangos --sysconfdir=/opt/mangos/etc --enable-cli --enable-ra --datadir=/opt/mangos
make -j 2 (если у вас двухядерный процессор, или -j 4, если у вас четырехядерный процессор)
make install
Теперь можно начать настройку игрового сервера, для этого перейдите в его директорию
Код:
cd /opt/mangos/
Скопируйте файлы конфигурации из созданных автоматически при сборке сервера
Код:
cp etc/mangosd.conf.dist etc/mangosd.conf
cp etc/realmd.conf.dist etc/realmd.conf
Скачаем базу данных для нашего сервера
Код:
wget https://unifieddb.svn.sourceforge.net/svnroot....480.rar --no-check-certificate
wget https://sd2-acid.svn.sourceforge.net/svnroot....cid.sql --no-check-certificate
unrar-free e UDB*
Теперь можно создать и заполнить базы данных mysql, для этого вам понадобится ваш пароль пользователя root к mysql, вы задавали его в процессе установки пакета mysql-server, в примере указано -pYOURPASS, замените YOURPASS на ваш пароль.
Создадим нужные базы данных и таблицы в них
Код:
mysql -pYOURPASS < /opt/mangos/mangos/sql/create_mysql.sql
mysql -pYOURPASS < ~/mangos/src/bindings/ScriptDev2/sql/scriptdev2_create_database.sql
mysql -pYOURPASS scriptdev2 < ~/mangos/src/bindings/ScriptDev2/sql/scriptdev2_create_structure_mysql.sql
Теперь заполним служебные базы данных сервера
Код:
mysql -pYOURPASS mangos < /opt/mangos/mangos/sql/mangos.sql
mysql -pYOURPASS characters < /opt/mangos/mangos/sql/characters.sql
mysql -pYOURPASS realmd < /opt/mangos/mangos/sql/realmd.sql
mysql -pYOURPASS scriptdev2 < ~/mangos/src/bindings/ScriptDev2/sql/scriptdev2_script_full.sql
Затем заполним базу данных игрового мира
Код:
mysql -pYOURPASS mangos < ~/UDB_0.11.6_Core_8734_SD2_1480.sql
mysql -pYOURPASS mangos < ~/3.0.1_acid.sql
mysql -pYOURPASS mangos < ~/mangos/src/bindings/ScriptDev2/sql/mangos_scriptname_full.sql
Если у вас есть желание русифицировать вашу базу данных, а именно квесты, некоторые предметы и тд, вы можете установить RUDB, скачать которую вы можете по ссылке
http://sourceforge.net/projects/rudb/
И наконец применим обновления баз данных, для этого есть небольшой скрипт на питоне, замените в нем YOURPASS на ваш пароль от mysql
Код:
#!/usr/bin/env python
import glob, os
patches = glob.glob('*.sql')
patches = sorted(patches)
for x in patches:
db = x.split("_")[2].replace('.sql', '')
os.system("mysql -v -p{YOURPASS} " + db + " < " + x)
Поместите скрипт в директорию /opt/mangos/mangos/sql/updates/, затем сделайте исполняемым командой chmod +x scriptname (scriptname замените на ваше имя скрипта) и выполните его там для применения патчей баз данных.
Затем назначим имя нашему игровому миру, для этого выполните слудующие команды к БД mysql, заменив в них Your Realm Name на имя вашего мира и Your IP на адрес вашего сервера
Код:
mysql -pYOURPASS
mysql> use realmd;
mysql> UPDATE realmlist SET name = 'Your Realm Name' WHERE id = 1;
mysql> UPDATE realmlist SET address = 'Your IP' WHERE id = 1;
mysql> exit
С базой данных пока все, перейдем к получению нужных для работы сервера файлов, от которых будет зависить версия клиента используемого для игры на сервере. Нам понадобится Windows версия игры с нужным нам патчем, например возьмем версию 3.2.2 (сборка 10505). От вас потребуется скачать на машину с клиентом игры директорию ~/mangos/contrib (она находится в директории с исходными текстами Mangos) с вашего сервера, и найти в ней следующие файлы
Код:
ad.exe
makevmaps_SIMPLE.bat
make vmaps.bat
splitConfig.txt
vmap_assembler.exe
vmapextract_v2.exe
Поместите эти файлы в директорию с установленным клиентом World of Warcraft, затем запустите файл ad.exe, он сделает все необходимое (распакует файл патча и извлечет оттуда необходимое), процесс может занять длительное время. После завершения работы экстрактора вы увидите три новые директории, "maps", "dbc", и "vmaps". Данные директории вам надо загрузить обратно на ваш сервер и поместить в директорию /opt/mangos/bin.
Для запуска нашего WoW сервера нам понадобится screen, обычно он уже установлен, если нет то установите его, затем создадим простенький стартовый скрипт для запуска нашего сервера в дальнейшем.
Код:
#!/bin/bash
cd /opt/mangos/bin
echo "Starting mangos-realmd"
screen -A -m -d -S realmd ./mangos-realmd
echo "Done..."
echo "Starting mangos-worldd"
screen -A -m -d -S worldd ./mangos-worldd
echo "done"
exit 0
Сделайте скрипт исполняемым командой chmod +x scriptname.
Теперь попробуем запустить наш сервер, для начала без screen, откройте две консоли, в первой выполните команды
Код:
cd /opt/mangos/bin
./mangos-realmd
Затем во второй консоли выполните команды
Код:
cd /opt/mangos/bin
./mangos-worldd
Если все прошло нормально, завершите screen и запустите созданный нами ранее скрипт для старта сервера.
Для управления сервером через веб интерфейс существует несколько разных скриптов, но все они не очень богаты функционалом, могут не работать корректно с вашей версией патча, поэтому готовьтесь что возникнут некоторые трудности при их настройке. Небольшую коллекцию веб обвязок для Mangos можно найти по ссылке: http://rumangos.ru/index.php?do=cat&category=www
На этом все, надеюсь у вас все получится.
Источник