MangosTwo Install - Raspbian
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 ****
- Errors on compile because the ARM Processor in the Raspberry Pi doesn't have SSE2 instructions ***
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