Créer son serveur World Of Warcraft privé (Avec MaNGOS/Linux)!

janvier 5th, 2008
|

EDIT: Il existe un package pour debian ici. Je ne l’ai pas encore testé ;)

Je vous propose aujourd’hui un tutoriel qui vous aidera a créer un serveur privé World Of Warcraft sous Linux/Debian. Attaquons donc tout de suite le vif du sujet, c’est plutôt long, il vous faudra donc:
- Un serveur sous debian (ou assimilé, comme: K-Ubuntu),
- Les programmes/librairies suivantes: zlibc gcc g++ make automake autoconf glibc glibc-dev mysql binutils cpp libc6 libc6-dev libc6-i686 libgcc libgcc-dev libmysql++-dev linux-header-(version) linux-kernel-headers linux-kernel-devel makedepend mysql-client-5.0 mysql-common mysql-server python libssl libssl-dev openssl ssl-cert subversion g77 zlib1g-dev
screen mc unzip libstdc++ unrar
- Les fichiers suivant:
DBC: http://www.megaupload.com/fr/?d=EY3C7NLV,
MAP: http://www.megaupload.com/fr/?d=657UAN8X,
VMAP: http://www.megaupload.com/?d=ZPTMQYY3 et http://www.megaupload.com/?d=BPNLKG40
- Du temps,
- Une bonne dose de courage,
- Et quelques litres de café :)

Récapitulatif des logiciels utilisés:
Mangos SVN (Serveur): 0.10
UBD (Base de données): 0.9.1,
Core: 5057,
SD2: 233
DBC: 2.3.3
Maps, vMAps: 2.3.2

  • Installer les paquets nécessaires:
  • 1
    # aptitude install zlibc gcc g++ make automake autoconf glibc glibc-dev mysql binutils cpp libc6 libc6-dev libc6-i686 libgcc libgcc-dev libmysql++-dev linux-header-`uname -r` linux-kernel-headers linux-kernel-devel makedepend mysql-client-5.0 mysql-common mysql-server python libssl libssl-dev openssl ssl-cert subversion g77 zlib1g-dev screen mc unzip libstdc++ unrar

    Allez donc vous faire un café, maintenant. Deux sucres pour moi, s’il vous plaît.

    - Créez l’utilisateur qui lancera le serveur (pour des raisons de sécurité, ne lancez pas l’emulateur en root!) – ‘wowsvr’ chez moi, mais vous pouvez évidement l’adapter a votre utilisation

    1
    # adduser wowsvr

    - Puis on se rend dans son home et on crée le dossier qui va contenir les fichiers du serveur.

    1
    2
    3
    # cd /home/wowsvr
    # mkdir mangos
    # cd mangos

    - On se connecte au SVN de mangos et on récupère la dernière version de l’emulateur.

    1
    # svn co https://mangos.svn.sourceforge.net/svnroot/mangos/trunk

    - On se connecte au SVN de ScriptDev2 et on récupere sa dernière version.

    1
    2
    # cd trunk/src/bindings
    # svn co https://scriptdev2.svn.sourceforge.net/svnroot/scriptdev2/

    - Puis on prépare la compilation

    1
    # cd ../..

    - On édite donc le fichier configure.ac

    1
    # vim configure.ac

    - éditez le fichier configure.ac, rajoutez les lignes suivantes a la fin du fichier entre:
    src/bindings/Makefile
    src/bindings/universal/Makefile
    Et
    )]
    Ajoutez:
    src/bindings/scriptdev2/Makefile
    src/bindings/scriptdev2/sql/Makefile
    src/bindings/scriptdev2/sql/Updates/Makefile
    - Et on reconfigure

    1
    2
    3
    4
    5
    6
    # autoreconf --install --force
    # autoconf
    # automake src/bindings/scriptdev2/Makefile
    # automake src/bindings/scriptdev2/sql/Makefile
    # automake src/bindings/scriptdev2/sql/Updates/Makefile
    # ./configure --prefix=/home/wowsvr/mangos --sysconfdir=/home/wowsvr/mangos/etc --with-python --enable-cli --enable-ra --datadir=/home/wowsvr/mangos

    - Voila, la on attaque la compilation.. attention ça peut être très long suivant votre configuration, servez nous donc le café ! (Environ 30mn chez moi) Donc ne l’interrompez pas ! Au pire, si vous plantez tapez « # make clean » et recommencez…

    1
    2
    # make
    # make install

    - Reprenez un café..

    1
    2
    3
    # cd src/bindings/scriptdev2
    # make
    # make install

    - On va maintenant étudier l’architecture du serveur:

    1
    # Cd /home/wowsvr/mangos

    | etc/ = Tous les fichiers de configuration.
    | bin/ = Les exécutables..
    | mangos/ = La base de données.
    | trunk/ = Les sources.
    | Lib = Les libraires ainsi que le registre, ne rien changer dans ce dossier !
    | scriptdev2/ = ici se trouvent les fichiers pour SQL scriptdev2.

  • Installation SQL:
  • - maintenant, la manière LA PLUS FACILE d’obtenir les cartes et les dossiers de DBC sur votre serveur est de les récupérer sur votre machine windows parce que Mangos ne les intègre pas, sauvegardez les dans un coin, au cas ou vous deviez réinstaller le serveur ! Recuprez ‘ad.exe’ et ‘MPQE.exe’ et utilisez les pour récupérer les fichiers en question.
    TECHNIQUEMENT Mangos est maintenant installé, cependant, je ne vous ai pas encore parlé des bases de données.. Allons-y :)

    1
    2
    3
    4
    5
    6
    # cd /home/wowsvr/mangos/trunk
    # mv * ..
    # cd ../sql
    # wget https://unifieddb.svn.sourceforge.net/svnroot/unifieddb/Full_DB/UDB_0.9.1_Core_5057_SD2_233.rar --no-check-certificate
    # unrar e UDB_0.9.1_Core_5057_SD2_233.rar
    # mysql –u root –p

    - Entrez votre mot de passe..

    1
    2
    3
    4
    5
    6
    7
    > . create_mysql.sql
    > use characters
    > . characters.sql
    > use realmd
    > . realmd.sql
    > use mangos
    > . UDB_0.9.1_Core_5057_SD2_233.sql

    - Vous pouvez encore vous resservir un café :)

    1
    2
    > use realmd
    > UPDATE realmlist SET `name` = 'LeNomDuSvr';

    - Entrez ici l’ip du serveur, si vous ne le connaisez pas tapez # ifconfig

    1
    > UPDATE realmlist SET `address` = '0.0.0.0';

    - Si vous n’avez pas encore saisi de mdp pour l’utilisateur mangos sur la BDD:

    1
    > SET PASSWORD FOR mangos@localhost=PASSWORD('mangos');

  • Explications SQL:
  • acct: le numéro de votre compte, en gros l’id (langage SQL), donc pour le premier compte, mettez « 1″
    login: vous mettez votre nom de compte, celui que vous voulez!
    password: vous mettez votre mot de passe, celui que vous voulez!
    gm: vous la laissez vide pour les joueurs normaux, vous mettez « a » pour un compte MJ, et « az » pour un compte administrateur
    flags: mettez 8 pour que le compte puisse accéder aux maps Burning crusade

  • Autres fichiers
  • Copiez les fichiers ‘Maps’, ‘vMAps’ et ‘DBC’ et votre serveur est prêt a être lancé ! Bon allez, puisque vous êtes gentils je vais même vous fournir un script qui vous permettra de lancer le serveur:

  • Lanceur
  • Copiez ceci dans un fichier nomé « lanceur.sh » dans votre dossier « bin » (celui qui contient realmd et mangosd) puis tapez :

    1
    # chmod +x lanceur.sh

    Contenu du script:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    #!/bin/bash
    L_SRV=realmd
    C_SRV=mangosd
    printf "$(date)tLancement des aplications de mangos...n"
    screen -dmS wowReal nice ./${L_SRV}
    screen -dmS wowMangos nice ./${C_SRV}
    printf "$(date)tLancé.nn"
    while [ true ]; do
    sleep 15
    printf "$(date)tTest si les processus son démaré...n"
    if [ "0" = "$(ps x | grep -e real | wc -l)" ]; then
    printf "$(date)tErreur: Realmd serveur a crashé!n"
    printf "$(date)tmise en attente...n"
    sleep 5
    if [ "0" = "$(ps x | grep -e real | wc -l)" ]; then
    printf "$(date)tCrash! Relancement du serveur realmd...n"
    screen -dmS wowReal nice ./${L_SRV}
    printf "$(date)tlancé.n"
    else
    printf "$(date)tProcessus déja démaré.n"
    fi
    fi
    if [ "0" = "$(ps x | grep -e mangos | wc -l)" ]; then
    printf "$(date)tErreur: mangos serveur a crashé!n"
    printf "$(date)tmise en attente...n"
    sleep 5
    if [ "0" = "$(ps x | grep -e mangos | wc -l)" ]; then
    printf "$(date)tCrash! Relancement du serveur mangos...n"
    screen -dmS wowMangos nice ./${C_SRV}
    printf "$(date)tlancé.n"
    else
    printf "$(date)tProcessus déja démaré.n"
    fi
    fi
    printf "$(date)tAnalise complété.nn"
    done

    Et merci pour le café ;)

    42 Comments:

    1. euh je bloque au niveau de l’edition du fichier configure.ac .
      On execute la commande, on modifie le fichier puis ? On fait quoi pour « valider » l’edition ? je reste toujours en mode edition pour le fichier configure.ac

    2. En mode « Insertion » tu appuye sur « Echap » puis tu tape :wq et entrée.
      (w pour write et q pour quit)

      tu peux obtenir d’autres informations sur l’utilisation de vim en tapant

      man vim

      En espérant t’avoir aidé.

    3. Bonsoir,

      Heu moi le soucis vient qu’à la fin vous dites :

      Copiez ceci dans un fichier nomé “lanceur.sh” dans votre dossier “bin” (celui qui contient realmd et mangosd) puis tapez

      Je n’ai aucun dossier bin après avoir suivit le tutorial à la lettre.

    4. étonnant, ils on peut etre changé la structure depuis, fait donc un recherche sur ton disque pour voir ou se trouvent les binaires. Pour ça:

      # find / -name realmd
      et
      # find / -name mangosd

      (normelement ils se trouvent dans le même répertoire. Des que tu as trouvé ce répertoire, place le script dans ce même dossier.

    5. Salut,

      J’ai un problème au niveau de # cd src/bindings/scriptdev2
      # make
      # make install
      Lorsque j’écris make, sa me marque exemple: Makefile:387: .deps/system.Plo: Aucun fichier ou dossier de ce type, après sa me marque à la fin: make: *** Pas de règle pour fabriquer la cible « .deps/system.Plo ». Arrêt. Pouvez vous m’aider svp? Merci

    6. étonnant.. avant de m’avancer que quoi que ce soit, je te conseillerais de repartir a zéro, re-télécharger le svn.. peut être une erreur de transfert ?

      Vérifie aussi que tu as bien conserver la structure donnée: /home/wowsvr/mangos (ou de modifier ton ./configure ..

    7. J’ai réussi à le régler tout seul

    8. Merci quand meme

    9. Peut être pourrais tu expliquer -si tu remet les pieds un jours ici – d’où venais ton problème ? Comme ça, si d’autres personnes sont exposés au même soucis, ton expérience pourrais leurs être très utile ;)

    10. Mon problème était lorque j’écrivais make à # cd src/bindings/scriptdev2 . J’ai recommencer au niveau de # vim configure.ac et j’ai vu que vim n’avait pas sauvegarder et j’ai aussi réalisé que j’avais mal configuré ici: src/bindings/Makefile
      src/bindings/universal/Makefile
      Et
      )]
      Ajoutez:
      src/bindings/scriptdev2/Makefile
      src/bindings/scriptdev2/sql/Makefile
      src/bindings/scriptdev2/sql/Updates/Makefile

      J’avais fait : src/bindings/Makefile
      src/bindings/scriptdev2/Makefile
      src/bindings/scriptdev2/sql/Makefile
      src/bindings/scriptdev2/sql/Updates/Makefile
      src/bindings/universal/Makefile
      )]
      Après j’ai fait : src/bindings/Makefile
      src/bindings/scriptdev2/Makefile
      src/bindings/universal/Makefile
      src/bindings/scriptdev2/sql/Makefile
      src/bindings/scriptdev2/sql/Updates/Makefile)]
      Après cela sa remarché

      J’espère avoir aider quelqu’un :)

    11. J’aimerai te dire que ton lien à l’installation de SQL : unifieddb.svn.sourceforge.net/svnroot/unifieddb/Full_DB/UDB_0.9.1_Core_5057_SD2_233.rar est mort. Je suis allé sur le site est la nouvelle DB est: http://unifieddb.svn.sourceforge.net/viewvc/unifieddb/Full_DB/UDB_0.10.1_Core_5712_SD2_350.rar

    12. Il y a un problème dans l’installation de SQL : https://unifieddb.svn.sourceforge.net/svnroot/unifieddb/Full_DB/UDB_0.9.1_Core_5057_SD2_233.rar . Il ne marche pas. J’ai fait une recherche et j’ai vu que c’était, maintenant, http://unifieddb.svn.sourceforge.net/viewvc/unifieddb/Full_DB/UDB_0.10.1_Core_5712_SD2_350.rar . J’espère ne mettre pas trompé :)

    13. Merci, je rectifie dans l’article ;)

    14. Bonjour,

      J’ai un nouveau problème, je suis rendu ici \.create_mysql.sql dans SQL puis quand je fais \.create_mysql.sql
      sa me dit : bash: .create_mysql.sql : commande introuvable. Pouvez-vous m’aider merci

    15. Autant pour moi, une coquille s’est glissée dans le tutoriel.. il faut en fait taper:
      \. create_mysql.sql

      syntaxe mysql:
      \. nom_du_fichier_sql_a_exécuter.sql

    16. Bonjour. J’ai un problème lors de l’utilisation du autoreconf –install –force. le terminal me répond => autoreconf: ‘configure.ac’ or ‘configure.in’ is required

      Quelqu’un a une idée ? Merci

    17. désolé, question stupide et résolue XD Encore désolé et merci pour le seul tuto WoW/debian compréhensible du web

    18. Ah si ! petite erreur. Avec l’actuelle MySQL, à cet endroit :

      - Vous pouvez encore vous resservir un café :)
      > use realmd
      > UPDATE realmlist SET `name` = ‘LeNomDuSvr’;

      il faut en fait taper :

      - Vous pouvez encore vous resservir un café :)
      > use realmd
      > UPDATE realmlist SET name = ‘LeNomDuSvr’;

    19. merci, je rectifie ça de suite ;)

    20. pfff je suis sur kubuntu ca le fait aussi?
      tu fais tout en ligne de code y a pas plus simple ? je viens de d arriver de windaube ca fait 2 semaine sur linux (he kel bonheur)et les lignes de code me font un peut peur j aime bien remplir des ptit cases ^^
      aurais tu un pti tuto plus windobien?
      merci d avance

    21. Kubuntu, ça le fait aussi ;)
      Par contre pour faire plus simple… oublie de suite cette solution si elle te parais trop compliquée… tu va t’énerver dessus et perdre ton temps. Je pense que tu devrais trouver des tutos pour windows sur internet, je n’ai pas de windows chez moi donc je ne pourrais malheureusement pas t’aider, désolé :)

    22. bonjour bon le tuto bien si on veux manque les depos des bas msql que trouverer ici https://unifieddb.svn.sourceforge.net/svnroot/unifieddb/tags/

      bon jai un petit soucie dans votre tuto vous dite ceci # Autres fichiers

      Copiez les fichiers ‘Maps’, ‘vMAps’ et ‘DBC’ et votre serveur est prêt a être lancé ! Bon allez, puisque vous êtes gentils je vais même vous fournir un script qui vous permettra de lancer le serveur: preciser a quel endroit maitre ses fichier

    23. Les fichiers Maps, vMaps et DBC doivents être placé a la racine du dossier de mangos.

      Attention à respecter les Majuscules.. linux étant case-sensitive :)

    24. je ne demande pas un tuto windaube ca y en as plein, mais un tuto pour kubuntu avec beaucoup moins de ligne de commande plus axe windows (remplir des ptites case lol)
      merci d avance

    25. Malheureusement, là je ne peut rien pour toi ;)

    26. bon c po grave je vais essayer avec les lignes de code souhaitez moi bonne chance :p

    27. Bonjour ,

      J’ai un petit problème avec cette commande : autoreconf –install –force , lorsque je l’écrit je reçoit cette erreur : configure.ac:35: error: possibly undefined macro: AC_PROG_LIBTOOL
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation.
      J’ai déjà essayé de recommencer l’installation mais rien a faire =/ .
      Merci d’avances pour vos réponses =)

    28. Apparement j’ai le même problême que exphoenix …

      laurent@laurent-desktop:~/sources/mangos/trunk$ autoreconf –install –force
      configure.ac:35: error: possibly undefined macro: AC_PROG_LIBTOOL
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation.
      autoreconf: /usr/bin/autoconf failed with exit status: 1
      laurent@laurent-desktop:~/sources/mangos/trunk$

    29. J’ai trouver la solution tout seul comme un grand il fallait installer libtool .

    30. Merci pour lui :)

    31. Merci à toi =)

    32. configure.ac:4752: warning: AC_DEFINE: not an identifier:
      configure.ac:4752: the top level
      configure.ac:4783: warning: AC_DEFINE: not an identifier:
      configure.ac:4783: the top level
      autoheader: warning: missing template:
      autoheader: Use AC_DEFINE([], [], [Description])
      autoreconf: /usr/bin/autoheader failed with exit status: 1
      root@xxxxxx:/home/wowsvr/mangos/trunk#

      voilà ce qui est marqué lorsque je fais un
      # autoreconf –install –force

      et au final, après le gros paquet que tu nous donne à faire (c'est à dire ça :)

      # autoreconf –install –force

      # autoconf

      # automake src/bindings/scriptdev2/Makefile

      # automake src/bindings/scriptdev2/sql/Makefile

      # automake src/bindings/scriptdev2/sql/Updates/Makefile

      # ./configure –prefix=/home/wowsvr/mangos –sysconfdir=/home/wowsvr/mangos/etc –with-python –enable-cli –enable-ra –datadir=/home/wowsvr/mangos

      ça ne fonctionne pas, j'ai une erreur sur le ./configure… et je pense que ça vient de ce que je t'ai copié/coller plus haut

    33. salut*
      ce tuto est a quelle version client la 3.0.3 la 2.4.3
      ou esque on peux maitre ce tuto a la dernier version de wow a la 3.3.0 parce que j ao vmaps et maps et dbc en 3.3.0 mais pour mangos
      enfait j aimeuré bien faire mon serveur wow en 3.3.0 sous linux

    34. salut*
      on peux maitre ce tuto a la 3.3.0 parce que j ai les mise a jour 3.3.0 j ai vmpas et maps et dbc en 3.3.0 mais j ai pas le core en 3.3.0 sous linux

    35. Bonsoir,

      Je vous contact déjà pour dire, merci pour ce tuto. Je suis en trein d'essayer d'installer le serv mais aux niveaux de la deuxième compilation, c'est a dire ici :
      # cd src/bindings/scriptdev2
      # make
      # make install

      J'ai du pour information créer ce répertoire : "objdir" autrement lors de la première compilation sa planter. Quand je fait la deuxième compilation sa me met sa :
      "../../../src/tools/genrevision/genrevision ../../../../src/bindings/scriptdev2
      make: ../../../src/tools/genrevision/genrevision : commande introuvable
      make: *** [revision.h] Erreur 127"

      Quelqu'un aurait-il une idée ?
      Merci d'avance.

      Cordialement

    36. Bonjour, avec des collègues on a créer le serv est on sur le net no souci, par contre on cherche des scripts pour mettre a jour les dj et raids, est ce ke vous pouvez m'aider svp?

    37. Bonjour,j'ai un problème avec la compilation.Je ne suis pas très fort dans ce domaine là donc j'ai besoin d'aide…
      je tape make (en étant loggé en root) et ça me donne sa:
      make: *** Pas de cibles spécifiées et aucun makefile n'a été trouvé. Arrêt.
      j'ai vérifié le fichier configure.ac il contient bien les bons truc
      aurais-je mal configuré quelque chose?

    38. Merci pour ce très bon tuto.
      Cependant j'ai également eu le même problème que Tony:

      Please configure and build in a directory other than the
      top-level source directory. This is needed because a lot
      of maintainers tend to break parallel build trees
      (a.k.a. VPATH builds). This is kinda real ensurance they
      will not do it (by enforcing everybody to do VPATH builds).

      For example, try the following from the top-level source
      directory:

      mkdir objdir
      cd objdir
      ../configure
      make

      This will create a build space in the directory `objdir' and
      start a build in that directory.

      If however you realy want to disable this error,
      use –enable-maintainer-mode switch.

      J'ai du créer un dossier pour séparer la config et la compilation du dossier source.

      Scriptdev2 ne veut pas non plus se compiler…

    39. Bonjour, moi je me retrouve avec cette erreur lors du ./configure … quelqu'un saurait comment je peux m'y prendre ?

      lbbam:/home/wowsvr/mangos/trunk# ./configure –prefix=/home/wowsvr/mangos –sysconfdir=/home/wowsvr/mangos/etc –with-python –enable-cli –enable-ra –datadir=/home/wowsvr/mangos
      checking for a BSD-compatible install… /usr/bin/install -c
      checking whether build environment is sane… yes
      checking for a thread-safe mkdir -p… /bin/mkdir -p
      checking for gawk… no
      checking for mawk… mawk
      checking whether make sets $(MAKE)… yes
      checking how to create a pax tar archive… gnutar
      checking whether to enable maintainer-specific portions of Makefiles… no

    40. suite :

      configure: error:
      Please configure and build in a directory other than the
      top-level source directory. This is needed because a lot
      of maintainers tend to break parallel build trees
      (a.k.a. VPATH builds). This is kinda real ensurance they
      will not do it (by enforcing everybody to do VPATH builds).

      For example, try the following from the top-level source
      directory:

      mkdir objdir
      cd objdir
      ../configure
      make

      This will create a build space in the directory `objdir' and
      start a build in that directory.

      If however you realy want to disable this error,
      use –enable-maintainer-mode switch.

      • C'est ce que j'ai expliqué plus haut. Il faut creer un dossier et procéder comme suite :

        mkdir objdir
        cd objdir
        ../configure –prefix=/home/wowsvr/mangos –sysconfdir=/home/wowsvr/mangos/etc –with-python –enable-cli –enable-ra –datadir=/home/wowsvr/mangos
        make

    41. ormi que la moitier des telechargement indiquer ne marche pas :P c bien expliquer j'ai passer toute la nuit a chercher comment créer un serveur privé mais les maps et les pack ne marche pas son introuvable sur tous les sites indiquer :( je ne pourrai jamais crée mon serv

    Leave a comment: