TrinityCore server install guide

Post on 21-Feb-2017

11.253 views 8 download

Transcript of TrinityCore server install guide

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

Environment

Client - Windows 8- WoW Client: 3.3.5a

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

What will we learn from this course?

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

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

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

Creating a user to work with

$ sudo adduser <username>

Installing ACE (Adaptive Communication Environment)

$ sudo apt-get install libace-dev

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.

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.

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

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

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

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

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.

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.

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.

Configuring, compiling and installing libMPQ

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

Alternative 2 : Systemwide installation

sh ./autogen.sh./configuremakesudo make install

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/

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!

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.

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.

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

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`;

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.

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

Database Config

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

Database Config

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

| Database |

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

| auth |

| characters |

| world |

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

7 rows in set (0.01 sec)

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;

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

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

Database Config

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

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 :

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.

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;

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)

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)

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)

DB update script

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

TrinityCoreSetting up the Server config

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.

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

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

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

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"

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

worldserver.conf

WorldServerPort = 8085

RealmServerPort = 3724

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

Check a port from PC to Server

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

authserver.conf

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

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

NAT port forwarding in Virtulbox

TrinityCoreGetting start

Server directory

WorldServer

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".

AuthServer

Wow Client realmlist.wtf

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

TrinityCoreReference & Trouble shooting

Reference sites

http://neverendless-wow.com/

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

download dbc, maps and vmaps files

http://goo.gl/ATbYYG

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

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()

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

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/