Игра: World Of Warcraft
Дополнение: Wrath Of The Lich King
Версия: 3.3.5a
Платформа: Linux
Работает: 99%
Как установить сервер World Of Warcraft: Wrath Of The Lich King на OS Linux

Поскольку материал получился очень объёмный, решено было добавить оглавление:


I. Подготовка
II. Ядро сервера
III. База данных сервера
IV. Настройка сервера
V. Настройка конфигурационных файлов
VI. Запуск сервера

Полезное: Работоспособность:
Полезное:
Работоспособность:

Устанавливать будем сервер версии 3.3.5a. (билд: 12340) на свой домашний компьютер с ОС Linux, а именно Ubuntu Server 14.04 LTS.



Другое по Linux: Удалённое подключение:
Другое по Linux:
Удалённое подключение:

В этом материале я расскажу как на серверной машине с установленной ОС Ubuntu Server 14.04 LTS скачать и скомпилировать ядро сервера, создать и наполнить базу данных и в дополнении напишу о том как привязать свой динамический ip к хосту no-ip.

Всё это я буду делать удалённо, с помощью Putty, но Вы можете делать всё это на своём домашнем компьютере.


GSA Сервис: WoW Проекты

Поиск доступных серверов по всем версиям WoW. Хостинг и серверные машины.

Начать проект
GSA Сервис: WoW Проекты

Поиск доступных серверов по всем версиям WoW. Хостинг и серверные машины.

Начать проект
I. Подготовка

Нам понадобится:

  • ОС 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

Соглашаемся с условиями установки:

1.png

Дальше устанавливаем сервер для нашей базы данных, пишем:

sudo apt-get install openssl libssl-dev mysql-server mysql-client libmysqlclient-dev libmysql++-dev libreadline6-dev

Так же соглашаемся с условиями:

2.png

После этого нас попросят задать пароль для подключения к серверу MySQL. Я пишу стандартный ascent. Вы можете выбрать любой, какой пожелаете. Выглядит это так:

3.png

И в следующем окне подтверждаем выбранный пароль, повторно введя его:

4.png

Таким образом у нас сейчас получились следующие данные для подключения к серверу MySQL:

  • Логин: root
  • Пароль: ascent

И последнее, что нам осталось поставить, это:

sudo apt-get install libboost-dev libboost-thread-dev libboost-system-dev libboost-filesystem-dev libboost-program-options-dev libboost-iostreams-dev

И снова соглашаемся с условиями установки:

5.png

И ждём завершения установки. Готово! С подготовкой закончили. Дальше всё будет не сложнее этого.

II. Ядро сервера

Сейчас, когда мы подготовили нашу серверную машину к установке, нам нужно скачать ядро сервера WoW:wotlk 3.3.5a с репозитория TrinityCore на GitHub. Потом скопмпилить его и установить.


Здесь тоже нет ничего сложного, главное сделать всё правильно.

Но перед тем как начнём заниматься ядром, создадим нового пользователя в системе. У меня это будет wow. Вы же можете придумать своего, главное помните, что в linux учитывается регистр. Пишем:

sudo adduser wow

После этого нам надо будет указать информацию о новом пользователе, я почти ничего не заполнял кроме пароля, будет вот так:

6.png

Теперь когда создали нового пользователя с которым будем работать, идём в домашнюю директорию и скачиваем ядро. Для этого пишем:

cd ~/
git clone -b 3.3.5 git://github.com/TrinityCore/TrinityCore.git

Ждём пока скачаются файлы с репозитория TrinityCore:

7.png

После этого входим в директорию TrinityCore, создаём там build и входим. Для этого пишем:

cd TrinityCore
mkdir build
cd build

Оказываемся здесь:

8.png

И теперь нам нужно «собрать» команду 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 // путь к файлам библиотек

Пишем команду, которую Вы выбрали и в конце выполнения видим:

9.png

После того как всё сконфигурировано и проверено нужно собрать ядро. Для этого сначала пишем:

make // если процессор одноядерный
// либо
make -j N // где N - это число ядер.
// Например: make -j 2 для двухъядерного процессора.

И теперь устанавливаем:

make install

В конце Вы увидите что-то вроде этого:

10.png

Готово! Если Вы сделали всё правильно, то воспользовавшись FileZilla можно посмотреть структуру нашего сервера:

11.png

Полезно:

  • На форуме есть тема — как пользоваться FileZilla.
  • Так же можно посмотреть структуру командой ls -l, перейдя в директорию с сервером через Putty.
III. База данных сервера

У нас уже установлен MySQL сервер, а значит теперь нам нужно загрузить базу данных нашего сервера. Тут есть два варианта:

  • Вы делаете это на своём компьютере.
  • Вы делаете это удалённо на другом компьютере.

Если первый вариант, то всё круто. Сразу переходите непосредственно к загрузке бд. Если же, как и у меня, второй вариант, то сначала нам надо дать удалённый SSH доступ к MySQL. Этим и займёмся!


Сначала открываем порт 3306, для этого пишем:

sudo iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT

И проверяем доступность с помощью следующей команды:

sudo netstat -anltp|grep :3306

Если всё хорошо, то Вы увидите следующее:

12.png

Теперь создадим SSH туннель для порта 3307, через который и будем подключаться. Пишем:

sudo ssh -fNg -L 3307:127.0.0.1:3306 azureuser@norb-gsa // обратите внимание, что вместо azureuser@norb-gsa у Вас будут свои данные здесь.

Во время создания туннеля, Вас попросят ввести пароль root-пользователя:

13.png

Теперь осталось только открыть порт и можно подключаться.


Если Вы имеете доступ к роутеру, то наверняка Вам будет полезна тема о том как пробросить порты.

Если у Вас, как и у меня, есть доступ к панели управления VDS, то пробрасывайте порты там. У меня это выглядит так:

14.png

Для подключения я буду использовать программу HeidiSQL ссылку на скачивание которой, Вы найдёте в самом верху если ещё не скачали. Итак, открываем программу и вписываем наши данные для подключения:

15.png

Здесь заполняем:

  • Hostname/IP — хост или ip-адрес нашей серверной машины. (если делаете на своём компьютере, то пишите 127.0.0.1 или localhost)
  • User — пользователь MySQL. (у нас root)
  • Password — пароль для подключения к MySQL. (у нас ascent)
  • Port — порт для соединения. (3307 если удалённо и 3306 если у себя на компьютере)

Когда заполнили нажимаем кнопку Open. Если всё сделано правильно, откроется следующее окно:

16.png

Отлично! Теперь нам нужно создать базы данных, в которых будут храниться данные нашего сервера. Для этого в левой колонке нажимаем на пустом месте правой кнопкой мыши и выбираем Create new —> Database. Лучше всего будет увидеть, поэтому вот:

17.png

Сервер World of Warcraft: Wrath of the Lich King 3.3.5a на ядре TrinityCore требует для работы три базы данных, а именно:

  • auth — содержит информацию об аккаунтах и realm. (логины, пароли, уровень GM-доступа, realmlist и т.д.)
  • characters — содержит всю информацию о персонажах. (инвентарь, банк, аукцион и т.д.)
  • world — содержит игровой мир. (npc, квесты, объекты и т.д.)

Все три создаются одинаково. Я покажу как я создавал базу auth:

18.png

Когда закончите создавать все три, должно получиться вот так:

19.png

Итак у нас есть три пустых базы которые нужно заполнить. Сначала разберёмся с самой большой — world. SQL-файл этой базы можно скачать в самом начале урока, причём я рекомендую скачивать новый. На сайте community.trinitycore.org вы найдёте новую версию базы данных для 3.3.5 и на её странице увидите следующее:

20.png

Итак с базой world разобрались. Теперь остались ещё две. Открываем FileZilla и подключаемся к нашему удалённому хосту, как мы уже делали. (либо же просто заходим в нужную директорию, если Вы делаете всё на своём компьютере)


Если Вы всё делали как я, то идём по следующему пути:

/home/user/TrinityCore/sql/base
*user — это ваша основная учётная запись. (у меня это azureuser)

Там мы найдём auth_database.sql и characters_database.sql — это то, что нам нужно. Копируем их к себе, например туда же куда разархивировали базу world. Должны получиться следующие три файла:

21.png

Теперь нам надо загрузить их на наш сервер. Для это возвращаемся в HeidiSQL и выбираем базу world. (кликаем по ней левой кнопкой мыши для выбора) После этого ищем на панели инструментов значок Load SQL file.. или нажимаем Ctrl+O и видим следующее окно:

22.png

Находим подходящий SQL-файл и нажимаем Открыть. После этого выбираем Run file(s) directly и ждём загрузки:

23.png

Когда загрузка завершится можно посмотреть содержимое бд world просто дважды щёлкнув по ней:

24.png

Аналогично загружаем базы auth и characters. Когда всё будет загружено останется только накатить обновления для корректной работы сервера.


Снова открываем FileZilla и идём по следующему пути:

/home/user/TrinityCore/sql/updates/world
*user — это ваша основная учётная запись. (у меня это azureuser)

Скачиваем оттуда все обновления к себе на компьютер. (если Вы делаете это у себя, то пропустите этот шаг) После этого возвращаемся в HeidiSQL. Снова выбираем базу world, нажимаем Ctrl+O и выбираем все скачанные SQL-файлы обновлений:

25.png

И начинаем загружать каждый SQL-файл используя для этого Execute SQL… или нажав F9. Когда это будет сделано — работа с базой данных завершена! Будьте внимательны и загрузите все обновления правильно, потому что в противном случае позже Вы не сможете запустить worldserver.

Важно: никогда не загружайте обновления auth и characters из следующих директорий:
  • /home/user/TrinityCore/sql/updates/auth
  • /home/user/TrinityCore/sql/updates/characters

Теперь остался последний штрих в работе с базой данных. Открываем базу auth и находим там realmlist. Меняем там поле address и при желании поле name.

В address пишем ip-адрес вашей серверной машины.

26.png

Всё! Работу с базой данных сервера закончили. Приступим к настройке и запуску.

IV. Настройка сервера

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


Для начала нам надо дать права на запись директории с сервером. Открываем терминал (или Putty если делаете удалённо) и идём в папку с сервером, пишем:

cd /home/wow
ls -l

Там Вы найдёте директорию с нашим сервером:

27.png

Даём права на запись для директории server, для этого пишем команду:

sudo chmod 777 server

Готово! Для работы сервера нам понадобятся файлы-таблицы dbc и карты maps, vmaps и mmaps. Качаем их к себе на компьютер.

  • Скачиваем dbc — тык.
  • Скачиваем maps — тык.
  • Скачиваем mmaps — тык.
  • Скачиваем vmaps — тык.

Создаём директорию data в server. Вы можете это сделать через терминал, написав:

mkdir data

Я буду делать это в FileZilla, просто перейдя в директорию server и нажав там правой кнопкой мыши —> Создать каталог:

28.png

Теперь перемещаем ранее скачанные dbc, maps, vmaps, mmaps в директорию data. У нас получится следующее:

29.png

V. Настройка конфигурационных файлов

Открываем терминал (или Putty) и идём в папку где у нас лежат worldserver.conf.dist и authserver.conf.dist. То есть пишем:

cd /home/wow/server/etc

Сначала нам надо скопировать эти файлы без расширения .dist — для этого пишем:

sudo cp worldserver.conf.dist worldserver.conf
sudo cp authserver.conf.dist authserver.conf

Получится вот так:

30.png

После этого открываем FileZilla и копируем файлы authserver.conf и worldserver.conf к себе чтобы отредактировать:

31.png

Теперь открываем их в любом удобном текстовом редакторе (я пользуюсь Notepad++) и делаем следующее:

worldserver.conf:

Ищем строку (можно с помощью Ctrl+F) пути к директории data:

DataDir = "."

И меняем её на следующее:

DataDir = "../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"

authserver.conf:

Тут нам надо найти только одну строку подключения к базе данных:

LoginDatabaseInfo = "127.0.0.1;3306;trinity;trinity;auth"

И поменять её, как и раньше, на следующее:

LoginDatabaseInfo = "127.0.0.1;3306;root;ascent;auth"



Теперь осталось загрузить изменённые конфигурационные файлы на сервер с заменой, туда же где мы их брали. Для этого снова откроем терминал (или Putty) и зайдём в директорию server:

cd /home/wow/server

И даём права на запись для директории etc:

sudo chmod 777 etc

Теперь удалим старые конфигурационные файлы:

sudo rm authserver.conf
sudo rm worldserver.conf

И теперь можно загружать изменённые authserver.conf и worldserver.conf в etc.

VI. Запуск сервера

Теперь, когда мы собрали ядро сервера, загрузили базы данных и все необходимые файлы, отредактировали конфиги, можно запускать сервер! Открываем терминал (или Putty) и устанавливаем screen:

sudo apt-get install screen

Хотя обычно он уже есть (как у меня) и тогда Вы увидите следующее:

32.png

После этого идём в директорию bin:

cd /home/wow/server/bin

Тут у нас лежат файлы запуска сервера. Порядок запуска — сначала запустим authserver и потом worldserver. То есть пишем сначала:

screen ./authserver

Вы увидите как запустится authserver:

33.png

И тогда нажмите Ctrl+A и потом клавишу D. (тем самым Вы как бы «свернёте» authserver) Будет примерно следующее:

34.png

Теперь запускаем worldserver, для этого пишем:

screen ./worldserver

В начале вы увидите логотип Trinity и начало загрузки сервера:

35.png

Это займёт пару минут. Остаётся только создать аккаунт:

account create test test // Будет создан аккаунт
// Логин - test
// Пароль- test
account set gmlevel test 3 -1 // Будет присвоен уровень GM 3 аккаунту test

Всё готово! Можно менять realmlist.wtf в клиенте и заходить в игру.



Полезная информация
Для последующей работы с сервером

Authserver.conf/Bnetserver.conf
Разбор конфигурационных файлов
Читать дальше
Набор GM команд для Trinity
Команды для Game Masters всех lvl
Читать дальше
VII. Привязка NO-ip на OS Linux

Хоть я и думаю, что эта часть в данном случае не пригодится, я всё равно расскажу как быть если у Вас ОС Linux и динамический ip.


Нам понадобится:

  • Наш сервер
  • Терминал или Putty
  • Более-менее прямые руки

Начинаем. Заходим на сайт no-ip.com и регистрируемся там. (как регистрироваться на сайте я рассказывать конечно не буду.)


После регистрации заходим в свой личный кабинет и там видим следующее:

36.png

Там выбираем Add a Host и добавляем новый хост.


Ничего кроме как вписать название и выбрать доменную зону от нас не требуется. Выглядит это следующим образом:

37.png

После этого у нас в аккаунте появится наш новый, только что добавленный хост:

38.png

С сайтом закончили. У нас теперь есть хост у которому мы привяжем наш динамический ip. Возвращаемся к терминалу или Putty и установим DUC. Для начала, если у Вас его ещё нет, то установим GCC Compiler. Для этого пишем:

apt-get install build-essential

Теперь пойдём в папку src, пишем:

cd /usr/local/src

И скачиваем DUC, для этого пишем:

wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz

После скачивания можем посмотреть, что получилось командой ls -l, а именно:

39.png

Нужно разархивировать скачанный DUC, пишем:

tar xzf noip-duc-linux.tar.gz

Смотрим командой ls -l результат:

40.png

Заходим в получившуюся директорию:

cd noip-2.1.9-1

И видим установочные файлы:

41.png

Устанавливаем их двумя командами:

make
make install

После установки авторизуемся, введя данные своего аккаунта с сайта:

42.png

Поскольку мы создали только один хост, он будет выбран автоматически. Вы увидите следующее сообщение:

43.png

Осталось только запустить DUC. Как это сделать можно посмотреть в файле README в директории: ~/usr/local/src/noip-2.1.9-1/


Я использовал Midnight Commander для просмотра файла (команда mc) и там есть следующее:

44.png

То есть для запуска просто нужно написать:

/usr/local/bin/noip2

Вот и всё! Теперь осталось вписать наш хост в базе данных auth в поле address вместо нашего ip и готово. Это имя не будет меняться и по нему можно будет всегда попасть на ваш сервер когда он включён.


Важно: Не забываем пробрасывать порты, если подключение к интернету у Вас идёт через роутер. Напомню, что обычно для сервера World of Warcraft пробрасываются порты: 3306, 8085, 3724, 80.

Автор: Norb