Créer son serveur World Of Warcraft privé (Avec Ascent/Linux) Rev.2!

    Publicités

Users Who Are Viewing This Thread (Total: 0, Members: 0, Guests: 0)

w0wMust

Membre Banni
Feb 8, 2011
72
0
426
29
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 Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
$ 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: Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris! ou Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
maps: Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris! ou Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
vmaps: Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris! ou Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris! ou Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
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 Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!

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 Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
# unrar x spora-server-page.rar
# vim index.php

Configurez.. enregistrez.. ça roule !
rendez vous sur Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!

N’hésitez pas a commenter le tutoriel si vous avez eu des galères, des trucs-qui-marchent-pas ou simplement un merci ? ça fait toujours plaisir, pour moi et pour ceux qui aurais le même souci :)