Дата: Пятница, 12.09.2014, 18:00 | Сообщение # 1
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
|