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_Arbonne_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/spora-server-page.rar
    # unrar x spora-server-page.rar
    # vim index.php

    Configurez.. enregistrez.. ça roule !
    rendez vous sur http://adresse-de-votre-serveur/

    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 :)

    Possibly Related Posts:



    This website uses IntenseDebate comments, but they are not currently loaded because either your browser doesn't support JavaScript, or they didn't load fast enough.

    Comments are closed

    12 responses so far, want to say something?

    1. cinemania says:

      Sympa ton tuto, a un détail près… l’accès au SVN de Ascent nécessite un identifiant et mot de passe…

    2. Adri says:

      Merci !
      Ha, oui…. pour le détail:
      Login: anonymous
      Password: anonymous

    3. Brahamatus says:

      Super tuto
      je suis sur debian etch sur un rps pour test, aucune des 3 commandes de mise à jour n’a fonctionné

      et j’ai aparement un pb au lancement du realmserver accés refusé à un utilisateur ‘moocow’ que je ne trouve dans aucun fichier de configuration et le worldserver bloque à logoncommclient avec le résultat authentification timed out.

      le script que tu à donner n’a pas l’air de fonctionner sur mon serveur mais il ne me retourne aucun message d’erreur.

    4. Adri says:

      C’est tout a fait normal en fait, le « realmserver » n’est pas encore utilisé et ne sert donc a rien. (d’après le peu que j’en sais il servira ultérieurement pour créer un cluster).
      les deux seuls binaires a lancer sont: « ascent-logonserver » et « ascent-world ».

      Pour le script, l’as tu bien copié/lancé dans le dossier bin ?
      (essaye déjà de lancer les deux binaire cité plus haut indépendamment.. ça évitera bien des galères)

    5. Bowels says:

      Très bon tuto merci :)

      Cependant j’obtient un crash au lancement du logonserver:

      Config/Config.cpp:260 ASSERTION FAILED:
      current_variable == «  »
      ascent-logonserver: Config/Config.cpp:260: bool ConfigFile::SetSource(const char*, bool): Assertion `current_variable == «  »‘ failed.

      une idée ? svp merci

    6. Adri says:

      Merci,

      cependant ton erreur est vraiment étrange et je ne l’ai jamais rencontré.. :(
      Pourrais tu m’envoyer tes fichiers configuration a adrien.pujol(arobase)crashdump.fr ? Que je puisse y jeter un oeil ? ;)

    7. Adri says:

      Problème réglé, mise a jours du tutoriel ;)

    8. Guismo says:

      J’ai un petit souci lors de l’exécution d’une commande, et je vois pas comment m’en débarrasser…
      Je vous laisse voir :

      Building Precompiled Header…
      make_precompiled_header.sh: 5: g++: not found
      Done. Now you can run make, and experience much faster build times. Remember to re-run this script every time you svn update.
      wowsvr@ubuntu-test:~/ascent/trunk$ make -j2
      make all-recursive
      make[1]: entrant dans le répertoire « /home/wowsvr/ascent/trunk »
      Making all in extras
      make[2]: entrant dans le répertoire « /home/wowsvr/ascent/trunk/extras »
      Making all in collision
      make[3]: entrant dans le répertoire « /home/wowsvr/ascent/trunk/extras/collision »
      Making all in collision_dll
      make[4]: entrant dans le répertoire « /home/wowsvr/ascent/trunk/extras/collision/collision_dll »
      source=’vmap/BaseModel.cpp’ object=’BaseModel.o’ libtool=no \
      DEPDIR=.deps depmode=none /bin/bash ../../../depcomp \
      g++ -DHAVE_CONFIG_H -I. -I../../.. -I/usr/include -I/usr/local/include -I. -I./g3dlite -I./vmap -I/usr/include -I/usr/local/include -Wall -pthread -I/usr/include/openssl -DHAVE_SSL -I/usr/include/mysql -DBIG_JOINS=1 -fPIC -c -o BaseModel.o `test -f ‘vmap/BaseModel.cpp’ || echo ‘./’`vmap/BaseModel.cpp
      source=’vmap/CoordModelMapping.cpp’ object=’CoordModelMapping.o’ libtool=no \
      DEPDIR=.deps depmode=none /bin/bash ../../../depcomp \
      g++ -DHAVE_CONFIG_H -I. -I../../.. -I/usr/include -I/usr/local/include -I. -I./g3dlite -I./vmap -I/usr/include -I/usr/local/include -Wall -pthread -I/usr/include/openssl -DHAVE_SSL -I/usr/include/mysql -DBIG_JOINS=1 -fPIC -c -o CoordModelMapping.o `test -f ‘vmap/CoordModelMapping.cpp’ || echo ‘./’`vmap/CoordModelMapping.cpp
      ../../../depcomp: line 571: exec: g++: non trouvé
      make[4]: *** [BaseModel.o] Erreur 127
      make[4]: *** Attente des tâches non terminées….
      ../../../depcomp: line 571: exec: g++: non trouvé
      make[4]: *** [CoordModelMapping.o] Erreur 127
      make[4]: quittant le répertoire « /home/wowsvr/ascent/trunk/extras/collision/collision_dll »
      make[3]: *** [all-recursive] Erreur 1
      make[3]: quittant le répertoire « /home/wowsvr/ascent/trunk/extras/collision »
      make[2]: *** [all-recursive] Erreur 1
      make[2]: quittant le répertoire « /home/wowsvr/ascent/trunk/extras »
      make[1]: *** [all-recursive] Erreur 1
      make[1]: quittant le répertoire « /home/wowsvr/ascent/trunk »
      make: *** [all] Erreur 2

      J’ai vu que le tuto parle de g++ 4.1 au lieu de 4.2…
      Si vous pensez que c’est ca, pouvez vous m’indiquer comment mettre en place le 4.1 au lieu du 4.2… la je sais pas comment faire… :s

    9. Adri says:

      (je venais de faire un bon gros post.. mais j’ai tout perdu a cause d’une connexion de merde, alors je vais faire plus court)
      D’après ce que je peux voir tu doit avoir oublié d’installer g++.. essaye donc d’installer toutes les applications requises pour ce tuto:

      # apt-get install subversion libmysql++-dev libssl-dev libtool libtool libpcre3-dev
      # apt-get install gcc automake g++ autoconf build-essential openssl unrar

    10. urbaniz says:

      Bonjour,

      D’abord GG pour ce tuto tres simple et performant. j’ai 2 questions a poser tres simple :
      1°) quelle est la version de ce core ? (2.4.1, 2.4.2, ???)
      2°) est-ce que l’on peut m’expliquer comment créer un compte a partir de la table logon sous phpmyadmin ?

      d’avance merci.

      Urbaniz.

    11. Adri says:

      Dans ce tutoriel c’est une version « trunk » en perpétuelle évolution que nous utilisons, donc il faut lire les notes de version pour en savoir plus.. pour le moment ascent supporte les versions 2.4.x. ;)

    12. MetalMan says:

      a corriger:
      ce n'es plus :
      svn co http://mmoforge.org/svn/ascent/
      mais:
      svn co svn://svn.ascentemulator.net/ascent

      sinon gg pour le tuto,je suis entrain d'installes ascent pour le moment :D

    Comments are closed.

    IMGP2023IMGP1900IMGP1873IMGP2032IMGP1849IMGP1817IMGP1570IMGP1572IMGP1469IMGP1342IMGP1272IMGP1226