|
|
Модератор форума: staford11 |
Форум CMaNGOS Установка / Настройка CMaNGOS [Гайд] Компиляция MaNGOS под Linux на примере Gentoo |
[Гайд] Компиляция MaNGOS под Linux на примере Gentoo |
День добрый.
Благодаря вашему ресурсы нашел ответы на многие вопросы. Хочу поделиться своим хауту, если оно будет кому то полезным. Pre-Install 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/YTDB/blob/master/FullDB/YTDB_0.14.4_R610_MaNGOS_R11835_SD2_R2319_ACID_R309_RuDB_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; Quote 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 Ищем все SELECT, что то типа этого: Code $query = $characters_db->query("SELECT `account`,`data`,`name`,`class`,`race`, `level`, `gender`, `position_x`,`position_y`,`map`,`zone`,`extra_flags` FROM `characters` WHERE `online`='1' ORDER BY `name`"); Удаляем только " data," - получаем это: Code $query = $characters_db->query("SELECT `account`,`name`,`class`,`race`, `level`, `gender`, `position_x`,`position_y`,`map`,`zone`,`extra_flags` FROM `characters` WHERE `online`='1' ORDER BY `name`"); Потом я обнаружил предупреждения, ничего исправим. Quote Notice: Undefined variable: language in /storage/eeepc/www/wow/components/pomm/pomm_conf.php on line 34 Notice: Undefined variable: site_encoding in /storage/eeepc/www/wow/components/pomm/pomm_conf.php on line 36 Notice: Undefined variable: gm_online in /storage/eeepc/www/wow/components/pomm/pomm_conf.php on line 56 Notice: Undefined variable: gm_online_count in /storage/eeepc/www/wow/components/pomm/pomm_conf.php on line 60 Открываем данный файл: Code nano /var/www/wow/components/pomm/pomm_conf.php И в самом начале добавим четыре строчки, что бы было похоже на это: Code $language = ""; $site_encoding = ""; $gm_online = ""; $gm_online_count = ""; $realm_id = 1; $server_arr = $server; У сайта по умолчанию отсутствует русский язык. Но вы можете самостоятельно перевести. Все файлы с языками лежат в /var/www/wow/lang/ Теперь можно заходить и наслождаться! http://wow.ВАШ_ДОМЕН.org/ В принципе все. Указываем на ошибки, исправлю. Надеюсь гайд будет полезен. |
Сообщение # 2 написано 21.03.2012 в 17:01
|
я извиняюсь не подскажете в чем проблемка?
x@x:/opt/mangos/build$ cmake ../ -DPREFIX=/opt/mangos -DPCH=1 -DACE_USE_EXTERNAL=1 -DDEBUG=0 -DTBB_USE_EXTERNAL=0 This script builds the MaNGOS server. Options that can be used in order to configure the process: CMAKE_INSTALL_PREFIX Path where the server should be installed to CMAKE_BUILD_TYPE Sets build type (Release;Debug;...) PCH Use precompiled headers INCLUDE_BINDINGS_DIR Include a script library in src/bindings/ with the defined name. the name must corespond to the name of the folder and the folder must contain a valid CMakeLists.txt ACE_USE_EXTERNAL Use external ACE To set an option simply type -D<OPTION>=<VALUE> after 'cmake <srcs>'. Also, you can specify the generator with -G. see 'cmake --help' for more details For example: cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/opt/mangos CMake Error at CMakeLists.txt:77 (message): The parameter PREFIX has been removed. Please re-run CMake and use CMAKE_INSTALL_PREFIX instead to define your installation location! -- Configuring incomplete, errors occurred! x@x:/opt/mangos/build$ |
| |||
| |||