Jump to content

MangosTwo Install - Raspbian

From Together

This howto will be on how to get MangosTwo running on Rasbian on a RaspberryPi 2

Installing Rasbian

Download the Rasbian Image from the RaspberryPi Download page: [1] and install it to your sd card. For mine, I am going to use an 8GB card and use a USB Flash Drive as extra storage. I'm using the 2016-05-27-raspbian-jessie-lite.img image

Starting up basic Rasbian Environment

After creating the sd card and booting into Rasbian, the default login is username: pi password: raspberry

check ifconfig for your ip address as I will be running on eth0 (hard wire) until after the compile is complete, then I will switch to running the RaspberryPi as an AP hotspot to make a portable WoW server. (Amazing little boxes these are).

First thing is to update the OS

sudo apt-get update
sudo apt-get upgrade

Then, reboot and log back in

Setting up Build Environment for Mangos

You can immediately SSH in now as the process is already running.

After logging in, Add the user mangos and edit the /etc/sudoers file and add the mangos username

sudo adduser mangos

edit /etc/sudoers

Add under 'User Privilege Section' underneath root

mangos ALL=(ALL) NOPASSWD: ALL

Exit and save

Now type in exit and login as mangos username. You should have sudo rights now.

Type in these commands to establish a build environment

sudo apt-get install -y autoconf automake clang cmake gcc g++ libtool make patch
sudo apt-get install -y cmake-curses-gui git-core

With this version of Rasbian, all software was installed without an error because they were in the repositories.

Installing the Development headers

sudo apt-get install -y libace-dev libbz2-dev libmysqlclient-dev libncurses5-dev libreadline-dev libssl-dev zlib1g-dev

Installing the Database Server (MySQL)

sudo apt-get install -y mysql-server mysql-common mysql-client

Set the root password for the MySQL server

Creating and Setting Permissions for MySQL User

mysql -u root -p

CREATE USER 'mangos'@'localhost' IDENTIFIED BY 'password';

for Password, use whatever you want and for user mangos, use whatever you want.

GRANT ALL PRIVILEGES ON `mangos\_%` . * TO 'mangos'@'localhost';
GRANT USAGE ON * . * TO 'mangos'@'localhost' IDENTIFIED BY 'password' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

again for username and password, use whatever you want, just ensure they match

Creating the Mangos Databases


CREATE DATABASE `mTwo_characters` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE DATABASE `mTwo_realmd` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE DATABASE `mTwo_world` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
FLUSH PRIVILEGES ;

Downloading the Mangos-Two Source from github and compiling

While you are in user mode and not root, create the mangos source directory

cd ~
mkdir mangos-two
cd mangos-two
** Case Sensitive, be sure to take note of this as the branches are different **
git clone --recursive -b develop21 https://github.com/mangoszero/server.git
git clone --recursive -b Develop21 https://github.com/mangoszero/database.git

Be sure to use the --recursive so git will pull in everything, without this your compile will fail

Compiling Mangos

create the directories needed for build

sudo mkdir -p /opt/mTwo/
sudo mkdir -p /opt/mTwo/logs/mangos-two/
sudo mkdir -p /opt/mTwo/share/mangos-two/
sudo chown -R mangos:mangos /opt/mTwo
cd server
mkdir _build
cd _build
cmake -DCMAKE_INSTALL_PREFIX=/opt/mTwo -DCMAKE_BUILD_TYPE=Debug -DACE_USE_EXTERNAL=1 -DSOAP=1 ..

DACE_USE_EXTERNAL=1 is important for the Tools to compile

Now in the ~/mangos-two/server/_build directory

make
      • Errors on compile because the ARM Processor in the Raspberry Pi doesn't have SSE2 instructions ***
        • STOP ****


After a successful compile run this.

make install

Configuration of Mangos

cd /opt/mTwo/etc
cp ahbot.conf.dist ahbot.conf
cp mangosd.conf.dist mangosd.conf
cp realmd.conf.dist realmd.conf
nano realmd.conf

The LoginDatabaseInfo Variable looks like this

LoginDatabaseInfo      = "127.0.0.1;3306;mangos;mangos;realmd"

Change to

LoginDatabaseInfo      = "127.0.0.1;3306;mangos;password;mTwo_realmd"


then for mangosd.conf

nano mangosd.conf

The lines that need to be changed are:

LoginDatabaseInfo      = "127.0.0.1;3306;mangos;mangos;realmd"
WorldDatabaseInfo      = "127.0.0.1;3306;mangos;mangos;mangos"
CharacterDatabaseInfo      = "127.0.0.1;3306;mangos;mangos;characters"
ScriptDev2DatabaseInfo      = "127.0.0.1;3306;mangos;mangos;mangos"

These lines should be changed to:

LoginDatabaseInfo      = "127.0.0.1;3306;mangos;password;mTwo_realm"
WorldDatabaseInfo      = "127.0.0.1;3306;mangos;password;mTwo_world"
CharacterDatabaseInfo      = "127.0.0.1;3306;mangos;password;mTwo_characters"
ScriptDev2DatabaseInfo      = "127.0.0.1;3306;mangos;password;mTwo_scripts"

Also in mangosd.conf, the "DataDir" needs to be changed from "." to "/opt/mTwo/data"

Map Extraction

Go into /opt/mTwo/bin and copy these files to your main World of Warcraft directory ( c:\program files\World of Warcraft in Windows. You should know where it is )

cp map-extractor [WoW DIR]
cp vmap-extractor [WoW DIR]
cp vmap-assembler [WoW DIR]
cp mmap-generator [WoW DIR]
cp ExtractResources.sh [WoW DIR]
cp MoveMapGen.sh [WoW DIR]
cp offmesh.txt[WoW DIR]

Change to your WoW DIR

chown +x ExtractResources.sh
./ExtractResources.sh

Answer the questions, should take a while. If you ever edit the offmesh.txt file, you have to re-run the ExtractResources.sh again.

After it's done, Create a 'data' directory in /opt/mTwo and copy the dbc,vmaps and mmaps directories to /opt/mTwo/data

Inserting Database Information

cd ~/mangos-two/database/Realm/Setup
mysql -u root -p mTwo_realmd < realmdLoadDB.sql
cd ~/mangos-two/database/Character/Setup
mysql -u root -p mTwo_characters < characterLoadDB.sql
cd ~/mangos-two/database/World/Setup
mysql -u root -p mTwo_world < mangosdLoadDB.sql

Inserting Table Information and Full DB

cd ~/mangos-two/database/

chmod +x make_full_WorldDB.sh
./make_full_WorldDB.sh
mysql -u root -p mTwo_world < full_db.sql

Running the Server

Realmd (Realm Server)

go to /opt/mTwo/bin and run the realmd server

cd /opt/mTwo/bin
./realmd

If after running realmd and you get an error

cd ~/mangos-two/database/Realm/Updates/Rel20
mysql -u root -p mTwo_realm < update_the_SQL_file_it_was_screaming_for.sql

You should get realmd listening for connections at this time.

Mangos (World Server)

go to /opt/mTwo/bin and run the mangosd server

cd /opt/mTwo/bin
./mangosd

If after running mangosd and you get an error

cd ~/mangos-two/database/World/Updates/Rel20
mysql -u root -p mTwo_world < update_the_SQL_file_it_was_screaming_for.sql

You should get mangosd listening for connections at this time.

Finalizing running the server

I use Screen so you'll have to install this

sudo apt-get install screen

Then, in the /opt/mTwo/bin directory, create a file called runserver.sh

#!/bin/sh
cd /opt/mTwo/bin
screen -A -m -d -S mangosworld ./mangosd

#!/bin/sh
cd /opt/mTwo/bin
screen -A -m -d -S mangosrealm ./realmd

Save it and then chmod +x runserver.sh

Credits

If you have any issues with this, please feel free to email me at me@chrisfaulkner.org