Your SlideShare is downloading. ×
0
TrinityCore
Understand & Implement
of Private Sever
http://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 update
apt-get install openssh-server
sudo ufw enable
sudo ufw allow 22
sudo ufw allow 3306
sudo uf...
Getting started
$ sudo apt-get install build-essential autoconf libtool gcc
g++ make cmake git-core patch wget links zip u...
Debian-based distributions
If you are using Ubuntu 12.04 LTS, Debian 7 or some 2013
linux distributions you will also need...
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-proces...
Building the server itself
Getting the sourcecode
cd ~/
git clone git://github.com/TrinityCore/TrinityCore.git
A directory...
Creating the build-directory
To avoid issues with updates and colliding sourcebuilds, we create a
specific build-directory...
Configuring for compiling
To configure the core, we use space-separated parameters attached
to the configuration-tool (cma...
Building the core
After configuring and checking that everything is in order (read
cmakes output), you can build Trinity (...
Building the core
If you have multiple CPU cores, you can enable the use of those
during compile :

make -j <number of cor...
Building the core
After compiling and installing, you will find your core binaries in
/home/<username>/server/bin, and the...
Keeping the code up to date
TrinityCore developers are always at work fixing and adding new
features to the core. You can ...
Installing libMPQ (MoPaQ)
MPQ-reader library
Installation of the libMPQ library is only required if you want to
extract th...
Configuring, compiling and installing
libMPQ
Change directory to ~/TrinityCore/dep/libmpq/ before doing this
Alternative 2...
Optional software
Graphical database-viewing/editing
● HeidiSQL, http://www.heidisql.com/
● SQLyog, http://www.webyog.com/...
Installing MySQL Server
When configuring MySQL make sure you remember the password you
set for the default root account an...
Installing The Trinity Databases
Trinity needs three databases to run - Auth, Characters, and World:
auth - holds account ...
Setting up MySQL Server
1.Create the three databases by importing
/root/TrinityCore/sql/create/create_mysql.sql. You now
h...
Setting up MySQL Server
3.Click on the "characters" database and import the
characters database structure by importing
/ro...
Keeping the DB up to date
Note: You can run the following query on the World
database to see your current DB and core revi...
Setting up MySQL Server
1.Extract the TDB_FULL.sql file from the archive and
import it into your world database.
2.If they...
TrinityCore
Database configuration
http://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

|

| character...
Database Config
root@vTrinity13:~/TrinityCore/sql# cat create/create_mysql.sql
GRANT USAGE ON * . * TO 'trinity'@'localhos...
Database Config
root@vTrinity13:~/TrinityCore/sql/base# mysql -u trinity p auth < auth_database.sql
root@vTrinity13:~/Trin...
Database Config
root@vTrinity13:/home/joo/TDB_full_335.
52_2013_07_17# mysql -u trinity -p world < TDB_full_335.
52_2013_0...
Database Config
root@vTrinity13:~/TrinityCore/sql/updates/world# mysql
-u trinity -p world < 2013_07_17_00_world_version.s...
Realmlist table
You need to make sure that the authserver directs
incoming connections to your realm.
In the auth database...
Realmlist table
127.0.0.1
-- Leave default localhost if you are
connecting alone from the same machine TrinityCore runs
on...
Realmlist table
An example of how it would look with a real address:
use auth;
update realmlist set address = '192.168.56....
Realmlist table
mysql> describe realmlist;
+----------------------+----------------------+------+-----+---------------+---...
Realmlist table
mysql> update realmlist set address = '192.168.56.1' where id = 1;
Query OK, 1 row affected (0.00 sec)
Row...
Check version
mysql> select * from version;
+-----------------------------------------------------------------------------...
DB update script
#!/bin/bash
FILES=~/TrinityCore/sql/updates/dbname/*.*
for f in $FILES
do
echo "Processing $f file..."
my...
TrinityCore
Setting 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 en...
dbc and maps files
cd <your WoW client directory>
/home/<username>/server/bin/mapextractor
mkdir /home/<username>/server/d...
vmaps and mmaps files
cd <your WoW client directory>
/home/<username>/server/bin/vmap4extractor
mkdir /home/<username>/ser...
Configuring the server
First of all you need to create 2 files : worldserver.conf
and authserver.conf in your
/home/<usern...
worldserver.conf
Edit MySQL account username and password (instead of
trinity;trinity).
LoginDatabaseInfo
= "127.0.0.1;330...
worldserver.conf
vmap.enableLOS = 1 -- set this to 0
vmap.enableHeight = 1 -- set this to 0
vmap.petLOS = 1 -- set this to...
worldserver.conf
WorldServerPort = 8085
RealmServerPort = 3724
Check a port
root@vTrinity13:/home/joo/server/etc# netstat -a |grep 8085
tcp
0
0 *:8085
*:*
LISTEN
root@vTrinity13:/home/j...
Check a port from PC to Server
C:>telnet 192.168.56.1 3724
C:>telnet 192.168.56.1 8085
authserver.conf
Edit MySQL account username and password (instead of
trinity;trinity).
LoginDatabaseInfo = "127.0.0.1;3306...
NAT port forwarding in Virtulbox
TrinityCore
Getting start
Server directory
WorldServer
Create account
You can type commands inside the worldserver program,
similar to a command prompt.
Type: account create <us...
AuthServer
Wow Client realmlist.wtf
Future configuration
Client
- Windows 8
● Wow Client

WoW
Client

Server
- Virtual box, Ubuntu 13.04
● Game Server
○ auth
...
TrinityCore
Reference & Trouble shooting
Reference sites
http://neverendless-wow.com/
Repack download
http://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 -...
make compile error 1
[ 99%] Building CXX object
src/server/worldserver/CMakeFiles/worldserver.
dir/CommandLine/CliRunnable...
make compile error 2
/root/TrinityCore/src/server/worldserver/RemoteAccess/RARunnable
.cpp:78:72: error: no matching funct...
make compile error 3
collect2: error: ld terminated with signal 9 [Killed]
Not TC error, for sure shared or VPS, complile ...
TrinityCore server install guide
TrinityCore server install guide
TrinityCore server install guide
TrinityCore server install guide
Upcoming SlideShare
Loading in...5
×

TrinityCore server install guide

7,173

Published on

TrinityCore, only for education

Published in: Education, Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
7,173
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
46
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "TrinityCore server install guide"

  1. 1. TrinityCore Understand & Implement of Private Sever http://collab.kpsn.org/display/tc/How-to_Linux
  2. 2. Environment Client - Windows 8 - WoW Client: 3.3.5a Server - Virtual box, Ubuntu 13.04 - TrinityCore: TDB 335.52
  3. 3. What will we learn from this course?
  4. 4. Server setting apt-get update apt-get install openssh-server sudo ufw enable sudo ufw allow 22 sudo ufw allow 3306 sudo ufw allow 3724 sudo ufw allow 8085 sudo ufw disable
  5. 5. 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
  6. 6. 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
  7. 7. Creating a user to work with $ sudo adduser <username>
  8. 8. Installing ACE (Adaptive Communication Environment) $ sudo apt-get install libace-dev
  9. 9. 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.
  10. 10. Building the server itself Getting the sourcecode cd ~/ 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.
  11. 11. 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 build cd build
  12. 12. 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
  13. 13. 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) make make install
  14. 14. 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
  15. 15. 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.
  16. 16. 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.
  17. 17. 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.
  18. 18. Configuring, compiling and installing libMPQ Change directory to ~/TrinityCore/dep/libmpq/ before doing this Alternative 2 : Systemwide installation sh ./autogen.sh ./configure make sudo make install
  19. 19. 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/
  20. 20. 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!
  21. 21. 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.
  22. 22. 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.
  23. 23. 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
  24. 24. 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`;
  25. 25. 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.
  26. 26. TrinityCore Database configuration http://collab.kpsn.org/display/tc/Database_master
  27. 27. Database Config root@vTrinity13:~/TrinityCore/sql/create# mysql -u root p < create_mysql.sql
  28. 28. Database Config mysql> show databases; +--------------------+ | Database | +--------------------+ | auth | | characters | | world | +--------------------+ 7 rows in set (0.01 sec)
  29. 29. 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;
  30. 30. 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
  31. 31. 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
  32. 32. Database Config root@vTrinity13:~/TrinityCore/sql/updates/world# mysql -u trinity -p world < 2013_07_17_00_world_version.sql Enter password:
  33. 33. 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 :
  34. 34. 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.
  35. 35. 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;
  36. 36. Realmlist table mysql> 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)
  37. 37. Realmlist table mysql> 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)
  38. 38. Check version mysql> 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)
  39. 39. DB update script #!/bin/bash FILES=~/TrinityCore/sql/updates/dbname/*.* for f in $FILES do echo "Processing $f file..." mysql --password=password dbname < $f done
  40. 40. TrinityCore Setting up the Server config
  41. 41. 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.
  42. 42. dbc and maps files cd <your WoW client directory> /home/<username>/server/bin/mapextractor mkdir /home/<username>/server/data cp -r dbc maps /home/<username>/server/data
  43. 43. vmaps and mmaps files cd <your WoW client directory> /home/<username>/server/bin/vmap4extractor mkdir /home/<username>/server/data/vmaps mkdir /home/<username>/server/data/mmaps cp -r vmaps mmaps /home/<username>/server/data cp Buildings/* /home/<username>/server/data/vmaps
  44. 44. 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.conf cp authserver.conf.dist authserver.conf
  45. 45. 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"
  46. 46. worldserver.conf vmap.enableLOS = 1 -- set this to 0 vmap.enableHeight = 1 -- set this to 0 vmap.petLOS = 1 -- set this to 0 vmap.enableIndoorCheck = 1 -- set this to 0
  47. 47. worldserver.conf WorldServerPort = 8085 RealmServerPort = 3724
  48. 48. Check a port root@vTrinity13:/home/joo/server/etc# netstat -a |grep 8085 tcp 0 0 *:8085 *:* LISTEN root@vTrinity13:/home/joo/server/etc# netstat -a |grep 3724 tcp 0 0 *:3724 *:* LISTEN
  49. 49. Check a port from PC to Server C:>telnet 192.168.56.1 3724 C:>telnet 192.168.56.1 8085
  50. 50. authserver.conf Edit MySQL account username and password (instead of trinity;trinity). LoginDatabaseInfo = "127.0.0.1;3306;trinity;trinity;auth"
  51. 51. NAT port forwarding in Virtulbox
  52. 52. TrinityCore Getting start
  53. 53. Server directory
  54. 54. WorldServer
  55. 55. Create account You can type commands inside the worldserver program, similar to a command prompt. Type: account create <user> <pass> Example: account create test test Type: account set gmlevel <user> 3 -1 Example: 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".
  56. 56. AuthServer
  57. 57. Wow Client realmlist.wtf
  58. 58. Future configuration Client - Windows 8 ● Wow Client 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
  59. 59. TrinityCore Reference & Trouble shooting
  60. 60. Reference sites http://neverendless-wow.com/ Repack download http://jeutie.info/downloads/#toggle-id-3
  61. 61. download dbc, maps and vmaps files http://goo.gl/ATbYYG
  62. 62. 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
  63. 63. 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()
  64. 64. 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 1 make[1]: *** [src/server/worldserver/CMakeFiles/worldserver.dir/all] Error 2 make: *** [all] Error 2
  65. 65. 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=512 sudo mkswap /tmp/swap sudo swapon /tmp/swap http://www.trinitycore.org/f/topic/3178-error-with-thecompiliation-make-install/
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×