Voir plutôt : https://khaganat.net/wikhan/fr:shard (Shepeng) Je suis en train de compiler/config mon serveur en local, et j'aimerai bien refaire le tuto de manière plus générique/adaptable. Et aussi simplifier certaine chose (qui au passage devrai le rendre plus lisible. Ainsi que créer quelque script pour l'automatiser plus facilement. Je fait donc cette page temporaire afin de pouvoir modifier le tuto sans toucher a l'original qu'il est préférable de continuer a suivre. Mais si je fait ca a la fin de ems expérimentation je risque d'oublier des chose. Scoui ====== Installation du shard ====== Le shard désigne une instance du serveur de jeu basé sur le système Ryzom Core. Ce tutoriel a été établi à partir des notes issues du wiki de RC((Pour info : [[https://ryzomcore.atlassian.net/wiki|page ryzomcore originale]])). Il reste à détailler le déploiement d'AMS (Account Management System) Avant toute chose, assurez-vous d'avoir une base bien configurée : [[fr:1eres_etapes_serveur]] L'installation du shard se fait sous Linux, avec un utilisateur dédié, que nous nommerons ici "compil" : adduser compil adduser compil sudo su - compil =====Installation des packages et des sources===== Des essais ont été faits sur: * [[http://releases.ubuntu.com/15.04/|Ubuntu 15.04]] * [[https://wiki.debian.org/fr/DebianWheezy|Debian 7]] * [[https://wiki.debian.org/fr/DebianJessie|Debian 8]] * Windows (tuto non fini) ====Mise à jours des informations et packages pour linux:==== sudo apt-get update sudo apt-get dist-upgrade **À ce point si le kernel est mis à jour , vous devez redémarrer:** reboot **Vous avez besoin d'installer des outils et libs pour compiler et démarrer le serveur(le MySQL root mot de passe Root MySQL doit être mis et servira plus tard à se connecter à phpmyadmin).** => Installez les paquets de [[fr:lamp|LAMP]] : apt-get install apache2 php5 mysql-server libapache2-mod-php5 php5-mysql apache2-utils php5-gd php5-imagick ===Ubuntu=== sudo apt-get install mercurial libcurl4-openssl-dev libluabind-dev libfreetype6-dev libx11-dev libgl1-mesa-dev libxxf86vm-dev libxrandr-dev libxrender-dev libopenal-dev libogg-dev libvorbis-dev libxml2-dev cmake build-essential libpng12-dev libjpeg62-dev rrdtool libmysqlclient18-dev bison libxmu-dev autoconf automake libcpptest-dev libgif-dev cpputest libssl-dev ===Debian 7=== sudo apt-get install mercurial libcurl4-openssl-dev libluabind-dev libfreetype6-dev libx11-dev libgl1-mesa-dev libxxf86vm-dev libxrandr-dev libxrender-dev libopenal-dev libogg-dev libvorbis-dev libxml2-dev cmake build-essential libpng12-dev libjpeg62-dev rrdtool bison libxmu-dev autoconf automake libmysqlclient-dev libgif-dev libgif-dev cpputest libssl-dev ===Debian 8=== sudo apt-get install mercurial libcurl4-openssl-dev libluabind-dev libfreetype6-dev libx11-dev libgl1-mesa-dev libxxf86vm-dev libxrandr-dev libxrender-dev libopenal-dev libogg-dev libvorbis-dev libxml2-dev cmake build-essential libpng12-dev libjpeg62-turbo-dev rrdtool bison libxmu-dev autoconf automake libmysqlclient-dev libgif-dev libgif-dev cpputest libssl-dev ===Installer Squish=== wget -c https://libsquish.googlecode.com/files/squish-1.11.zip unzip squish-1.11.zip cd squish-1.11 **Important: le code source de la librairie « squish » ne compile pas avec les dernières versions de gcc. Il faut apporter une correction mineur avant de lancer cette compilation :**\\ Dans « alpha.cpp » (ligne 24) et « singlecolourfit.cpp » (ligne 26), il faut ajouter : #include Puis compiler: make sudo make install ====Pour Windows :==== Installer dans l'ordre DirectX SDK puis Visual c++ *[[http://www.7-zip.org/|7-Zip]] *[[http://www.microsoft.com/en-us/download/details.aspx?id=6812|Installer le DirectX SDK]] *[[http://download.microsoft.com/download/1/E/5/1E5F1C0A-0D5B-426A-A603-1798B951DDAE/VS2010Express1.iso|Installer le Visual c++ 2010]] *[[http://tortoisehg.bitbucket.org/|Tortoise Hg]] *[[https://cmake.org/download/|CMake]] *[[http://download.qt-project.org/official_releases/qt/4.8/4.8.6/qt-opensource-windows-x86-vs2010-4.8.6.exe|Qt 4.8.6 pour VC++ 2010]] ====Téléchargement ryzom source code et data:==== hg clone http://depots.khaganat.net/scm/hg/khaganat cd khaganat hg checkout develop hg clone http://depots.khaganat.net/scm/hg/khaganat-data Pour windows en plus :\\ Télécharger *[[http://sourceforge.net/projects/ryzom/files/external_vc10.7z/download|External_vc10]] +-- code | | | +-- nel | | | +-- ryzom | | | +-- ... | +-- external =====Build Ryzom OpenShard serveur===== ====créer un fichier avec les variables pour linux==== Pour un script permanent:\\ (remplacer dans les lignes qui suivent $1 par le nom du serveur par exemple khaganat ou ryzomecore le même nom que le dépôt ou le répertoire ou il sera cloner) nano /home/compil/.bashrc Pour un script à lancer à chaque session:\\ ( Cela permet de changer de server si, pour des test par exemple, vous êtes succeptible d'en build plusieurs nano init.sh Variable à mettre dans votre script: export SERVER_NAME=$1 # Modifier ses valeur en fonction de votre configuration. export BASE_PATH=/compil/build/$SERVER_NAME export DATA_PATH=$BASE_PATH-data export BUILD_PATH=$BASE_PATH/build # Laisser cette variable vide pour installer dans le rep par défaut ( à la racine / ) export INSTALL_PATH=$BUILD_PATH/install export CODE_PATH=$BASE_PATH/code export GAME_PATH=$CODE_PATH/ryzom export PATH=$PATH:$GAME_PATH/tools/scripts/linux Lancer le script de cette façon:\\ ( Remplacer serveur_name par le nom du serveur que vous compter configurer, par exemple khaganat ou ryzomcore) Attention le premier . est nécessaire afin que les variables soient exporter pour le bash en cours et non un bash temporaire qui ne durera que le temps d’exécuter le script. # Remplacer khaganat par le nom de votre serveur. . ./init.sh khaganat ====Configuration des option pour build seulement nel & server (En static: si CMakeOptions)==== mkdir $BUILD_PATH && cd $BUILD_PATH Ligne CMake : cmake $CODE_PATH -DCMAKE_INSTALL_PREFIX=$INSTALL_PATH -DWITH_NEL_TESTS=OFF -DWITH_RYZOM_CLIENT=OFF -DWITH_NEL=ON -DWITH_STATIC=ON -DWITH_STATIC_DRIVERS=ON -DWITH_DRIVER_OPENGL=OFF -DWITH_DRIVER_OPENAL=OFF -DWITH_NEL_SAMPLES=OFF -DWITH_SOUND=OFF Attention, il faut que le serveur soit compilé avec l'option: -DWITH_SYMBOLS=ON pour avoir les symboles de debug (voir [[fr:shard_debug]]) Options : Sans les outils : -DWITH_RYZOM_TOOLS=OFF ( vous en avez besoin pour le shard, pour faire le visual_slot.tab et le patch) -DWITH_NEL_TOOLS=OFF Pour Windows : Lancer Cmake : *Code source : C:/khaganat/code *Build les binaires : C:/khaganat/code/build *Configurer pour visual c++ 2010 *Configurer *Changer les options *Générer ===Build and install=== Pour linux : make -jX (X= nombres de coeur +1, si ça plante n'utiliser que "make") sudo make install Pour Windows : Lancer C:\ryzom\code\build\RyzomCore.sln qui a été généré en choisissant Visual C++ appuyez sur F7 pour compiler ====Liens symboliques pour que le système voit les data==== ln -s $DATA_PATH/collisions $GAME_PATH/server/ ln -s $DATA_PATH/leveldesign $GAME_PATH/server/ ln -s $DATA_PATH/primitives $GAME_PATH/server/ # A verifier ln -s $DATA_PATH/shard $GAME_PATH/server/data_shard ln -s $DATA_PATH/common $GAME_PATH/server/ ====Recompiler les données des datasheets==== ===Compiler sheet_id.bin=== cd $BUILD_PATH/bin ./make_sheet_id -o$DATA_PATH/leveldesign/game_elem/sheet_id.bin $DATA_PATH/leveldesign/game_elem $DATA_PATH/leveldesign/game_element $DATA_PATH/leveldesign/world $DATA_PATH/leveldesign/ecosystems $DATA_PATH/sound ===Compiler visual_slot.tab=== Tout d'abord, vérifier que les chemins vers le répertoire contenant les datasheets (''leveldesign''), les primitives (''primitives'') et les fichiers communs au serveur et au client (''common'') sont bons dans le fichier de configuration : verifier si je ne peux pas utiliser els vzariable exporter. cd $BUILD_PATH/bin cp sheets_packer $GAME_PATH/tools/sheets_packer/ cd $GAME_PATH/tools/sheets_packer nano sheets_packer.cfg État actuel de notre fichier sheets_packer.cfg : ///////////////////////////////// ///////////////////////////////// /// SHEETS PACKER CONFIG FILE /// ///////////////////////////////// ///////////////////////////////// DataPath = { "/home/build/ryzomcore/code/ryzom/common/data_leveldesign", "$GAME_PATH/common/data_common", "$GAME_PATH/client/data", "$DATA_PATH/common", "$DATA_PATH/leveldesign", "$DATA_PATH/primitives" }; WorldSheet = "ryzom.world"; PrimitivesPath = "$DATA_PATH/primitives"; OutputDataPath = "/home/build/ryzomcore/code/ryzom/client/data"; LigoPrimitiveClass = "world_editor_classes.xml"; Puis on peut lancer le sheets_packer, en restant bien dans le répertoire où on a ce fichier .cfg car les chemins sont relatifs : $BUILD_PATH/bin/sheets_packer Enfin, copier le visual_slot.tab à sa place cp visual_slot.tab $GAME_PATH/common/data_common/visual_slot.tab ===Ajouter les langages manquants=== Ceci est un bidouillage pour ajouter certains fichiers de traduction étrangement demandés par IOS. Il faudrait trouver comment supprimer ces appels for var in $DATA_PATH/translation/translated/*_en.txt; do nomfic=${var##*/}; ln -s $nomfic ${var%/*}/${nomfic/_en/_de}; done for var in $DATA_PATH/translation/translated/*_wk.txt; do nomfic=${var##*/}; ln -s $nomfic ${var%/*}/${nomfic/_wk/_fr}; done for var in $DATA_PATH/translation/translated/*_en.txt; do nomfic=${var##*/}; ln -s $nomfic ${var%/*}/${nomfic/_en/_es}; done for var in $DATA_PATH/translation/translated/*_wk.txt; do nomfic=${var##*/}; ln -s $nomfic ${var%/*}/${nomfic/_wk/_ru}; done =====Configurer serveur===== **Éditer différents fichiers pour trouver la configuration du serveur :** nano $GAME_PATH/server/frontend_service.cfg La ligne à éditer dans **frontend_service.cfg** est:\\ FSListenHost = "your.server.ip.adress";\\ Pour nous c'est : \\ FSListenHost = "khanat.khaganat.net";\\ nano $GAME_PATH/server/sql.cfg A éditer selon votre configuration: DBHost = "localhost"; DBNelName = "nel"; DBRingName = "ring_mini01"; // Nel DB user DBNelUser = "nel"; // Ring DB user DBRingUser = "ring"; // SU - password to access to the nel database with DBNelUseruser (default is no password) DBNelPass = "nel_pwd"; // SU - password to access to the ring database with DBRingUser (default is no password) DBRingPass = "ring_pwd"; // MySQL wrapper strict mode - controls use of asserts if SQL requests fail MSWStrictMode=0; Laisser en local. Créer un utilisateur "nel" qui a les droits sur sa base de donnée, et un utilisateur "ring", chacun avec son mot de passe. Remplir ''$RYZOM_PATH/server/sql.cfg'' avec ces informations. # Si le service mysql n'est pas démaré, le démarer. sudo service mysql start mysql -u root -p #entrer le mot de passe mysql lorsque demandé. # A revoir correctement mais je met ne serai-ce que pour avoir les commandes. CREATE USER 'nel'@'localhost' IDENTIFIED BY 'nel_pwd'; GRANT ALL PRIVILEGES ON *.* TO 'nel'@'localhost' WITH GRANT OPTION; CREATE USER 'ring'@'localhost' IDENTIFIED BY 'ring_pwd'; GRANT ALL PRIVILEGES ON *.* TO 'ring'@'localhost' WITH GRANT OPTION; =====Web-admin===== ====Installer les paquets du server web==== apt-get install apache2 php5 php5-mysql php5-gd rrdtool screen mcrypt php5-mcrypt # Attention utilisez bien le nom d'user qui correspond à votre config si jamais vous n'utiliser pas compil. adduser compil www-data ====Créer un dossier "ryzomweb" et copier dedans:==== # Libre à vous de le mettre ailleur # TODO ajouter la variable WEB_PATH aux export initiax. cd ~/ cp -r $CODE_PATH/web ryzomweb sudo chmod -R a+w ryzomweb sudo chown -R www-data:www-data ryzomweb ====Configurer Apache2 Web Server & MySQL Database==== nano /etc/apache2/sites-available/000-default.conf Options Indexes FollowSymLinks AllowOverride None Require all granted DirectoryIndex index.php AddType text/html .php .phps AddHandler application/x-httpd-php .php AddHandler application/x-httpd-php-source .phps ServerName khanat.khaganat.net ServerAdmin webmaster@localhost DocumentRoot /home/compil/ryzomweb/public_php/ ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined Options Indexes FollowSymLinks AllowOverride None Require all granted ServerName khanat.khaganat.net ServerAdmin admin@localhost DocumentRoot /home/compil/ryzomweb/public_php ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined Ouvrir le port 40916 (à confirmer que c'est nécessaire et suffisant). nano /etc/apache2/ports.conf Ajouter : LISTEN 40916 ===Redémarrer le service Apache=== service apache2 restart ===Installer le web-admin=== Allez à : ''http://VOTRE_ADRESSE_IP/setup'' Suivez les instructions. Si vous voulez gérer votre base MySQL, allez à : ''http://VOTRE_ADRESSE_IP/phpmyadmin'' Pour vous aidez à la remplir :\\ ''https://khaganat.net/wikhan/fr:shard_database'' Notes de travail : Une page générale sur tous les web services : https://ryzomcore.atlassian.net/wiki/display/RC/Web+Services+Installer+Design+Doc Pour installer les web services : https://ryzomcore.atlassian.net/wiki/display/RC/Configure+Linux+Web+Services --- Pour installer AMS : https://ryzomcore.atlassian.net/wiki/display/RC/Setup+the+AMS Documentation sur AMS : https://ryzomcore.atlassian.net/wiki/display/RC/Account+Management+System Détails sur AMS : https://ryzomcore.atlassian.net/wiki/display/RC/AMS+Design+Info Vidéos et explications de l'auteur de AMS : https://plus.google.com/116363537101759977044 --- Installation de l'API pour avoir des app : https://ryzomcore.atlassian.net/wiki/display/RC/Configuring+Ryzom+API WIki sur l'API : http://dev.ryzom.com/projects/ryzom-api/wiki L'installation du Serveur de Patchs est expliquée en détail sur une page dédiée : [[fr:Installation d'un serveur de patchs]] =====Démarrer the Shard===== **Pour allumer le shard:** Remplacer RYZOM_PATH par GAMEPATH sans les scripts suivant: nano $HOME/tools/scripts/linux/shard nano $HOME/tools/scripts/linux/make_all shard start **Pour naviguer et sortir de screen:** ctrl+a+n ( ou ctrl+a+ le chiffre du service) permets de naviguer entre les services Ctrl+a+d permet de sortir de screen Shard join permets de rejoindre un shard allumé shard share permets de rejoindre un shard allumé à plusieurs **Pour éteindre le shard:** shard stop ====Verifier que tous marche sans clients==== http://lirria.khaganat.net:40916/login/r2_login.php?cmd=login&login=sonlogin&password=mdp&clientApplication=Lirria sonlogin= votre user mdp= votre mots de passe ===== Bugs divers et résolutions ===== À ranger lors de la reprise de ce tuto... ==== Permettre l'accès à tous au serveur ==== Dans la base de donnée, dans neltool>neltools_shard, veiller à ce que shard_domain_id corresponde au shard_domain_id noté dans nel>domain. Je ne sais pas si ça a joué aussi, dans nel>shard, j'ai passé RequiredState en ds_open Redémarrer le shard pour que ce soit pris en compte. {{tag>informatique serveur shard tutoriel obsolète}}