Prywatny serwer World of Warcraft na systemie Linux

Tcp_logo_1

Hej, dziś – po świętach postanowiłem napisać poradnik jak postawić swój serwer WoW’a na przykładzie dodatku Wrath of The Lich King.
Serwer prywatny uruchamiamy na przykładzie Patch’a 3.3.5a (12340) i emulatora TrinityCore.

Kompilacje przeprowadzam na systemie Ubuntu 14.04 LTS – jako baza danych pracuje MariaDB 5.5 – bezpośrednio z repozytoriów Ubuntu, całość uruchamiam na instancji z OVH.pl

Domyślna ścieżka do plików serwera i konfiguracji serwera: (określona w skryptach i konfiguracj)

  • /home/wow/server/bin/ (binarki serwera oraz mapy)
  • /home/wow/server/etc/ (pliki konfiguracyjne)

1. Wymagane Pakiety:
a) Systemy Debian/Ubuntu

sudo apt-get update
sudo apt-get install build-essential autoconf libtool gcc g++ make cmake git-core wget p7zip-full libncurses5-dev zlib1g-dev libbz2-dev -y
sudo apt-get install openssl libssl-dev mariadb-client mariadb-server libmysqlclient-dev libmysql++-dev libreadline6-dev -y 
sudo apt-get install libboost-dev libboost-thread-dev libboost-system-dev libboost-filesystem-dev libboost-program-options-dev libboost-iostreams-dev -y 

b) Rodzina RedHat’a (CentOS)

yum groupinstall "Development Tools"
yum groupinstall "Additional Development"
yum install gcc-g++ git-core wget links zip unzip unrar cmake
yum install mariadb-server mariadb-client mysql-devel
yum install openssl

– OPCJA:
Do kompilacji Emulatora TrinityCore z nowszymi wersjami Gry (4.3.4 i 6.x) zalecane jest doinstalowanie poniższych paczek, ja ten krok pomijam:

wget http://download.zeromq.org/zeromq-4.0.5.tar.gz
tar xzvf zeromq-4.0.5.tar.gz
cd zeromq-4.0.5
./configure
make
make install

oraz

sudo apt-get install libzmq-dev

2. Kompilacja Core (bazy serwera):

sudo adduser wow ## Ustaw własną, ja mam usera systemowego wow

2.1 Najnowsze źródła z repozytoriów Git'a
su wow
cd $home


Wybierz wersję jaką chcesz uruchomić (poradnik bazuje na 3.3.5a)

a) Wersja 3.3.5a:

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

b) Wersja 6.x

git clone -b 6.x git://github.com/TrinityCore/TrinityCore.git

2.2 Budowa:

cd TrinityCore
mkdir build
cd build
cmake ../ -DCMAKE_INSTALL_PREFIX=/home/wow/server -DCONF_DIR=/home/wow/server/etc -DTOOLS=1 -DWITH_WARNINGS=1
make -j$(nproc)
make install
cp /home/wow/server/etc/authserver.conf.dist /home/wow/server/etc/authserver.conf
cp /home/wow/server/etc/worldserver.conf.dist /home/wow/server/etc/worldserver.conf

3. Baza danych:

cd $home
mysql -u root -p

3.1 Po zalogowaniu się do bazy danych wydaj poniższe polecenia celem utworzenia trzech baz oraz użytkownika mającego prawa do tych baz:

CREATE DATABASE auth;
CREATE DATABASE characters;
CREATE DATABASE world;
CREATE USER 'wow'@'localhost' IDENTIFIED BY 'G3u!vJQ4__v6L_5U'; ### PAMIETAJ ZMENIC HASLO DLLA UŻYTKONIKA BAZY
GRANT ALL PRIVILEGES ON auth.* TO wow@localhost IDENTIFIED BY 'G3u!vJQ4__v6L_5U';
GRANT ALL PRIVILEGES ON world.* TO wow@localhost IDENTIFIED BY 'G3u!vJQ4__v6L_5U';
GRANT ALL PRIVILEGES ON characters.* TO wow@localhost IDENTIFIED BY 'G3u!vJQ4__v6L_5U';
quit

3.4 Najnowszy zrzut bazy danych jest zawsze tutaj:
https://github.com/TrinityCore/TrinityCore/releases

Na chwilę pisania poradnika pobieram bazę: TDB_full_335.60_2015_11_07.7z
cd $home

cd server/bin
wget https://github.com/TrinityCore/TrinityCore/releases/download/TDB335.60/TDB_full_335.60_2015_11_07.7z
7za e TDB_full_335.60_2015_11_07.7z

Import bazy (zamień hasło na własne oczywiście)

mysql -u wow -p'G3u!vJQ4__v6L_5U' world < TDB_full_world_335.60_2015_11_07.sql

Reszta plików .sql musi znajdować się w głównym katalogu binarek serwera.

4. Przyszedł czas na pliki: dbc, maps, mmaps oraz vmaps

cd /home/wow/server/bin/
git clone https://github.com/zdzichu6969/TrinityCore-3.3.5-data.git
mv TrinityCore-3.3.5-data/dbc .
mv TrinityCore-3.3.5-data/maps/ .
mv TrinityCore-3.3.5-data/mmaps/ .
mv TrinityCore-3.3.5-data/vmaps/ .

5. Konfiguracja serwera:

cd $home
cd server/etc/

5.1 Edycja konfiguracji i podanie danych do bazy MySQL/MariaDB

nano auuthserver.conf

(linia 149)

LoginDatabaseInfo = "127.0.0.1;3306;wow;G3u!vJQ4__v6L_5U;auth"
nano worldserver.conf

(linie 97 - 99)

LoginDatabaseInfo     = "127.0.0.1;3306;wow;G3u!vJQ4__v6L_5U;auth"
WorldDatabaseInfo     = "127.0.0.1;3306;wow;G3u!vJQ4__v6L_5U;world"
CharacterDatabaseInfo = "127.0.0.1;3306;wow;G3u!vJQ4__v6L_5U;characters"

6. Uruchamianie serwera w screenie (w tle) + skrypt restartu w razie crashu

cd $home
wget http://pliki.linuxiarz.pl/12-2015/auth.sh -O auth.sh
wget http://pliki.linuxiarz.pl/12-2015/worldserver.sh -O worldserver.sh
chmod +x *.sh
screen -AmdS worldserver ./worldserver.sh
screen -AmdS authserver ./auth.sh

Gotowe, masz swój serwer WoWa 🙂

WoWScrnShot_122815_142001