Запуск сервера wow linux
сервер WoW под Linux
Запускать сервер будет ManGOS, собирать конечно же из SVN
Нам понадобится:
не забываем установить и запомнить root-пароль к MySQL
Все это без проблем ставится из репозитория.
Для выковыривания ресурсов понадобится:
- Для распаковки DBC потребуется утилита WinMPQ http://wow.curse.com/downloads/details/4454/
- Для распаковки карт утилита ad.exe (обязательно свежая!) https://mangos.svn.sourceforge.net/svnroot/mangos/trunk/contrib/map_extractor/ad.exe
- Утилиты для выковыривания и сборки vmap (https://mangos.svn.sourceforge.net/svnroot/mangos/trunk/contrib/vmap_assembler/ )
Ну и последнее, что нам понадобится — это база NPC. Я предпочитаю UDB. (http://udbforums.org)
Теперь можно приступать.
= Сборка сервера =
все делаем под пользователем
пишем небольшой скриптик для получения свежих исходников ManGOS и ScriptDev2
обычно нужные исходники получаются так:
$ svn checkout https://mangos.svn.sourceforge.net/svnroot/mangos/trunk mangos
$ svn checkout https://scriptdev2.svn.sourceforge.net/svnroot/scriptdev2 mangos/src/bindings/ScriptDev2
(необходимо использовать самую старшую версию патча)
$ autoreconf —install —force
$ ./configure —prefix=/opt/mangos
Если что-то нехватает — доставляем, после успешного конфигурения
$ make
$ sudo mkdir -p /opt/mangos
Сделаем себя владельцем папки
$ sudo chown [user].[usergroup] /opt/mangos
установка
$ make install
ScriptDev2 — это мозги для боссов и охраны городов, без него боссы ведут себя как обычные статисты.
Сразу оговорюсь, у меня нет проблем с использованием Windows, но все упомянутые утилиты без проблем работают через wine
maps:
копируем ad.exe в папку с WoW, создаем папку maps (там же, в папке с клиентом) из запускаем ad.exe
dbc:
создаем папку dbc,
запускаем WinMPQ (для тех, кто запускает из-под wine, учтите что она использует GUI)
открываем файл WoW/Data/*lang*/locale-*lang*.MPQ (вместо * свой язык)
выделяем файлы начинающиеся с DBCFilesClient и сохраняем их (Extract) в созданную папку dbc
Если версия клиента заканчивается не на 0 (напр 2.3.3) —
достаем DBC из патчей: точно так же, но (обязательно!) соблюдая порядок обрабатываем файлы
patch-*lang*.MPQ [и patch-*lang*-2.MPQ], сохраняя DBC в ту же папку с заменой более старых. Повторюсь, очередность соблюдать обязательно, и обрабатывать патчи в порядке возрастания их номеров.
vmaps (необязательно):
запускаем makevmaps_SIMPLE.bat правильно отвечаем на все вопросы и долго ждём.
копируем на сервер все полученные ресурсы
WoW/maps в /opt/mangos/data/maps
dbc в /opt/mangos/data/dbc
WoW/vmap/vmaps в /opt/mangos/data/vmaps
прежде чем выполнять команды дочитайте абзац до конца!
Для первой установки все просто:
запускаем скрипты:
- create_mysql.sql
- characters.sql
- mangos.sql
- realmd.sql
из папки /opt/mangos/share/mangos/sql
$ cd /opt/mangos/share/mangos/sql
$ mysql -uroot -p ревизии в которой он появился]_[ базы к которой нужно применить]_[ таблицы которую он исправляет]. sql
названия апдейтов к SD2 отличаются, но смысл у них тот же, и применять их также необходимо.
после наложения все патчей на базу можно приступать к конфигурации сервера
все конфигурационные файлы хранятся в папке /opt/mangos/etc/
собсно их 3
mangos.conf — основной конфиг
realmd.conf — конфиг реалмд (авторизационного сервера)
scriptdev2.conf — конфиг SD2, как несложно догадаться
в последних двух необходимо уточнить данных MySQL сервера, А
в mangos.conf
нужно включить vmaps
vmap.enableLOS = 1
vmap.enableHeight = 1
по желанию поменять порт, bind-ip, ну и конечно же рейты. Конфиг достаточно хорошо документирован и проблем возникнуть не должно,
Замечу, что желательно отключить WorldLog
WorldLogFile = «»
т.к. он у меня (и не только) за несколько часов разрастался до фантастических (в несколько Гб) размеров
последний шаг, обновление реамлиста:
$ mysql -u root -p realmd -e «UPDATE realmlist SET name='[Название реалма]’, address='[IP или DNS адрес World-сервера]’ WHERE/>
= Запуск =
теперь можно запускать:
$ cd /opt/mangos/bin/
$ ./mangos-realmd
и на другой консоли:
$ ./mangos-worldd
если все сделано правильно (особенно с базами) — то ошибок быть не должно.
worldd может иногда вываливаться, это его нормальное состояние, поэтому желательно
перезапускать его. Я перепробовал много разных вариантов (с выгриповыванием PIDa по крону в тч),
но остановился на простейшем бесконечном цикле:
worldd.sh:
#!/bin/bash
while [ true ]
do
./mangos-worldd
echo Attempting to restart.
sleep 10
done
по желанию можно доработать, чтобы проверялись флаги.
запускать желательно в screen-сесссии
$ screen -AmdS mangos worldd.sh
после можно соединиться командой
$ screen -x mangos
точно также можно поступить и с realmd, но он достаточно стабилен и на моей памяти ниразу не вываливался, без моего желания.
Для полноценного сервера нехватает только веб-морды для регистрации и контроля игроков.
В качесте онной предлагаю использовать ManGOS MiniManager
Для его работы необходим apache2, libapache2-php5, php5-mysql, конфигурация минимальная, работоспособность проверенная.
Установка сервера World Of Warcraft 3.3.5 на ubuntu 18.04
Захотелось мне вспомнить старые пейзажи. Да и просто занять чем-то руки и голову, и решил я на свой простаивающий домашний сервачок нагнать ужаса ледяного, от Короля Личей… Короче, решил сервер WOW поднять под linux. Поглядел чего из эмуляторов есть, почитал мануал, да и запустил. Запустил Trinity Core 3.3.5 версию на ubuntu 18.04. О чем вам и спешу рассказать.
1. Установка ПО:
2. Выключение STRICT_MODE в Mysql 5.7 (требуется для работы TrinityCore)
Содержимое файла:
3. Создаем пользователя и заходим под ним:
4. Скачиваем Trinity Core
5. Компиляция сервера
Смотрим что исходники (директория /home/wow/TrinityCore и её содержимое) на месте. У меня почему-то её не оказалось. Пришлось клонировать заново.
6.Копируем конфигурационные файлы из шаблонов
7. Извлекаем ресурсы из клиента
Где искать клиент 3.3.5 — дело сугубо лично ваше. По интернету их полным полно
Извлекаем DBC и файлы карт:
изменить datadir c «.» на «/home/wow/server/data»
Извлекаем Визуальные карты:
Далее в той же директории клиента продолжаем:
Примечание: если остановить работу vmap4extractor до завершения, то нужно будет удалить директорию Buildings прежде чем начать заново извлечение vmaps.
По завершению работы, которая в зависимости от железа может занять длительное время, вы получите сообщение что-то типа такого:
Это нормально. Главное что нет ошибок.
Извлечение карт передвижений
Опиционально, делается еще дольше чем vmaps, но рекомендуется.
8. Настройка базы данных для Trinity
Идем по адресу: https://github.com/TrinityCore/TrinityCore/releases
Находим последний релиз TDB 335, копируем ссылку на 7z архив далее:
Создадим пользователя и БД:
mysql > USE mysql;
mysql > CREATE USER ‘trinity’@’localhost’ IDENTIFIED BY ‘password’;
mysql > GRANT ALL PRIVILEGES ON trinity .* TO ‘trinity’@’localhost’; mysql > FLUSH PRIVILEGES;
Экcпортируем в mysql файл create_mysql.sql
Поправить /home/wow/server/etc/worldserver.conf и /home/wow/server/etc/authserver.conf указав пользователь;бд;пароль :
Заменить trinity;trinity;trinity на trinity;trinity;password
Далее БД должна экспортироваться при первом запуске world сервера.
9. ОПЦИОНАЛЬНО: проброс портов, открытие портов:
для 3.3.5 используются порты: 3724 и 8085
10. Запуск сервера
11. Создание аккаунта и назначение GM
Выполняется в консоли worldserver
12. Настройка клиента
Откройте realmlist.wtf внутри директории клиента World of Warcraft\Data. IP адрес внутри файла realmlist.wtf должен быть адресом вашего сервера.
Измените строку: set realmlist X.X.X.X
Например: set realmlist 127.0.0.1
Опционально: если хотите использовать WoW Launcher.exe для запуска клиента, то вы должны установить patchlist тот же ip/dns что и для вашего сервера.
В итоге.
Надеюсь у вас всё получилось, мой сервер запущен, все шаги я записывал, хотя мог что-то напутать или забыть.
Осталось подождать пока будет время зайти в игру и лично убедиться что всё работает. Пишите, кидайте скрины с вашей игры 😉
Запуск сервера wow linux
Поскольку материал получился очень объёмный, решено было добавить оглавление:
Полезное:
| Работоспособность:
|
Полезное:
|
Работоспособность:
|
Устанавливать будем сервер версии 3.3.5a. (билд: 12340) на свой домашний компьютер с ОС Linux, а именно Ubuntu Server 14.04 LTS.
Данный материал — это перевод Installation Guide от TrinityCore с моими пояснениями, советами и скриншотами. Если вы хотите использовать его на своём сайте, пожалуйста укажите ссылку на эту страницу и первоисточник. Спасибо!
Другое по Linux:
| Удалённое подключение:
|
Другое по Linux:
|
Удалённое подключение:
|
В этом материале я расскажу как на серверной машине с установленной ОС Ubuntu Server 14.04 LTS скачать и скомпилировать ядро сервера, создать и наполнить базу данных и в дополнении напишу о том как привязать свой динамический ip к хосту no-ip.
Всё это я буду делать удалённо, с помощью Putty, но Вы можете делать всё это на своём домашнем компьютере.
Поиск доступных серверов по всем версиям WoW. Хостинг и серверные машины.
Поиск доступных серверов по всем версиям WoW. Хостинг и серверные машины.
- ОС Linux, у меня Ubuntu Server 14.04.
- HeidiSQL для загрузки базы данных — тык.
- Если будете ставить сервер удалённо, то ещё: Putty и FileZilla.
- Boost версии 1.49 или выше.
- MySQL версии 5.1.0 или выше.
- OpenSSL версии 1.0.0 или выше.
- CMake версии 2.8.9 или выше.
- GCC версии 4.7.2 или выше.
Всё это мы установим через терминал. Так же необходим процессор с поддержкой SSE2.
| Ставим Blizzlike сервер, то есть сервер максимально приближенный по рейтам, статам и работоспособности к официальному. |
Я уже написал какую операционную систему и какой софт мы будем использовать, поэтому перейдём к делу. Откроем Putty или Terminal (если Linux на Вашем компьютере) и обновим файлы системы:
sudo apt- get update && apt- get upgrade
Это мы сделали чтобы не было проблем в будущем. Теперь приступим к установке необходимого софта, пишем:
sudo apt- get install build-essential autoconf libtool gcc g++ make cmake git-core wget p7zip-full libncurses5-dev zlib1g-dev libbz2-dev
Соглашаемся с условиями установки:
Дальше устанавливаем сервер для нашей базы данных, пишем:
sudo apt- get install openssl libssl-dev mysql-server mysql-client libmysqlclient-dev libmysql++-dev libreadline6-dev
Так же соглашаемся с условиями:
После этого нас попросят задать пароль для подключения к серверу MySQL. Я пишу стандартный ascent. Вы можете выбрать любой, какой пожелаете. Выглядит это так:
И в следующем окне подтверждаем выбранный пароль, повторно введя его:
Таким образом у нас сейчас получились следующие данные для подключения к серверу MySQL:
И последнее, что нам осталось поставить, это:
sudo apt- get install libboost-dev libboost-thread-dev libboost-system-dev libboost-filesystem-dev libboost-program-options-dev libboost-iostreams-dev
И снова соглашаемся с условиями установки:
И ждём завершения установки. Готово! С подготовкой закончили. Дальше всё будет не сложнее этого.
Сейчас, когда мы подготовили нашу серверную машину к установке, нам нужно скачать ядро сервера WoW:wotlk 3.3.5a с репозитория TrinityCore на GitHub. Потом скопмпилить его и установить.
Здесь тоже нет ничего сложного, главное сделать всё правильно.
Но перед тем как начнём заниматься ядром, создадим нового пользователя в системе. У меня это будет wow. Вы же можете придумать своего, главное помните, что в linux учитывается регистр. Пишем:
После этого нам надо будет указать информацию о новом пользователе, я почти ничего не заполнял кроме пароля, будет вот так:
Теперь когда создали нового пользователя с которым будем работать, идём в домашнюю директорию и скачиваем ядро. Для этого пишем:
/
git clone -b 3.3.5 git://github.com/TrinityCore/TrinityCore.git
Ждём пока скачаются файлы с репозитория TrinityCore:
После этого входим в директорию TrinityCore, создаём там build и входим. Для этого пишем:
cd TrinityCore
mkdir build
cd build
И теперь нам нужно «собрать» команду cmake.
sudo cmake ../ -DCMAKE_INSTALL_PREFIX=/home/wow/server -DCONF_DIR=/home/wow/server/etc -DLIBSDIR=/home/wow/server/lib -DWITH_WARNINGS=1 -DSERVERS=1
Вы тоже можете использовать именно эту команду (рекомендую), но так же можете написать свою. Всё необходимое я дам ниже.
Команда cmake выглядит так:
cmake ../ [дополнительные параметры]
Некоторые параметры cmake:
-DSERVERS=1 // создаст worldserver и authserver
-DTOOLS=1 // создаст экстракторы maps, vmaps, mmaps
-DWITH_WARNINGS=1 // показывает все предупреждения во время компиляции
-DWITH_COREDEBUG=1 // включит дополнительный код-отладки в ядро
-DCMAKE_INSTALL_PREFIX=/home/user/server // путь к серверу
-DCONF_DIR=/home/user/etc // путь к конфигурационным файлам сервера
-DLIBSDIR=/home/user/server/lib // путь к файлам библиотек
Пишем команду, которую Вы выбрали и в конце выполнения видим:
После того как всё сконфигурировано и проверено нужно собрать ядро. Для этого сначала пишем:
make // если процессор одноядерный
// либо
make -j N // где N — это число ядер.
// Например: make -j 2 для двухъядерного процессора.
И теперь устанавливаем:
В конце Вы увидите что-то вроде этого:
Готово! Если Вы сделали всё правильно, то воспользовавшись FileZilla можно посмотреть структуру нашего сервера:
- На форуме есть тема — как пользоваться FileZilla.
- Так же можно посмотреть структуру командой ls -l, перейдя в директорию с сервером через Putty.
У нас уже установлен MySQL сервер, а значит теперь нам нужно загрузить базу данных нашего сервера. Тут есть два варианта:
- Вы делаете это на своём компьютере.
- Вы делаете это удалённо на другом компьютере.
Если первый вариант, то всё круто. Сразу переходите непосредственно к загрузке бд. Если же, как и у меня, второй вариант, то сначала нам надо дать удалённый SSH доступ к MySQL. Этим и займёмся!
Сначала открываем порт 3306, для этого пишем:
sudo iptables -A INPUT -i eth0 -p tcp -m tcp —dport 3306 -j ACCEPT
И проверяем доступность с помощью следующей команды:
sudo netstat -anltp|grep : 3306
Если всё хорошо, то Вы увидите следующее:
Теперь создадим SSH туннель для порта 3307, через который и будем подключаться. Пишем:
sudo ssh -fNg -L 3307:127.0.0.1:3306 azureuser@norb-gsa // обратите внимание, что вместо azureuser@norb-gsa у Вас будут свои данные здесь.
Во время создания туннеля, Вас попросят ввести пароль root-пользователя:
Теперь осталось только открыть порт и можно подключаться.
Если Вы имеете доступ к роутеру, то наверняка Вам будет полезна тема о том как пробросить порты.
Если у Вас, как и у меня, есть доступ к панели управления VDS, то пробрасывайте порты там. У меня это выглядит так:
Для подключения я буду использовать программу HeidiSQL ссылку на скачивание которой, Вы найдёте в самом верху если ещё не скачали. Итак, открываем программу и вписываем наши данные для подключения:
- Hostname/IP — хост или ip-адрес нашей серверной машины. (если делаете на своём компьютере, то пишите 127.0.0.1 или localhost)
- User — пользователь MySQL. (у нас root)
- Password — пароль для подключения к MySQL. (у нас ascent)
- Port — порт для соединения. (3307 если удалённо и 3306 если у себя на компьютере)
Когда заполнили нажимаем кнопку Open. Если всё сделано правильно, откроется следующее окно:
Отлично! Теперь нам нужно создать базы данных, в которых будут храниться данные нашего сервера. Для этого в левой колонке нажимаем на пустом месте правой кнопкой мыши и выбираем Create new —> Database. Лучше всего будет увидеть, поэтому вот:
Сервер World of Warcraft: Wrath of the Lich King 3.3.5a на ядре TrinityCore требует для работы три базы данных, а именно:
- auth — содержит информацию об аккаунтах и realm. (логины, пароли, уровень GM-доступа, realmlist и т.д.)
- characters — содержит всю информацию о персонажах. (инвентарь, банк, аукцион и т.д.)
- world — содержит игровой мир. (npc, квесты, объекты и т.д.)
Все три создаются одинаково. Я покажу как я создавал базу auth:
Когда закончите создавать все три, должно получиться вот так:
Итак у нас есть три пустых базы которые нужно заполнить. Сначала разберёмся с самой большой — world. SQL-файл этой базы можно скачать в самом начале урока, причём я рекомендую скачивать новый. На сайте community.trinitycore.org вы найдёте новую версию базы данных для 3.3.5 и на её странице увидите следующее:
Итак с базой world разобрались. Теперь остались ещё две. Открываем FileZilla и подключаемся к нашему удалённому хосту, как мы уже делали. (либо же просто заходим в нужную директорию, если Вы делаете всё на своём компьютере)
Если Вы всё делали как я, то идём по следующему пути:
| /home/user/TrinityCore/sql/base *user — это ваша основная учётная запись. (у меня это azureuser) |
Там мы найдём auth_database.sql и characters_database.sql — это то, что нам нужно. Копируем их к себе, например туда же куда разархивировали базу world. Должны получиться следующие три файла:
Теперь нам надо загрузить их на наш сервер. Для это возвращаемся в HeidiSQL и выбираем базу world. (кликаем по ней левой кнопкой мыши для выбора) После этого ищем на панели инструментов значок Load SQL file.. или нажимаем Ctrl+O и видим следующее окно:
Находим подходящий SQL-файл и нажимаем Открыть. После этого выбираем Run file(s) directly и ждём загрузки:
Когда загрузка завершится можно посмотреть содержимое бд world просто дважды щёлкнув по ней:
Аналогично загружаем базы auth и characters. Когда всё будет загружено останется только накатить обновления для корректной работы сервера.
Снова открываем FileZilla и идём по следующему пути:
| /home/user/TrinityCore/sql/updates/world *user — это ваша основная учётная запись. (у меня это azureuser) |
Скачиваем оттуда все обновления к себе на компьютер. (если Вы делаете это у себя, то пропустите этот шаг) После этого возвращаемся в HeidiSQL. Снова выбираем базу world, нажимаем Ctrl+O и выбираем все скачанные SQL-файлы обновлений:
И начинаем загружать каждый SQL-файл используя для этого Execute SQL… или нажав F9. Когда это будет сделано — работа с базой данных завершена! Будьте внимательны и загрузите все обновления правильно, потому что в противном случае позже Вы не сможете запустить worldserver.
Важно: никогда не загружайте обновления auth и characters из следующих директорий:
|
Теперь остался последний штрих в работе с базой данных. Открываем базу auth и находим там realmlist. Меняем там поле address и при желании поле name.
Всё! Работу с базой данных сервера закончили. Приступим к настройке и запуску.
Для простоты действий многое будем делать через FileZilla. Возможно кто-то со мной не согласится в этом решении, но я считаю, что это наипростейший путь загрузить недостающие файлы на серверную машину.
Для начала нам надо дать права на запись директории с сервером. Открываем терминал (или Putty если делаете удалённо) и идём в папку с сервером, пишем:
Там Вы найдёте директорию с нашим сервером:
Даём права на запись для директории server, для этого пишем команду:
sudo chmod 777 server
Готово! Для работы сервера нам понадобятся файлы-таблицы dbc и карты maps, vmaps и mmaps. Качаем их к себе на компьютер.
- Скачиваем dbc — тык.
- Скачиваем maps — тык.
- Скачиваем mmaps — тык.
- Скачиваем vmaps — тык.
Создаём директорию data в server. Вы можете это сделать через терминал, написав:
Я буду делать это в FileZilla, просто перейдя в директорию server и нажав там правой кнопкой мыши —> Создать каталог:
Теперь перемещаем ранее скачанные dbc, maps, vmaps, mmaps в директорию data. У нас получится следующее:
Открываем терминал (или Putty) и идём в папку где у нас лежат worldserver.conf.dist и authserver.conf.dist. То есть пишем:
Сначала нам надо скопировать эти файлы без расширения .dist — для этого пишем:
sudo cp worldserver.conf.dist worldserver.conf
sudo cp authserver.conf.dist authserver.conf
После этого открываем FileZilla и копируем файлы authserver.conf и worldserver.conf к себе чтобы отредактировать:
Теперь открываем их в любом удобном текстовом редакторе (я пользуюсь Notepad++) и делаем следующее:
Ищем строку (можно с помощью Ctrl+F) пути к директории data:
И меняем её на следующее:
Дальше ищем данные подключения к базе данных и при необходимости меняем их:
LoginDatabaseInfo = «127.0.0.1;3306;trinity;trinity;auth»
WorldDatabaseInfo = «127.0.0.1;3306;trinity;trinity;world»
CharacterDatabaseInfo = «127.0.0.1;3306;trinity;trinity;characters»
У нас другой логин и пароль для подключения. То есть будет:
LoginDatabaseInfo = «127.0.0.1;3306;root;ascent;auth»
WorldDatabaseInfo = «127.0.0.1;3306;root;ascent;world»
CharacterDatabaseInfo = «127.0.0.1;3306;root;ascent;characters»
Тут нам надо найти только одну строку подключения к базе данных:
И поменять её, как и раньше, на следующее:
Теперь осталось загрузить изменённые конфигурационные файлы на сервер с заменой, туда же где мы их брали. Для этого снова откроем терминал (или Putty) и зайдём в директорию server:
И даём права на запись для директории etc:
sudo chmod 777 etc
Теперь удалим старые конфигурационные файлы:
sudo rm authserver.conf
sudo rm worldserver.conf
И теперь можно загружать изменённые authserver.conf и worldserver.conf в etc.
Теперь, когда мы собрали ядро сервера, загрузили базы данных и все необходимые файлы, отредактировали конфиги, можно запускать сервер! Открываем терминал (или Putty) и устанавливаем screen:
sudo apt- get install screen
Хотя обычно он уже есть (как у меня) и тогда Вы увидите следующее:
После этого идём в директорию bin:
Тут у нас лежат файлы запуска сервера. Порядок запуска — сначала запустим authserver и потом worldserver. То есть пишем сначала:
Вы увидите как запустится authserver:
И тогда нажмите Ctrl+A и потом клавишу D. (тем самым Вы как бы «свернёте» authserver) Будет примерно следующее:
Теперь запускаем worldserver, для этого пишем:
В начале вы увидите логотип Trinity и начало загрузки сервера:
Это займёт пару минут. Остаётся только создать аккаунт:
account create test test // Будет создан аккаунт
// Логин — test
// Пароль- test
account set gmlevel test 3 -1 // Будет присвоен уровень GM 3 аккаунту test






































