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}}