Новые сообщения · Участники · Правила форума · Поиск · RSS
  • Страница 1 из 1
  • 1
[Гайд] Компиляция MaNGOS под Linux на примере Gentoo
Дата: Пятница, 12.09.2014, 18:00 | Сообщение # 1
Постоянный
Сообщений:
1365
Награды:
1
Репутация:
16
Замечания:
0%
Pre-Install
To begin, you must install the following: (Enables you to compile MaNGOS)
GCC >= 4.0 ( gcc / g++ / cpp / fort77 / g77 / gpp)
CMake >= 2.8 (you may need to download and compile from sources if your packaged version is too old)
automake (not necessary with new cmake build method)
autoconf (not necessary with new cmake build method)
glibc & glibc-dev(glibc headers) [ libc6 ]
make
mysql-client 4.1 or 5.x libs and development files (-dev or -devel package) that match your mysql server
libtool
OpenSSL with development files (libssl-dev or similar package name)
subversion
git
zlib/libz with development files
Optionally (saves compile time):
ACE >= 5.6.3
TBB


Code
emerge -avt dev-libs/ace dev-cpp/tbb



Получаем исходники
Code
mkdir /storage/mangos
git clone git://github.com/mangos/mangos.git /storage/mangos
mkdir -p /storage/mangos/src/bindings/ScriptDev2
git clone git://github.com/scriptdev2/scriptdev2.git /storage/mangos/src/bindings/ScriptDev2



Накладываем патч ScriptDev2 на сорцы MaNGOS
Code
cd /storage/mangos/
git apply /storage/mangos/src/bindings/ScriptDev2/patches/MaNGOS-*-ScriptDev2.patch



Конфигурация и компиляция
Code
mkdir build
cd build
cmake ../ -DPREFIX=/opt/mangos -DPCH=1 -DACE_USE_EXTERNAL=1 -DDEBUG=0 -DTBB_USE_EXTERNAL=0



Запускаем компиляцию и установку
Code
make && make install



Настраиваем MySQL:
Code
nano /etc/mysql/my.cnf

[mysqld]key_buffer = 100M
max_allowed_packet = 100M
thread_stack = 50M
thread_cache_size = 8
query_cache_limit = 50M
query_cache_size = 512M
/etc/init.d/mysql restart



Что бы начать работать с базой я бы порекомендовал изменить дефолтный пароль к базе Mangos:
Code
nano /storage/mangos/sql/create_mysql.sql


Находим строчку:
Code
CREATE USER 'mangos'@'localhost' IDENTIFIED BY 'mangos';


Меняем на свое:
Code
CREATE USER 'ИМЯ'@'localhost' IDENTIFIED BY 'ПАРОЛЬ';



Создаем базы:
Code
mysql -p'пароль' < /storage/mangos/sql/create_mysql.sql
mysql -p'пароль' < /storage/mangos/src/bindings/ScriptDev2/sql/scriptdev2_create_database.sql
mysql -p'пароль' scriptdev2 < /storage/mangos/src/bindings/ScriptDev2/sql/scriptdev2_create_structure_mysql.sql



Заполняем базу:
Code
mysql -p'пароль' mangos < /storage/mangos/sql/mangos.sql
mysql -p'пароль' characters < /storage/mangos/sql/characters.sql
mysql -p'пароль' realmd < /storage/mangos/sql/realmd.sql
mysql -p'пароль' scriptdev2 < /storage/mangos/src/bindings/ScriptDev2/sql/scriptdev2_script_full.sql



Заселяем мир существами:
Code
cd /opt/mangos
emerge -avt p7zip
wget https://github.com/KiriX...._R43.7z
p7zip -d ./YTDB_0.14.4_R610_MaNGOS_R11835_SD2_R2319_ACID_R309_RuDB_R43.7z
mysql -p'пароль' mangos < ./YTDB_0.14.4_R610_MaNGOS_R11835_SD2_R2319_ACID_R309_RuDB_R43.sql



Изменяем структуру базы под текущую ревизию Mangos:
Code
cd /storage/mangos/sql/updates/
for sqlstatement in `ls *mangos*.sql`; do mysql -p'пароль' -D mangos
< $sqlstatement; done; for sqlstatement in `ls *characters*.sql`; do
mysql -p'пароль' -D characters < $sqlstatement; done; for
sqlstatement in `ls *realmd*.sql`; do mysql -p'пароль' -D realmd <
$sqlstatement; done;



Изменим настройки сервера:
Code
mysql -u ИМЯ -p'ПАРОЛЬ'
USE realmd;
UPDATE `realmlist` SET `name` = 'ИМЯ_СЕРВЕРА' , `address` = 'IP_АДРЕС' WHERE `id` = '1';
exit;



Необходимо поставить версию реалма:
Code
mysql -u ИМЯ -p'ПАРОЛЬ'
UPDATE `realmd`.`account` SET `expansion`='2'
exit;


0 = "Обычный"
1 = "Огненный крестовый поход"
2 = "Гнев короля личей"



Это влияет на то доступны ли дренеи и кровавые эльфы, доступен ли рыцарь смерти.

Приступаем к настройки сервера:
Code
cp /opt/mangos/etc/mangosd.conf.dist /opt/mangos/etc/mangosd.conf
cp /opt/mangos/etc/realmd.conf.dist /opt/mangos/etc/realmd.conf
mkdir -p /opt/mangos/logs/


Code
nano /opt/mangos/etc/mangosd.conf
DataDir = "/opt/mangos/"
LogsDir = "/opt/mangos/logs/"
LoginDatabaseInfo     = "localhost;3306;ИМЯ;ПАРОЛЬ;realmd"
WorldDatabaseInfo     = "localhost;3306;ИМЯ;ПАРОЛЬ;mangos"
CharacterDatabaseInfo = "localhost;3306;ИМЯ;ПАРОЛЬ;characters"


Code
nano /opt/mangos/etc/realmd.conf
LoginDatabaseInfo = "localhost;3306;ИМЯ;ПАРОЛЬ;realmd"
LogsDir = "/opt/mangos/logs/"



Приступаем к извлечению карт, необходимо для игры.
Предварительно нужно скачать клиент WoW для версии 3.3.5a.
На момент написания статьи Mangos был версии 3.3.5а.

Что бы определить какую версию клиента нам качать, сперва смотрим какая текущая ревизия Mangos у нас:
Code
cat /storage/mangos/src/shared/revision_nr.h|grep "define REVISION_NR"|awk '{print $3}'


Идем по этому адресу:
Code
github.com/mangos/mangos


И смотрим вверху:
Code
"MaNGOS" is a full featured World of Warcraft server, including authentication,
client updates, and world content serving. Compatible with World of
Warcraft client 3.3.5a (build 12340).



Скопируйте содержимое /storage/mangos/contrib/extractor_binary к себе на компьютер, желательно с ОС Windows

Создаем экстракт файл - ExtractResources.bat, для автоматического извлечения ресурсов со следующим содержанием:
Code
ad.exe
pause
vmapExtractor3.exe -d B:\ПУТЬ\ДО\WoW3.3.5a\Data
md vmaps
vmap_assembler.exe buildings vmaps
rem pause
md mmaps
set PARAMS=--silent
rem set EXCLUDE_MAPS=
rem EXCLUDE_MAPS="0 1 530 571" # example to exclude the continents
set OFFMESH_FILE=offmesh.txt
set OFFMESH=--offMeshInput %OFFMESH_FILE%
set MAP_LIST_A=1 37 543 595 289 572 529 562 531 269 47 649 650 599 548
559 429 230 573 349 13 25 409 229 43 48 546 553 547 604 545 90 576
set MAP_LIST_B=571 628 560 509 723 532 607 600 668 33 585 566 389 601
369 129 550 189 542 70 109 554 632 552 555 540 598 450 558 249 35 624
557
set MAP_LIST_C=0 631 609 534 533 619 469 602 329 580 615 578 36 556 44 565 544 34 617 608 618 449 616 42 451 582 584 586 587 588 589
590 591 592
set MAP_LIST_D=530 169 575 603 309 574 30 564 568 209 724 658 489  593 594 596 597 605 606 610 612 613 614 620 621 622 623 641
642 647 672 673 712 713 718
MoveMapGen.exe %PARAMS% %OFFMESH% %MAP_LIST_A% %MAP_LIST_B% %MAP_LIST_C% %MAP_LIST_D%
pause



Копируем созданные папки с файлами maps, dbc, vmaps к каталог /opt/mangos/ на своем домашнем сервере.

Настраиваем запуск:
Code
nano /opt/mangos/bin/mangos.sh
#!/bin/sh
CMDNAME='mangos-worldd'
RESTARTCMD='/opt/mangos/bin/mangosd'
SLEEPTIME=1
while test 1
do
             OUTPUT=`ps ax | grep $CMDNAME | grep -v grep`
                     
             if ! echo $OUTPUT | grep $CMDNAME 1>/dev/null ; then
                 echo Restarting service...
                 $RESTARTCMD
             else
                 echo Server Online...
             fi
             sleep $SLEEPTIME
done


Code
nano /opt/mangos/bin/realm.sh
#!/bin/sh
CMDNAME='mangos-realmd'
RESTARTCMD='/opt/mangos/bin/realmd'
SLEEPTIME=1
while test 1
do
             OUTPUT=`ps ax | grep $CMDNAME | grep -v grep`
                     
             if ! echo $OUTPUT | grep $CMDNAME 1>/dev/null ; then
                 echo Restarting service...
                 $RESTARTCMD
             else
                 echo Server Online...
             fi
             sleep $SLEEPTIME
done



Не забываем про нужные права на mangos.sh и realm.sh:
Code
chmod +x /opt/mangos/bin/mangos.sh
chmod +x /opt/mangos/bin/realm.sh



Вот и завершающий базовый скрипт для запуска нашего домашнего сервер WoW:
Code
nano /opt/mangos/start
screen -AmdS world /opt/mangos/bin/mangos.sh
screen -AmdS realm /opt/mangos/bin/realm.sh
chmod +x /opt/mangos/start



Можно запускать:
Code
/opt/mangos/start



Нормальный скрипт потом навояю как нибудь, а пока остановимся на этом.
Остановить сервер можно так:
Code
killall screen



Приступаем к настройки сайта для нашего сервер WoW.
Предполагается что веб сервер уже настроен.
У меня крутится на nginx+php-fpm.
Если нужно выложу и гайд по настройки этой связки.

Скачиваем последний релиз сайта:
Code
mkdir /var/www/wow
svn co http://mwenhanced.googlecode.com/svn/trunk /var/www/wow



Накатываем его базу:
Code
mysql -p'пароль' realmd <  /var/www/wow/sql/full_install.sql



Что бы не париться с правами можно сделать так:
Code
cd /var/www/wow
find ./ -type d -exec chmod 777 "{}" \;
find ./ -type f -exec chmod 666 "{}" \;



Можно настроить подключение к базе ручками, но есть более простой способ.
Сперва разрешаем настройку:
Code
mv /var/www/wow/install/DISABLE_INSTALLER.php /var/www/wow/install/_DISABLE_INSTALLER.php



Идем на страничку настройки
http://wow.ВАШ_ДОМЕН.org/install/

После настройки НУЖНО вернуть все обратно:
Code
mv /var/www/wow/install/_DISABLE_INSTALLER.php /var/www/wow/install/DISABLE_INSTALLER.php



Если с сервером играться не будете то лучше удалить каталог INSTALL:
Code
rm -rf /var/www/wow/install



Так как обновления веб интерфейса ака сайта отстает от ревизий, нужно адаптировать его.
В общем - работа над ошибками.

У меня, пока, были следующие ошибки.
Текст не сохранил, ругалась на колонку 'data'.
Исправляем следующим способом.

Заходим к католог самого сайта:
Code
cd /var/www/wow/


Следующим запросом я нашел файлы в которых строились запросы:
Code
egrep -R 'data,' ./|grep -v 'svn'|grep -e 'query' -e grep 'data'


Нужны эти два файла:
Code
nano ./components/server/server.playersonline.php
nano ./components/server/server.gmonline.php
  • Страница 1 из 1
  • 1
Поиск: