Game server installation trace
I'm starting from zero here ←- Does not exist!!
Installing dependencies
First, we add the deposit of Kervala:
Root@vps155841: ~ sudo add-apt-repository ppa:kervala/ppa && sudo apt-get update Sudo: add-apt-repository: command not found
It's wrong!
I'll start by setting up authentication on the LDAP directory. Then I'll see more precisely how to set up repositories.
Current content of 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
LDAP directory
1 - installation of slapd to make a local slave replicate, which will allow to be more autonomous while remaining synchronized. In a first step, we will directly query the remote directory, so we must add a secure connection between the servers, which will in any case be necessary in any case.
apt-get update apt-get install slapd ldap-utils
Configuration utilities 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 of TLS: on the server khaganat.net, modification of /etc/defaults/slapd, and restart.
SLAPD_SERVICES="ldap://127.0.0.1:389/ ldapi:/// ldaps:///"
Test with ldapsearch -D “cn=admin, dc=khaganat, dc=net” -W: error
Test to reuse gandi certificates.
Ldap-tls-config.ldif file:
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
The slapd server does not start anymore.
Configuring replication
Compilation Test
apt-get install mercurial adduser compil adduser compil sudo su - compil
dependencies
I install the dependencies after the atlassian tutorial, removing 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: Reading Package Lists... Done Building the dependency tree Reading status information... Done Note, select 'libmysqlclient-dev' instead of 'libmysqlclient15-dev' E: Unable to find the package libsquish-dev compil@vps155841:~$
After removing libsquish-dev, it passes, so we must add the 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 is not found, it will be complimented by hand.
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 ... After this, an additional 306 MB of disk space will be used. Would you like to continue ?[We] ...
Recovering sources
compil@vps155841:~$ hg clone http://depots.khaganat.net/scm/hg/khanat-code destination directory: khanat-code 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)/khanat-code/code compil@vps155841:~$ mkdir $RYHOME/build && cd $RYHOME/build compil@vps155841:~/khanat-code/code/build$
Cmake ask 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 ..) Still on test development.
To have the debug symbols for gdb, think about adding: -DWITH_SYMBOLS=ON
I found the line cmake of Liria for my 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:~/khanat$ hg checkout develop 77 files updated, 0 files merged, 3 files removed, 0 files unresolved compil@vps155841:~/khanat$ cd $RYHOME/build compil@vps155841:~/khanat-code/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/khanat-code/code/build compil@vps155841:~/khanat-code/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:~/khanat-code/code/build$ make -j5 ...
After several crashes with this kind of compilation, I try with the -j3 option, then -j1 The compilation seems to prefer this one but it still makes errors. Final error:
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
We try again
compil@vps155841:~/khanat-code/code/build$ make clean compil@vps155841:~/khanat-code/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:~/khanat-code/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
Added -DFINAL_VERSION=ON -DCMAKE_INSTALL_PREFIX: PATH=/home/compil/ryzomserver/ to cmake.
The error occurs on nelgui.dir, shortly before we have this line: [26%] Building CXX object nel/src/gui/ CMakeFiles /nelgui.dir/libwww_types.cpp.o that runs correctly.
I resume the default branch and compile libwww.
compil@vps155841:~/khanat-code$ 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:~/khanat-code/code/build$
And as long as there is also cpptest
Shepeng> I complicated squish, not wondering why it works then before no <Deed> ok <Shepeng> hg clone http://hg.kervala.net/cmake <Deed> I will make a post on the forum with everything that I found if you still have errors <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> then pass root etmake install <Shepeng> and I retent the server compilation
But I have the same error.
Test with the kua 5.1 OFF option: 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 ..
it goes!
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
I continue on this tutorial: 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 khanat-code/code/web/public_php/ ryzomweb/ compil@vps155841:~$ cp -r khanat-code/code/web/private_php/ ryzomweb/ compil@vps155841:~$ chgrp www-data -R ryzomweb/
I have an access error:
[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
Editing the file: /etc/apache2/apache2.conf :
...
<Directory /home/compil/ryzomweb>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
...
Installation via the web
From the url: http://khanat.khaganat.net/setup/install.php
Apt-get install mysql-server
Creating mdp for root mysql and admin tool, setup and ams
manque mcrypt : apt-get install php5-mcrypt php5enmod mcrypt service apache2 restart
Shardn Launch Pb tries to resolve
hg clone http://depots.khaganat.net/scm/hg/khanat-ressources ln -s /home/compil/khanat-ressources/leveldesign/ /home/compil/khaganat/code/ryzom/server/leveldesign ln -s /home/compil/khanat-ressources/primitives/ khaganat/code/ryzom/server/primitives ln -s /home/compil/khanat-ressources/sound khaganat/code/ryzom/server/sound ln -s /home/compil/khanat-ressources/common khaganat/code/ryzom/server/common ln -s /home/compil/khanat-ressources/continents/ khaganat/code/ryzom/server/continents ln -s /home/compil/khanat-ressources/translation/ khaganat/code/ryzom/server/translation ln -s /home/compil/khanat-ressources/workspace/ khaganat/code/ryzom/server/workspace mkdir khanat-code/code/ryzom/server/data_leveldesign ln -s /home/compil/khanat-ressources/leveldesign/ /home/compil/khanat-code/code/ryzom/server/data_leveldesign/leveldesign ln -s /home/compil/khanat-ressources/collisions/ khanat-code/code/ryzom/server/data_shard/collisions
Modified I modified this file: $RYZOM_PATH/server/frontend_service.cfg replaced the address by khanat.khaganat.net in variable FSListenHost = “your.server.ip.adress”;
I cheat :
for var in khanat-code/code/ryzom/server/translation/translated/*_en.txt; do nomfic=${var##*/}; ln -s $nomfic ${var%/*}/${nomfic/_en/_de}; done for var in khanat-code/code/ryzom/server/translation/translated/*_wk.txt; do nomfic=${var##*/}; ln -s $nomfic ${var%/*}/${nomfic/_wk/_fr}; done for var in khanat-code/code/ryzom/server/translation/translated/*_en.txt; do nomfic=${var##*/}; ln -s $nomfic ${var%/*}/${nomfic/_en/_es}; done for var in khanat-code/code/ryzom/server/translation/translated/*_en.txt; do nomfic=${var##*/}; ln -s $nomfic ${var%/*}/${nomfic/_en/_ru}; done
Recompile data from datasheets
It is possible that there is a problem with the sheet_id.bin/visual_slot.tab and other packed_sheets at the start in which case you have to recreate them(but you must have compiled the tools for that):
A priority on our server, the commands to be made will be:
cd /home/compil/khaganat-code/code/build/bin ./make_sheet_id -o/home/compil/khanat-ressources/leveldesign/game_elem/sheet_id.bin /home/compil/khanat-ressources/leveldesign/game_elem /home/compil/khanat-ressources/leveldesign/game_element /home/compil/khanat-ressources/leveldesign/world /home/compil/khanat-ressources/leveldesign/ecosystems
The idea is to indicate all the datasheets useful to the system so that it numbers them by giving it the list of all the directories in leveldesign where there are (except that of definition) and the -o is for Indicate to create this file in the directory game_elem of the folder leveldesign
We must also delete files that we will regenerate:
rm -f /home/compil/khanat-code/code/ryzom/server/data_shard/*.packed_sheets rm -f /home/compil/khanat-code/code/ryzom/common/data_common/visual_slot.tab
You must then restart the sheet_packer, first configuring its config file:
cd /home/compil/khanat-code/code/ryzom/tools/sheets_packer
nano sheets_packer.cfg
And make sure the paths are good, with the filename changes etc. For us I got to:
/////////////////////////////////
/////////////////////////////////
/// SHEETS PACKER CONFIG FILE ///
/////////////////////////////////
/////////////////////////////////
DataPath = { "../../common/data_leveldesign", "../../common/data_common", "../../client/data", "../../../../../khanat-ressources/common", "../../../../../khanat-ressources/leveldesign", "../../../../../khanat-ressources/primitives" };
WorldSheet = "ryzom.world";
PrimitivesPath = "../../../../../khanat-ressources/primitives";
OutputDataPath = "../../client/data";
LigoPrimitiveClass = "world_editor_classes.xml";
Then we can launch the sheets_packer, remaining in the directory where we have this .cfg file because the paths are relative:
/home/compil/khanat-code/code/build/bin/sheets_packer
Then copy the visual_slot.tab to its place
cp visual_slot.tab /home/compil/khanat-code/code/ryzom/common/data_common/visual_slot.tab
If I recall correctly, *.packed_sheets are regenerated by themselves when the server restarts if they are absent(which is the case since they have just been deleted). It is therefore necessary to wait until it is launched to be able to retrieve them and copy them in its client(see below).
Attention: it will be necessary to provide this to the client(in it's “user” directory):
- *.packed_sheets files from /home/compil/khanat-code/code/ryzom/server/data_shard/
- The visual_slot.tab file in /home/compil/khanat-code/code/ryzom/common/data_common/
- The file sheet_id.bin in /home/compil/khanat-code/code/ryzom/common/data_leveldesign/leveldesign/Game_elem/
khanat-code/code/ryzom/common khanat-code/code/ryzom/tools/scrips/linux khanat-code/code/ryzom/server khanat-code/code/build/bin/ryzom_*_service khanat-ressources/leveldesign/ khanat-code/code/ryzom/common/data-leveldesign/leveldesign khanat-ressources/primitives/ khanat-code/code/ryzom/common/data-leveldesign/primitives khanat-ressources/sound khanat-code/code/ryzom/server/sound khanat-ressources/common khanat-code/code/ryzom/server/common khanat-ressources/continents/ khanat-code/code/ryzom/server/continents khanat-ressources/translation/ khanat-code/code/ryzom/server/translation khanat-ressources/workspace/ khanat-code/code/ryzom/server/workspace khanat-ressources/collisions/ khanat-code/code/ryzom/server/data_shard/collisions
To reduce the errors in AIS launch logs that seemingly bother, I deleted all symbolic links to the khaganat-data content that was directly in /khaganat-code/code/ryzom/server as well as the Directories /src and /patchman_cfg that were there and /dataleveldesign which contained another cross-reference to khaganat-ressources/leveldesign.
I retained the contents of the two deleted directories in /home/compil/storage_temp. Just relocate its contents to /home/compil/khaganat-code/code/ryzom/server if needed
— YannK 2015/11/08 15: 42
To check, that the shard works without a customer:
http://khanat.khaganat.net:40916/login/r2_login.php?cmd=login&login=******&password=******&clientApplication=ryzom_open