Créer un serveur World Of Warcraft avec Ascent
Créer son serveur World Of Warcraft privé (Avec Ascent/Linux) Rev.2!
Voila, la révision 2 du tutoriel “Créer son serveur World Of Warcraft privé (Avec Ascent/Linux)” est enfin arrivé ! Pour cela j’ai tout repris a zéro, avec l’expérience que j’ai acquise dans le domaine de l’émulation j’espère pouvoir vous proposer un article complet et pas trop foireux, mais avant tout accessible a tous… Allez sans plus attendre, on attaque.
# -> Loggué en tant que root.
$ -> Loggué en tant qu’utilisateur (wowsvr, ici)
#
Mysql
Si vous n’avez pas déj� installé Mysql sur votre serveur:
# apt-get install mysql
Puis on se connecte sur ce serveur:
# mysql -uroot -p
La, on va créer un utilisateur ascent, une base de son nom et les 3 tables puis lui alouer les droits dessus:
> CREATE USER 'ascent'@'localhost' IDENTIFIED BY 'MotDePasseAscent'; (DeF4Vv%e31E)
> GRANT USAGE ON *.* TO 'ascent'@'localhost' IDENTIFIED BY 'MotDePasseAscent';
> create database world;
> create database logon;
> create database characters;
> GRANT ALL PRIVILEGES ON `world` . * TO 'ascent'@'localhost';
> GRANT ALL PRIVILEGES ON `logon` . * TO 'ascent'@'localhost';
> GRANT ALL PRIVILEGES ON `characters` . * TO 'ascent'@'localhost';
On recharge les privilèges et on quitte:
> FLUSH PRIVILEGES;
> quit
#
Compilation du Core
Tout d’abord, installons les outils dont on aura besoin par la suite:
# apt-get install subversion libmysql++-dev libssl-dev libtool gcc automake g++ autoconf build-essential openssl libtool libpcre3-dev unrar
Puis ajoutons l’utilisateur qui fera ‘tourner’ le serveur:
# adduser wowsvr
# su wowsvr
$ cd
Rapatrions les derniers fichiers de Ascent sur notre machine:
$ svn co http://mmoforge.org/svn/ascent/
$ cd ascent/trunk/
On configure:
$ autoreconf --install --force
$ ./configure --prefix=/home/wowsvr/ascent-server
(j’ai eu des soucis de compilation avec gcc4.2.. par contre nickel avec gcc4.1)
# aptitude install gcc-4.1 gcc-4.1-base
# update-alternatives –install /usr/bin/gcc gcc /usr/bin/gcc-4.1 40 –slave /usr/bin/g++ g++ /usr/bin/g++-4.1
(update-alternatives –config gcc pour changer de version de gcc/g++)
$ sh make_precompiled_header.sh
On compile:
$ make -j2
Et on installe:
$ make install
#
Configuration
Passons maintenant a la configuration - Attention, ici je vous ais détaillé la configuration minimale pour que le serveur fonctionne, mais je vous invite a lire les fichiers, ils sont très détaillés et compréhensibles)
$ echo "/home/wowsvr/ascent-server/lib" > /etc/ld.so.conf.d/ascent.conf
$ mkdir /home/wowsvr/ascent-server/etc
$ cp src/*.conf /home/wowsvr/ascent-server/etc/
$ cd /home/wowsvr/ascent-server/etc/
Editez les lignes suivantes (pour passer en mode édition tapez: “i” et “Echap” pour quitter le mode. Pour sauvegarder tapez: “:wq!”)
$ vim ascent-logonserver.conf
032:
033: Username = "ascent"
034: Password = "MotDePasseAscent"
035: Name = "logon"
112:
113: AllowedIPs = "127.0.0.1/24"
114: AllowedModIPs = "127.0.0.1/24">
$ vim ascent-realm.conf
036:
038: Name = "DonnezLuiUnNom"
064:
066: Icon = "PVP" (ici: PVP, Normal, RPPVP, RP)
$ vim ascent-world.conf
031:
032:
210: # (commenter: rajouter un # en debut de ligne)
480: RemotePassword = "MotDePasseRemoteAscent">
698: # (commenter: rajouter un # en debut de ligne)
Bon, la on a déj� fait un grand morceau du chemin! Allez courage !
$ cd ../bin
#
Maps, vMaps, DBC
On crée les 3 dossiers qui vons contenir les maps, les vmaps et les DBC
$ mkdir maps; mkdir vmaps; mkdir DBC;
Je met a votre disposition les fichiers que j’ai pu trouver sur le net:
DBC: http://www.megaupload.com/fr/?d=QF5KGDWH ou http://www.megaupload.com/fr/?d=EY3C7NLV
maps: http://dl.free.fr/iHWpvBSjy/maps.rar ou http://www.megaupload.com/fr/?d=657UAN8X
vmaps: http://dl.free.fr/kjaMn7jDb/vmaps.rar ou http://www.megaupload.com/?d=ZPTMQYY3 ou http://www.megaupload.com/?d=BPNLKG40
a copier dans les 3 dossiers qu’on a créé ci-dessus…
#
Retour sur Mysql
Bon maintenant, on va creer la structure des tables:
$ mysql -uascent -p world < /home/wowsvr/ascent/trunk/sql/2785_world_structure.sql
$ mysql -uascent -p logon < /home/wowsvr/ascent/trunk/sql/2785_logon_structure.sql
$ mysql -uascent -p characters < /home/wowsvr/ascent/trunk/sql/2785_character_structure.sql
Puis on va appliquer les mises a jours - attention, il peut y avoir des erreurs, ignorez les.. rien de grave.
$ cd world_updates
$ for LIST in *; do mysql -uascent --password=MotDePasseMysql world < $LIST; done;
$ cd ../logon_updates
$ for LIST in *; do mysql -uascent --password=MotDePasseMysql logon < $LIST; done;
$ cd ../character_updates
$ for LIST in *; do mysql -uascent --password=MotDePasseMysql characters < $LIST; done;
$ cd /home/wowsvr/
Maintenant, on va télécharger une Base de données des PNJ, Mobs, Skills… bref le contenu du jeu !
$ svn co http://svn2.assembla.com/svn/Wow_Ascent_...e_DB/WAAD/
Puis a l’aide du script fourni, on va l’injecter ! Pour cela, il va falloir configurer un petit peu la moulinette:
$ cd WAAD/
$ vim Waad.sh
02: user="ascent"
03: pass="MotDePasseMysql"
04: wdb="world"
05: cdb="characters"
$ chmod +x Waad.sh
Et convertir les fin de lignes format windows ^M au format Linux:
$ perl -pi -e 's/r//g' Waad.sh
Allez, on lance le tout !
$ ./Waad.sh
Tapez w
Tapez x
A ce niveau la je ne peut que vous conseiller de jeter un œil au fichier Notes de version, il y aura peut être des correctifs (.sql) a appliquer en fonction de la version utilisée..
Je vous fourni, dans mon extrême gentillesse un script de lancement des binaires:
$ cat < launcher.sh
Collez y ça:
#!/bin/bash
# Logon..
L_SRV="./ascent-logonserver"
L_PID="./logonserver.pid"
# Core..
C_SRV="./ascent-world"
C_PID="./ascent.pid"
echo "$(date) Lancement des aplications de Ascent...";
# On coupe tout process du logonserver lancé précedement..
killall logonserver;
sleep 1;
rm -f $L_PID;
sleep 1;
screen -dmS wowCore nice $L_SRV;
# On coupe tout process du Core lancé précedement..
killall ascent;
sleep 1;
rm -f $C_PID;
sleep 1;
screen -dmS wowLogon nice $C_SRV;
echo "$(date) Lancé."
while [ true ]; do
sleep 15;
echo “$(date) Test si les processus son démaré…”;
if [ "0" = "$(ps x | grep -e logonserver | grep -v grep | wc -l)" ]; then
echo “$(date) Erreur: LogonServer serveur a crashé!”;
echo “$(date) mise en attente…”;
sleep 5;
if [ "0" = "$(ps x | grep -e logonserver | grep -v grep | wc -l)" ]; then
echo “$(date) Crash! Relancement du serveur LogonServer…”;
# On Relance…
killall logonserver;
sleep 1;
rm -f $L_PID;
sleep 1;
screen -dmS wowCore nice $L_SRV;
# On détruit les eventuelles sessions “mortes”
screen -wipe;
echo “$(date) lancé.”;
else
echo “$(date) Processus déja démaré.”;
fi
fi
if [ "0" = "$(ps x | grep -e ascent | grep -v grep | wc -l)" ]; then
echo “$(date) Erreur: Ascent serveur a crashé!”;
echo “$(date) mise en attente…”;
sleep 5;
if [ "0" = "$(ps x | grep -e ascent | grep -v grep | wc -l)" ]; then
echo “$(date) Crash! Relancement du serveur Ascent…”;
# On relance …
killall ascent;
sleep 1;
rm -f $C_PID;
sleep 1;
screen -dmS wowLogon nice $C_SRV;
# On détruit les eventuelles sessions “mortes”
screen -wipe;
echo “$(date) lancé.”;
else
echo “$(date) Processus déja démaré.”;
fi
fi
echo “$(date) Analise complété.”;
done
EOF
On le rend executable:
$ chmod +x launcher.sh
#
Allez, vite, on lance !
A ce stade votre serveur est installé, il ne vous manque plus qu’as ajouter un utilisateur, pour ça,
la solution la plus simple: phpmyadmin. vous pouvez inserer dans la table ‘logon’ vos joueurs.
ça y est, le moment tant attendu est arrivé, on lance le schmilblik:
$ screen -dmS wowsvr ./launcher.sh
#
Page web
En option, voila un petit script php qui permetra au joueurs de s’inscrire sur votre serveur !
Il est tard j’en ai un peu marre, alors je vous lache ça en vrac:
# aptitude install apache2 php5
# cd /var/www/
# wget http://www.crashdump.fr/~polux/wow-spora...r-page.rar
# unrar x spora-server-page.rar
# vim index.php
Configurez.. enregistrez.. ça roule !
rendez vous sur http://adresse-de-votre-serveur/