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 RC1).
Il reste à détailler le déploiement d'AMS (Account Management System)
Avant toute chose, assurez-vous d'avoir une base bien configurée : Premières étapes dans la mise en place d'un 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:
- 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 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 <limits.h>
Puis compiler:
make sudo make install
Pour Windows :
Installer dans l'ordre DirectX SDK puis Visual c++
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
+-- 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 Déboguer le shard)
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
<VirtualHost *:80> <Directory "/home/compil/ryzomweb/"> 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 </Directory> 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 </VirtualHost> <VirtualHost *:40916> <Directory "/home/compil/ryzomweb/"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> 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 </VirtualHost>
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 : 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.