Outils du site

fr:trace_d_installation_du_serveur_de_jeu
Cette page n'est pas tagué correctement.

Cette vieille doc est obsolète

Trace d'installation du serveur de jeu

Je recommence à zéro ici

Installation des dépendances

D'abord, on ajoute le dépôt de Kervala :

root@vps155841:~# sudo add-apt-repository ppa:kervala/ppa && sudo apt-get update 
sudo: add-apt-repository: command not found

C'est mal parti !

Je vais pour commencer par configurer l'authentification sur l'annuaire LDAP. Ensuite je verrai plus précisément comment configurer les dépôts.

Contenu actuel de sources.list :

deb http://archive.ubuntu.com/ubuntu/ trusty main restricted universe
deb http://archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe
deb http://security.ubuntu.com/ubuntu trusty-security main restricted universe

Annuaire LDAP

1 - installation de slapd pour faire un réplicat esclave local, ce qui permettra d’être plus autonome tout en restant synchronisé. Dans un premier temps, on va interroger directement l'annuaire distant, il faut donc ajouter une connexion sécurisée entre les serveurs, qui sera de toute façon nécessaire dans tous les cas.

apt-get update
apt-get install slapd ldap-utils 

Configuration des outils ldap :

root@vps155841:~# cat /etc/ldap/ldap.conf 
#
# LDAP Defaults
#

# See ldap.conf(5) for details
# This file should be world readable but not world writable.

#BASE	dc=example,dc=com
#URI	ldap://ldap.example.com ldap://ldap-master.example.com:666
BASE    dc=khaganat,dc=net
URI     ldaps://khaganat.net


#SIZELIMIT	12
#TIMELIMIT	15
#DEREF		never

# TLS certificates (needed for GnuTLS)
TLS_CACERT	/etc/ssl/certs/ca-certificates.crt

Configuration de TLS : sur le serveur khaganat.net, modification de /etc/defaults/slapd, et redémarrage.

SLAPD_SERVICES="ldap://127.0.0.1:389/ ldapi:/// ldaps:///"

Test avec ldapsearch -D “cn=admin,dc=khaganat,dc=net” -W : erreur

Essai pour réutiliser les certificats gandi.

Fichier ldap-tls-config.ldif :

dn: cn=config
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/certs/GandiStandardSSLCA2.pem
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/certs/khaganat.net.crt
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/private/khaganat.net.key
ldapmodify -QY EXTERNAL -H ldapi:/// -f ldap-tls-config.ldif

Le serveur slapd ne se lance plus.

Configuration de la réplication

Test de compilation

apt-get install mercurial
adduser compil
adduser compil sudo
su - compil

dépendances

J'installe les dépendances d'après le tuto atlassian, en enlevant libwww :

compil@vps155841:~$ 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 libmysqlclient15-dev bison libxmu-dev autoconf automake libsquish-dev libcpptest-dev
[sudo] password for compil: 
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Note, selecting 'libmysqlclient-dev' instead of 'libmysqlclient15-dev'
E: Impossible de trouver le paquet libsquish-dev
compil@vps155841:~$ 

Après suppression de libsquish-dev, ça passe, il faut donc ajouter le depot kervala.

compil@vps155841:~$ cat /etc/apt/sources.list.d/kervala.list
deb http://ppa.launchpad.net/kervala/ppa/ubuntu trusty main
compil@vps155841:~$ gpg  --recv-keys 9C2306555E354EB2
compil@vps155841:~$ gpg --export --armor 5E354EB2 |sudo apt-key add - 
OK
compil@vps155841:~$ sudo apt-get update
...
compil@vps155841:~$ 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 libmysqlclient15-dev bison libxmu-dev autoconf automake libsquish-dev libcpptest-dev

libsquish-dev n'est pas trouvé, on le compliera à la main

compil@vps155841:~$ 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 libmysqlclient15-dev bison libxmu-dev autoconf automake libcpptest-dev
...
Après cette opération, 306 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer ? [O/n] 
...

Récupération des sources

compil@vps155841:~$ hg clone http://depots.khaganat.net/scm/hg/khaganat
destination directory: khaganat
requesting all changes
adding changesets
adding manifests
adding file changes
added 6264 changesets with 61202 changes to 26592 files (+26 heads)
updating to branch default
13345 files updated, 0 files merged, 0 files removed, 0 files unresolved
compil@vps155841:~$ hg clone http://hg.kervala.net/packaging
destination directory: packaging
requesting all changes
adding changesets
adding manifests
adding file changes
added 593 changesets with 30783 changes to 24125 files
updating to branch default
22211 files updated, 0 files merged, 0 files removed, 0 files unresolved

Compilation

compil@vps155841:~$ export RYHOME=$(pwd)/khaganat/code
compil@vps155841:~$ mkdir $RYHOME/build && cd $RYHOME/build
compil@vps155841:~/khaganat/code/build$ 

cmake me demande libwww. (ligne cmake : cmake -DWITH_NEL_TESTS=OFF -DWITH_RYZOM_SERVER=ON -DWITH_QT=OFF -DWITH_RYZOM_CLIENT=OFF -DWITH_RYZOM_TOOLS=ON -DWITH_STATIC=ON -DWITH_DRIVER_OPENGL=OFF -DWITH_DRIVER_OPENAL=OFF ..) On teste develop

Pour avoir les symboles de débugage pour gdb, penser à ajouter : -DWITH_SYMBOLS=ON

J'ai retrouvé la ligne cmake de Liria pour ma VM : cmake -DWITH_NEL_TESTS=OFF -DWITH_RYZOM_CLIENT=OFF -DWITH_STATIC=ON -DWITH_DRIVER_OPENGL=OFF -DWITH_DRIVER_OPENAL=OFF -DWITH_NEL=ON -DWITH_SOUND=OFF -DWITH_STATIC_DRIVERS=ON -DWITH_NEL_SAMPLES=OFF
Yann K 2015/12/06 16:08

compil@vps155841:~/khaganat$ hg checkout develop
77 files updated, 0 files merged, 3 files removed, 0 files unresolved
compil@vps155841:~/khaganat$ cd $RYHOME/build
compil@vps155841:~/khaganat/code/build$ cmake -DWITH_NEL_TESTS=OFF  -DWITH_RYZOM_SERVER=ON -DWITH_QT=OFF -DWITH_RYZOM_CLIENT=OFF -DWITH_RYZOM_TOOLS=ON -DWITH_STATIC=ON -DWITH_DRIVER_OPENGL=OFF -DWITH_DRIVER_OPENAL=OFF ..
-- DEBUG size_t is 8
-- DEBUG off_t is 8
-- Boost version: 1.54.0
-- Luabind is using Lua 5.2
-- Found Lua52: /usr/lib/x86_64-linux-gnu/liblua5.2.so;/usr/lib/x86_64-linux-gnu/libm.so  
-- Found Luabind: /usr/lib/libluabind.so
-- Found CURL: /usr/lib/x86_64-linux-gnu/libcurl.so (found version "7.35.0") 
-- Found FreeType: /usr/lib/x86_64-linux-gnu/libfreetype.so
-- Found Ogg: /usr/lib/x86_64-linux-gnu/libogg.so
-- Found Vorbis: /usr/lib/x86_64-linux-gnu/libvorbis.so
-- Warning: Unable to find Squish!
-- Found OpenSSL: /usr/lib/x86_64-linux-gnu/libssl.so;/usr/lib/x86_64-linux-gnu/libcrypto.so (found version "1.0.1f") 
-- Found MySQL: /usr/include/mysql, /usr/lib/x86_64-linux-gnu/libmysqlclient.so;/usr/lib/x86_64-linux-gnu/libssl.so;/usr/lib/x86_64-linux-gnu/libcrypto.so
-- Configuring done
-- Generating done
-- Build files have been written to: /home/compil/khaganat/code/build
compil@vps155841:~/khaganat/code/build$ make -j5
...
c++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-4.8/README.Bugs> for instructions.
make[2]: *** [nel/src/gui/CMakeFiles/nelgui.dir/lua_ihm.cpp.o] Error 4
make[2]: *** Waiting for unfinished jobs....
Scanning dependencies of target shapes_exporter
compil@vps155841:~/khaganat/code/build$ make -j5
...

Après plusieurs plantages de ce genre de la compilation, j'essaie avec l'option -j3, puis -j1 La compilation pregresse mais fait toujours des erreurs. Erreur finale :

collect2: error: ld returned 1 exit status
make[2]: *** [bin/ryzom_shard_unifier_service] Error 1
make[1]: *** [ryzom/server/src/shard_unifier_service/CMakeFiles/ryzom_shard_unifier_service.dir/all] Error 2
make: *** [all] Error 2

On essaie de nouveau

compil@vps155841:~/khaganat/code/build$ make clean
compil@vps155841:~/khaganat/code/build$ make -j1
...
[ 27%] Building CXX object nel/src/gui/CMakeFiles/nelgui.dir/lua_ihm.cpp.o
{standard input}: Assembler messages:
{standard input}:992: Warning: end of file not at end of a line; newline inserted
c++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-4.8/README.Bugs> for instructions.
make[2]: *** [nel/src/gui/CMakeFiles/nelgui.dir/lua_ihm.cpp.o] Error 4
make[1]: *** [nel/src/gui/CMakeFiles/nelgui.dir/all] Error 2
make: *** [all] Error 2
compil@vps155841:~/khaganat/code/build$ df -h
Filesystem         Size  Used Avail Use% Mounted on
/dev/ploop14585p1   11G  2,6G  7,7G  26% /
none               4,0K     0  4,0K   0% /sys/fs/cgroup
none               103M   72K  103M   1% /run
none               512M     0  512M   0% /dev/shm
none               5,0M     0  5,0M   0% /run/lock
none               512M     0  512M   0% /run/shm
none               100M     0  100M   0% /run/user

Ajout de -DFINAL_VERSION=ON -DCMAKE_INSTALL_PREFIX:PATH=/home/compil/ryzomserver/ au cmake.

L'erreur se fait sur nelgui.dir, peu avant on a cette ligne : [ 26%] Building CXX object nel/src/gui/CMakeFiles/nelgui.dir/libwww_types.cpp.o qui s'exécute correctement.

Je reprends la branche default et compile libwww

compil@vps155841:~/khaganat$ hg checkout default
cd ..
compil@vps155841:~$ hg clone http://hg.kervala.net/libwww
compil@vps155841:~$ cd libwww/
compil@vps155841:~/libwww$ ./autogen.sh
...
compil@vps155841:~/libwww$ ./configure --with-ssl=no --with-zlib --with-expat --with-gnu-ld --enable-shared
...
compil@vps155841:~/libwww$ make
...
compil@vps155841:~/libwww$ sudo make install
...
compil@vps155841:~$ cd $RYHOME/build
compil@vps155841:~/khaganat/code/build$ 

Et tant qu 'a y être cpptest aussi

Shepeng> j'ai complié squish, me demande pas pourquoi ça marche alors qu'avant non
<deed> ok
<Shepeng> hg clone http://hg.kervala.net/cmake
<deed> je ferai un post sur le forum avec tout se que j'ai trouvé si tu as encore des erreur
<Shepeng> hg clone http://hg.kervala.net/squish
<Shepeng> export CMAKE_MODULE_PATH=$(pwd)/cmake/modules
<Shepeng> cd squish/
<Shepeng> mkdir build
<Shepeng> cd build
<Shepeng> cmake ..
<Shepeng> make
<Shepeng> ensuite passe root etmake install
<Shepeng> et je retente la compil du serveur

Mais j'ai la même erreur

test avec l'option kua 5.1 OFF : compil@vps155841:~/khaganat/code/build$ cmake -DWITH_NEL=ON -DWITH_RYZOM_SERVER=ON -DWITH_STATIC=ON -DWITH_STATIC_DRIVERS=ON -DWITH_RYZOM_CLIENT=OFF -DWITH_DRIVER_OPENGL=OFF -DWITH_DRIVER_OPENAL=OFF -DWITH_SOUND=OFF -DWITH_NEL_TOOLS=OFF -DWITH_RYZOM_TOOLS=OFF -DWITH_NEL_TESTS=OFF -DWITH_NEL_SAMPLES=OFF -DWITH_LUA51=OFF ..

ça passe !

Ma VM a été compilée avec les options :
cmake -DWITH_NEL_TESTS=OFF -DWITH_RYZOM_CLIENT=OFF -DWITH_NEL=ON -DWITH_SOUND=OFF -DWITH_STATIC=ON -DWITH_STATIC_DRIVERS=ON -DWITH_DRIVER_OPENGL=OFF -DWITH_DRIVER_OPENAL=OFF -DWITH_NEL_SAMPLES=OFF

Configuration

Je continue sur ce tuto : https://ryzomcore.atlassian.net/wiki/display/RC/Configure+Linux+Web+Services

 apt-get install apache2 php5 php5-mysql php5-gd rrdtool screen
 adduser compil www-data

Configuration apache :

<VirtualHost *:80>
        ServerName http://khanat.khaganat.net

        ServerAdmin webmaster@localhost
        DocumentRoot /home/compil/ryzomweb

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>
<VirtualHost *:40916>
        ServerName http://khanat.khaganat.net

        ServerAdmin webmaster@localhost
        DocumentRoot /home/compil/ryzomweb

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>
compil@vps155841:~$ cp -r khaganat/code/web/public_php/ ryzomweb/
compil@vps155841:~$ cp -r khaganat/code/web/private_php/ ryzomweb/
compil@vps155841:~$ chgrp www-data -R ryzomweb/

J'ai une erreur d'accès :

[Tue Aug 25 08:22:20.602092 2015] [authz_core:error] [pid 19350] [client 80.236.34.112:39932] AH01630: client denied by server configuration: /home/compil/ryzomweb/public_php/setup/index.php

Modification du fichier /etc/apache2/apache2.conf :

...
<Directory /home/compil/ryzomweb>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>
...
Installation par le web

A partir de l'url : http://khanat.khaganat.net/setup/install.php

apt-get install mysql-server

Creation de mdp pour root mysql et admin tool, setup et ams

manque mcrypt : apt-get install php5-mcrypt php5enmod mcrypt service apache2 restart

Pb de lancement du shardn essaie de résolution
hg clone http://depots.khaganat.net/scm/hg/khaganat-data
ln -s /home/compil/khaganat-data/leveldesign/ /home/compil/khaganat/code/ryzom/server/leveldesign
ln -s /home/compil/khaganat-data/primitives/ khaganat/code/ryzom/server/primitives
ln -s /home/compil/khaganat-data/sound khaganat/code/ryzom/server/sound
ln -s /home/compil/khaganat-data/common khaganat/code/ryzom/server/common
ln -s /home/compil/khaganat-data/continents/ khaganat/code/ryzom/server/continents
ln -s /home/compil/khaganat-data/translation/ khaganat/code/ryzom/server/translation
ln -s /home/compil/khaganat-data/workspace/ khaganat/code/ryzom/server/workspace
mkdir khaganat/code/ryzom/server/data_leveldesign
ln -s /home/compil/khaganat-data/leveldesign/ /home/compil/khaganat/code/ryzom/server/data_leveldesign/leveldesign
ln -s /home/compil/khaganat-data/collisions/ khaganat/code/ryzom/server/data_shard/collisions

modifié j'ai modifié ce fichier : $RYZOM_PATH/server/frontend_service.cfg remplacé l'adresse par khanat.khaganat.net dans la variable FSListenHost = “your.server.ip.adress”;

je triche :

for var in khaganat/code/ryzom/server/translation/translated/*_en.txt; do  nomfic=${var##*/}; ln -s $nomfic ${var%/*}/${nomfic/_en/_de}; done
for var in khaganat/code/ryzom/server/translation/translated/*_wk.txt; do  nomfic=${var##*/}; ln -s $nomfic ${var%/*}/${nomfic/_wk/_fr}; done
for var in khaganat/code/ryzom/server/translation/translated/*_en.txt; do  nomfic=${var##*/}; ln -s $nomfic ${var%/*}/${nomfic/_en/_es}; done
for var in khaganat/code/ryzom/server/translation/translated/*_en.txt; do  nomfic=${var##*/}; ln -s $nomfic ${var%/*}/${nomfic/_en/_ru}; done

Recompiler les données des datasheets

Il est possible qu'il y ait un souci avec le sheet_id.bin/visual_slot.tab et autres packed_sheets au départ auquel cas il faut les recréer (mais il faut avoir compilé les outils pour ça ) :

A priori sur notre serveur, les commandes à faire seront :

cd /home/compil/khaganat/code/build/bin
./make_sheet_id -o/home/compil/khaganat-data/leveldesign/game_elem/sheet_id.bin /home/compil/khaganat-data/leveldesign/game_elem /home/compil/khaganat-data/leveldesign/game_element /home/compil/khaganat-data/leveldesign/world /home/compil/khaganat-data/leveldesign/ecosystems

L'idée est d'indiquer toutes les datasheets utiles au système pour qu'il les numérote en lui donnant la liste de tous les répertoires dans leveldesign où il y en a (sauf celui de définition) et le -o, c'est pour indiquer de créer ce fichier dans le répertoire game_elem du dossier leveldesign

Il faut également effacer des fichiers que nous allons regénérer :

rm -f /home/compil/khaganat/code/ryzom/server/data_shard/*.packed_sheets
rm -f /home/compil/khaganat/code/ryzom/common/data_common/visual_slot.tab

Il faut ensuite relancer le sheet_packer, configurant d'abord son fichier de config :

cd /home/compil/khaganat/code/ryzom/tools/sheets_packer
nano sheets_packer.cfg

et s'assurer que les chemins sont bons, avec les changements de noms de dépôt etc.. Pour nous j'en suis arrivé à :

/////////////////////////////////
/////////////////////////////////
/// SHEETS PACKER CONFIG FILE ///
/////////////////////////////////
/////////////////////////////////
DataPath = { "../../common/data_leveldesign", "../../common/data_common", "../../client/data", "../../../../../khaganat-data/common", "../../../../../khaganat-data/leveldesign", "../../../../../khaganat-data/primitives" };
WorldSheet = "ryzom.world";
PrimitivesPath = "../../../../../khaganat-data/primitives";
OutputDataPath = "../../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 :

/home/compil/khaganat/code/build/bin/sheets_packer

Puis copier le visual_slot.tab à sa place

cp visual_slot.tab /home/compil/khaganat/code/ryzom/common/data_common/visual_slot.tab

Si je me souviens bien, les *.packed_sheets sont regénérés tout seul au redémarrage du serveur s'ils sont absents (ce qui est le cas vu qu'on vient de les effacer). Il faut donc attendre qu'il soit lancé pour pouvoir les récupérer et les copier dans son client (cf. ci-dessous).

Attention : il faudra fournir à son client (dans son user) :

  • Les fichiers *.packed_sheets de /home/compil/khaganat/code/ryzom/server/data_shard/
  • Le fichier visual_slot.tab dans /home/compil/khaganat/code/ryzom/common/data_common/
  • Le fichier sheet_id.bin dans /home/compil/khaganat/code/ryzom/common/data_leveldesign/leveldesign/Game_elem/
khaganat/code/ryzom/common
khaganat/code/ryzom/tools/scrips/linux
khaganat/code/ryzom/server
khaganat/code/build/bin/ryzom_*_service

khaganat-data/leveldesign/   khaganat/code/ryzom/common/data-leveldesign/leveldesign
khaganat-data/primitives/    khaganat/code/ryzom/common/data-leveldesign/primitives
khaganat-data/sound          khaganat/code/ryzom/server/sound
khaganat-data/common         khaganat/code/ryzom/server/common
khaganat-data/continents/    khaganat/code/ryzom/server/continents
khaganat-data/translation/   khaganat/code/ryzom/server/translation
khaganat-data/workspace/     khaganat/code/ryzom/server/workspace
khaganat-data/collisions/    khaganat/code/ryzom/server/data_shard/collisions

Pour réduire les erreurs dans les logs de lancement d'AIS qui pose apparemment souci, j'ai supprimé tous les liens symboliques vers le contenu de khaganat-data qu'il y avait directement dans /khaganat/code/ryzom/server ainsi que les répertoires /src et /patchman_cfg qui s'y trouvaient et /dataleveldesign qui contenait un autre renvoi vers khaganat-data/leveldesign.

J'ai conservé le contenu des deux répertoires effacés dans /home/compil/stockage_temp. Il suffit de redéplacer son contenu vers /home/compil/khaganat/code/ryzom/server si besoin
Yann K 2015/11/08 15:42

Pour verifier, que le shard marche sans client:

http://khanat.khaganat.net:40916/login/r2_login.php?cmd=login&login=******&password=******&clientApplication=ryzom_open
fr/trace_d_installation_du_serveur_de_jeu.txt · Dernière modification: 2016/12/26 10:33 par Shepeng