TrinityCore server install guide

69
TrinityCore Understand & Implement of Private Sever http://collab.kpsn.org/display/tc/How-to_Linux

Transcript of TrinityCore server install guide

Page 1: TrinityCore server install guide

TrinityCoreUnderstand & Implement of Private Severhttp://collab.kpsn.org/display/tc/How-to_Linux

Page 2: TrinityCore server install guide

Environment

Client - Windows 8- WoW Client: 3.3.5a

Server- Virtual box, Ubuntu 13.04- TrinityCore: TDB 335.52

Page 3: TrinityCore server install guide

What will we learn from this course?

Page 4: TrinityCore server install guide

Server setting

apt-get updateapt-get install openssh-serversudo ufw enable

sudo ufw allow 22sudo ufw allow 3306

sudo ufw allow 3724sudo ufw allow 8085

sudo ufw disable

Page 5: TrinityCore server install guide

Getting started

$ sudo apt-get install build-essential autoconf libtool gcc g++ make cmake git-core patch wget links zip unzip unrar

$ sudo apt-get install openssl libssl-dev mysql-server mysql-client libmysqlclient15-dev libmysql++-dev libreadline6-dev zlib1g-dev libbz2-dev

Page 6: TrinityCore server install guide

Debian-based distributions

If you are using Ubuntu 12.04 LTS, Debian 7 or some 2013 linux distributions you will also need:

$ sudo apt-get install libncurses5-dev

Page 7: TrinityCore server install guide

Creating a user to work with

$ sudo adduser <username>

Page 8: TrinityCore server install guide

Installing ACE (Adaptive Communication Environment)

$ sudo apt-get install libace-dev

Page 9: TrinityCore server install guide

Installing ACE (Adaptive Communication Environment)

TrinityCore requires a specific communication-library for inter-process communication, and as such needs special attention on that matter. This is because most distributions (even the most recent ones) do not supply the version required by TrinityCore as part of their basepackages.

Page 10: TrinityCore server install guide

Building the server itself

Getting the sourcecodecd ~/git clone git://github.com/TrinityCore/TrinityCore.git

A directory trinitycore will be created automatically and all the source files will be stored in there.

Page 11: TrinityCore server install guide

Creating the build-directory

To avoid issues with updates and colliding sourcebuilds, we create a specific build-directory, so we avoid any possible issues due to that (if any might occur)

mkdir buildcd build

Page 12: TrinityCore server install guide

Configuring for compiling

To configure the core, we use space-separated parameters attached to the configuration-tool (cmake) - do read the entire section before even starting on the configuration-part. <u>This is for your own good, and you HAVE been warned. A full example will also be shown underneath the explanations.</u>

cmake ../TrinityCore/ -DPREFIX=/home/<username>/server -DWITH_WARNINGS=1

Page 13: TrinityCore server install guide

Building the core

After configuring and checking that everything is in order (read cmakes output), you can build Trinity (this will take some time unless you are on a rather fast machine)

makemake install

Page 14: TrinityCore server install guide

Building the core

If you have multiple CPU cores, you can enable the use of those during compile :

make -j <number of cores>make install

Page 15: TrinityCore server install guide

Building the core

After compiling and installing, you will find your core binaries in /home/<username>/server/bin, and the standard configuration files in the /home/<username>/server/etc folder.(As usual, replace <username> with the username you created earlier). Now you can continue reading on and learn how to update the sourcetree.

Page 16: TrinityCore server install guide

Keeping the code up to date

TrinityCore developers are always at work fixing and adding new features to the core. You can always check them here. To update the core files, do the following :

cd ~/TrinityCore/git pull origin master

Now return to the compilation-section again, and repeat the instructions there.

Page 17: TrinityCore server install guide

Installing libMPQ (MoPaQ)MPQ-reader library

Installation of the libMPQ library is only required if you want to extract the datafiles, and/or compile the tools. Do note that the library has been hardlinked to the binary in later revisions, and is not "enforced" unless the tools are required.

Page 18: TrinityCore server install guide

Configuring, compiling and installing libMPQ

Change directory to ~/TrinityCore/dep/libmpq/ before doing this

Alternative 2 : Systemwide installation

sh ./autogen.sh./configuremakesudo make install

Page 19: TrinityCore server install guide

Optional software

Graphical database-viewing/editing● HeidiSQL, http://www.heidisql.com/● SQLyog, http://www.webyog.com/en/

Remote console connects to the server● Putty, http://www.chiark.greenend.org.uk/~sgtatham/putty/● Putty Tray, http://haanstra.eu/putty/

Filetransfer through SFTP or FTP● WinSCP, http://winscp.net/eng/

Page 20: TrinityCore server install guide

Installing MySQL Server

When configuring MySQL make sure you remember the password you set for the default root account and that you enabled both MyISAM and InnoDB engines.

You can leave all the other settings as default. You might want to enable remote access to your MySQL server if your are also testing a website for your Trinity server or if you have friends testing with you which need access from remote. Remember that this will decrease the security level of your MySQL server!

Page 21: TrinityCore server install guide

Installing The Trinity Databases

Trinity needs three databases to run - Auth, Characters, and World:

auth - holds account data - usernames, passwords, GM access, realm information, etc.characters - holds character data - created characters, inventory, bank items, auction house, tickets, etc.world - holds game-experience content such as NPCs, quests, objects, etc.

Page 22: TrinityCore server install guide

Setting up MySQL Server

1.Create the three databases by importing /root/TrinityCore/sql/create/create_mysql.sql. You now have three databases - auth, characters, and world. You may need to refresh your program in order to see the new databases.

2.Click on the "auth" database and import the auth database structure by importing /root/TrinityCore/sql/base/auth_database.sql.

Page 23: TrinityCore server install guide

Setting up MySQL Server

3.Click on the "characters" database and import the characters database structure by importing /root/TrinityCore/sql/base/character_database.sql.

4.Click on the "world" database and import the world database structure by extracting and importing the "TDB_full" .sql file you downloaded from the Downloading the Database section.

* http://collab.kpsn.org/display/tc/Database_master

Page 24: TrinityCore server install guide

Keeping the DB up to date

Note: You can run the following query on the World database to see your current DB and core revision:

SELECT * FROM `version`;

Page 25: TrinityCore server install guide

Setting up MySQL Server

1.Extract the TDB_FULL.sql file from the archive and import it into your world database.2.If they exist, also import the characters_ and auth_ .sql files into their respective databases.3.Once this is finished and you have already compiled your source, you may run the worldserver.exe to load your server. The revision update is complete.

Page 26: TrinityCore server install guide

TrinityCoreDatabase configurationhttp://collab.kpsn.org/display/tc/Database_master

Page 27: TrinityCore server install guide

Database Config

root@vTrinity13:~/TrinityCore/sql/create# mysql -u root -p < create_mysql.sql

Page 28: TrinityCore server install guide

Database Config

mysql> show databases;+--------------------+

| Database |

+--------------------+

| auth |

| characters |

| world |

+--------------------+

7 rows in set (0.01 sec)

Page 29: TrinityCore server install guide

Database Config

root@vTrinity13:~/TrinityCore/sql# cat create/create_mysql.sql

GRANT USAGE ON * . * TO 'trinity'@'localhost' IDENTIFIED BY 'trinity' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 ;

CREATE DATABASE `world` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

CREATE DATABASE `characters` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

CREATE DATABASE `auth` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

GRANT ALL PRIVILEGES ON `world` . * TO 'trinity'@'localhost' WITH GRANT OPTION;

GRANT ALL PRIVILEGES ON `characters` . * TO 'trinity'@'localhost' WITH GRANT OPTION;

GRANT ALL PRIVILEGES ON `auth` . * TO 'trinity'@'localhost' WITH GRANT OPTION;

Page 30: TrinityCore server install guide

Database Config

root@vTrinity13:~/TrinityCore/sql/base# mysql -u trinity -p auth < auth_database.sql

root@vTrinity13:~/TrinityCore/sql/base# mysql -u trinity -p characters < characters_database.sql

Page 31: TrinityCore server install guide

Database Config

root@vTrinity13:/home/joo/TDB_full_335.52_2013_07_17# mysql -u trinity -p world < TDB_full_335.52_2013_07_17.sql

Page 32: TrinityCore server install guide

Database Config

root@vTrinity13:~/TrinityCore/sql/updates/world# mysql -u trinity -p world < 2013_07_17_00_world_version.sql Enter password:

Page 33: TrinityCore server install guide

Realmlist table

You need to make sure that the authserver directs incoming connections to your realm. In the auth database there is a table called realmlist, where you need to edit the field *address* according to your needs :

Page 34: TrinityCore server install guide

Realmlist table

127.0.0.1 -- Leave default localhost if you are connecting alone from the same machine TrinityCore runs on.

<Your LOCAL NETWORK ip> -- Use the machine's LAN ip if you want other computers from the same network as the TrinityCore server to connect to your server.

<Your PUBLIC NETWORK ip> -- Use your PUBLIC ip if you have friends and testers which need to connect your server from the internet.

Page 35: TrinityCore server install guide

Realmlist table

An example of how it would look with a real address:

use auth;update realmlist set address = '192.168.56.1' where id = 1;

Page 36: TrinityCore server install guide

Realmlist tablemysql> describe realmlist;+----------------------+----------------------+------+-----+---------------+----------------+| Field | Type | Null | Key | Default | Extra |+----------------------+----------------------+------+-----+---------------+----------------+| id | int(10) unsigned | NO | PRI | NULL | auto_increment || name | varchar(32) | NO | UNI | | || address | varchar(255) | NO | | 127.0.0.1 | || localAddress | varchar(255) | NO | | 127.0.0.1 | || localSubnetMask | varchar(255) | NO | | 255.255.255.0 | || port | smallint(5) unsigned | NO | | 8085 | || icon | tinyint(3) unsigned | NO | | 0 | || flag | tinyint(3) unsigned | NO | | 2 | || timezone | tinyint(3) unsigned | NO | | 0 | || allowedSecurityLevel | tinyint(3) unsigned | NO | | 0 | || population | float unsigned | NO | | 0 | || gamebuild | int(10) unsigned | NO | | 12340 | |+----------------------+----------------------+------+-----+---------------+----------------+12 rows in set (0.00 sec)

Page 37: TrinityCore server install guide

Realmlist tablemysql> update realmlist set address = '192.168.56.1' where id = 1;Query OK, 1 row affected (0.00 sec)Rows matched: 1 Changed: 1 Warnings: 0

mysql> select * from realmlist where id = 1;+----+---------+-----------+--------------+-----------------+------+------+------+----------+----------------------+------------+-----------+| id | name | address | localAddress | localSubnetMask | port | icon | flag | timezone | allowedSecurityLevel | population | gamebuild |+----+---------+-----------+--------------+-----------------+------+------+------+----------+----------------------+------------+-----------+| 1 | Trinity | 192.168.56.1 | 127.0.0.1 | 255.255.255.0 | 8085 | 1 | 0 | 1 | 0 | 0 | 12340 |+----+---------+-----------+--------------+-----------------+------+------+------+----------+----------------------+------------+-----------+1 row in set (0.00 sec)

Page 38: TrinityCore server install guide

Check versionmysql> select * from version;+-----------------------------------------------------------------------------------------+---------------+------------+----------+| core_version | core_revision | db_version | cache_id |+-----------------------------------------------------------------------------------------+---------------+------------+----------+| TrinityCore rev. 394b2c684553 2013-07-29 21:46:49 +0100 (master branch) (Unix, Release) | 394b2c684553 | TDB 335.52 | 52 |+-----------------------------------------------------------------------------------------+---------------+------------+----------+1 row in set (0.00 sec)

Page 39: TrinityCore server install guide

DB update script

#!/bin/bashFILES=~/TrinityCore/sql/updates/dbname/*.*for f in $FILESdo echo "Processing $f file..." mysql --password=password dbname < $f done

Page 40: TrinityCore server install guide

TrinityCoreSetting up the Server config

Page 41: TrinityCore server install guide

Extracting dbc, maps and vmaps files

In order to run, TrinityCore needs dbc- and map-files.

In addition, if you want to enable vmaps (Making NPCs unable to see through walls etc.) you will need to extract them as well.

Page 42: TrinityCore server install guide

dbc and maps files

cd <your WoW client directory>/home/<username>/server/bin/mapextractormkdir /home/<username>/server/datacp -r dbc maps /home/<username>/server/data

Page 43: TrinityCore server install guide

vmaps and mmaps files

cd <your WoW client directory>/home/<username>/server/bin/vmap4extractormkdir /home/<username>/server/data/vmapsmkdir /home/<username>/server/data/mmapscp -r vmaps mmaps /home/<username>/server/data

cp Buildings/* /home/<username>/server/data/vmaps

Page 44: TrinityCore server install guide

Configuring the server

First of all you need to create 2 files : worldserver.conf and authserver.conf in your /home/<username>/server/etc/ folder. You'll find 2 files named worldserver.conf.dist and authserver.conf.dist. Copy these to their namesakes without the .dist extension.

cp worldserver.conf.dist worldserver.confcp authserver.conf.dist authserver.conf

Page 45: TrinityCore server install guide

worldserver.conf

Edit MySQL account username and password (instead of trinity;trinity).

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"

Page 46: TrinityCore server install guide

worldserver.conf

vmap.enableLOS = 1 -- set this to 0vmap.enableHeight = 1 -- set this to 0vmap.petLOS = 1 -- set this to 0vmap.enableIndoorCheck = 1 -- set this to 0

Page 47: TrinityCore server install guide

worldserver.conf

WorldServerPort = 8085

RealmServerPort = 3724

Page 48: TrinityCore server install guide

Check a port

root@vTrinity13:/home/joo/server/etc# netstat -a |grep 8085tcp 0 0 *:8085 *:* LISTEN root@vTrinity13:/home/joo/server/etc# netstat -a |grep 3724tcp 0 0 *:3724 *:* LISTEN

Page 49: TrinityCore server install guide

Check a port from PC to Server

C:\>telnet 192.168.56.1 3724C:\>telnet 192.168.56.1 8085

Page 50: TrinityCore server install guide

authserver.conf

Edit MySQL account username and password (instead of trinity;trinity).

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

Page 51: TrinityCore server install guide

NAT port forwarding in Virtulbox

Page 52: TrinityCore server install guide

TrinityCoreGetting start

Page 53: TrinityCore server install guide

Server directory

Page 54: TrinityCore server install guide

WorldServer

Page 55: TrinityCore server install guide

Create account

You can type commands inside the worldserver program, similar to a command prompt.

Type: account create <user> <pass>Example: account create test testType: account set gmlevel <user> 3 -1Example: account set gmlevel test 3 -1

DO !NEVER! create an account directly into your database unless you are ABSOLUTELY SURE that you know what and how to do!The "3" is the GM account level (higher numbers = more access), and the "-1" is the realm ID that stands for "all realms".

Page 56: TrinityCore server install guide

AuthServer

Page 57: TrinityCore server install guide

Wow Client realmlist.wtf

Page 58: TrinityCore server install guide
Page 59: TrinityCore server install guide
Page 60: TrinityCore server install guide
Page 61: TrinityCore server install guide
Page 62: TrinityCore server install guide

Future configuration

WoWClient

Client - Windows 8

● Wow Client

Server- Virtual box, Ubuntu 13.04

● Game Server○ auth○ world

● Database Server○ auth, world, character

Auth Server

World Server

auth db

world db

character db

Page 63: TrinityCore server install guide

TrinityCoreReference & Trouble shooting

Page 64: TrinityCore server install guide

Reference sites

http://neverendless-wow.com/

Repack downloadhttp://jeutie.info/downloads/#toggle-id-3

Page 65: TrinityCore server install guide

download dbc, maps and vmaps files

http://goo.gl/ATbYYG

Page 66: TrinityCore server install guide

Tcpdump

http://cdral.net/655

#tcpdump tcp port 21#tcpdump dst host aaa#tcpdump src host aaa

root@vTrinity13:~# tcpdump -p -i lo -s 0 -l -w - dst port 3306 | strings --bytes=6 > query.txt

Page 67: TrinityCore server install guide

make compile error 1

[ 99%] Building CXX object src/server/worldserver/CMakeFiles/worldserver.dir/CommandLine/CliRunnable.cpp.o[ 99%] Building CXX object src/server/worldserver/CMakeFiles/worldserver.dir/RemoteAccess/RASocket.cpp.o[ 99%] Building CXX object src/server/worldserver/CMakeFiles/worldserver.dir/RemoteAccess/RARunnable.cpp.o/root/TrinityCore/src/server/worldserver/RemoteAccess/RARunnable.cpp: In member function Virtual void RARunnable::run()

Page 68: TrinityCore server install guide

make compile error 2

/root/TrinityCore/src/server/worldserver/RemoteAccess/RARunnable.cpp:78:72: error: no matching function for call to ACE_Reactor::run_reactor_event_loop(ACE_Time_Value)compilation terminated due to -Wfatal-errors.make[2]: *** [src/server/worldserver/CMakeFiles/worldserver.dir/RemoteAccess/RARunnable.cpp.o] Error 1make[1]: *** [src/server/worldserver/CMakeFiles/worldserver.dir/all] Error 2make: *** [all] Error 2

Page 69: TrinityCore server install guide

make compile error 3

collect2: error: ld terminated with signal 9 [Killed]

Not TC error, for sure shared or VPS, complile got killed because high cpu ussage.

sudo dd if=/dev/zero of=/tmp/swap bs=1M count=512sudo mkswap /tmp/swapsudo swapon /tmp/swap

http://www.trinitycore.org/f/topic/3178-error-with-the-compiliation-make-install/