====== Installing the shard ======
The shard refers to an instance of the game server based on the Ryzom Core system. This tutorial is based on notes from the RC wiki((For info: [[https://ryzomcore.atlassian.net/wiki/page ryzomcore original]]).
It remains to detail the deployment of AMS (Account Management System)
First of all, make sure you have a well-configured database: [[en:1st_server_states]]
The installation of the shard is done under Linux, with the dedicated user name: "compil":
adduser compil
adduser compil sudo
su - compil
===== Installing packages and sources =====
Tests have been made on:
* [[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 (unfinished tutorial)
==== Updating information and packages for linux: ====
To use php7 (7.3) you need to manually install mcrypt additionally, which is very well explained on: [[https://serverpilot.io/docs/how-to-install-the-php-mcrypt-extension|Tutorial for mcrypt on php7.3 or php7.2]]
sudo apt-get update
sudo apt-get dist-upgrade
**If the kernel is updated at this point, you must restart:**
reboot
**You need to install tools and libs to compile and start the server(the MySQL root Root MySQL password must be set and will later be used to connect to phpmyadmin).**
=> Install packages from [[LAMP]]:
apt-get install apache2 php5 mysql-server libapache2-mod-php5 php5-mysql apache2-utils php5-gd php5-imagick
===Ubuntu===
sudo apt-get install git 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 unzip
===Debian 7===
sudo apt-get install git 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 unzip
===Debian 8===
udo apt-get install git 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 cpputest libssl-dev liblzma-dev unzip
===Installer Squish===
wget -c https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/libsquish/squish-1.11.zip
unzip squish-1.11.zip
cd squish-1.11
**Important: the source code of the "squish" library does not compile with the latest versions of gcc. A minor correction must be made before running this compilation:** \\
In "alpha.cpp"(line 24) and "singlecolourfit.cpp"(line 26), you must add:
#include
Then compile:
make
sudo make install
==== For Windows: ====
Install in order DirectX SDK then Visual c ++
*[[http://www.7-zip.org/|7-Zip]]
*[[http://www.microsoft.com/en-us/download/details.aspx?id=6812|Installer le DirectX SDK]]
*[[https://www.microsoft.com/en-us/download/details.aspx?id=48146|Installer le Visual 2015]]
*[[https://tortoisegit.org/|Tortoise Git]]
*[[https://cmake.org/download/|CMake]]
*[[https://www.qt.io/download-open-source/|Qt 5]]
==== Download ryzom source code and data: ====
git clone https://git.khaganat.net/khaganat/mmorpg_khanat/khanat-opennel-code.git
git clone https://git.khaganat.net/khaganat/mmorpg_khanat/khanat-ressources.git
For additional windows: \\
Download
*[[https://sourceforge.net/projects/ryzom/files/external_vc14.7z/download|External_vc14]]
+-- code
| |
| +-- nel
| |
| +-- ryzom
| |
| +-- ...
|
+-- external
===== Build Ryzom OpenShard server =====
==== Create a file with PATH variables(for linux) ====
For a permament script:
nano /home/compil/.bashrc
For a script to run at each session:
nano shard.sh
Variables to put in your script:
export RYHOME=/home/compil/khanat-opennel-code/code
export RYZOM_PATH=/home/compil/khanat-opennel-code/code/ryzom
export PATH=$PATH:/home/compil/khanat-opennel-code/code/ryzom/tools/scripts/linux
export RYDATA=/home/compil/khanat-ressources
==== Configuration options to build only "nel & server"(In static: if CMakeOptions) ====
For linux:
mkdir $RYHOME/build && cd $RYHOME/build
For windows:
Create the directory "build" in the directory "code".
CMake Line:
cmake -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 ..
Note that the server must be compiled with the option: -DWITH_SYMBOLS=ON to have debug symbols(see [[en:shard_debug]])
Options:
Without tools:
-DWITH_RYZOM_TOOLS=OFF (Needed for the shard to be able to make the visual_slot.tab and patches).
-DWITH_NEL_TOOLS=OFF
For Windows:
Launch Cmake:
* Code source : C:/khanat-opennel-code/code
* Build binaries: C:/khanat-opennel-code/code/build
* Configure for visual c++ 2015
* Configure
* Change options
* Generate
===Build and install===
For linux :
make -jX (X= nombres de coeur +1, si ça plante n'utiliser que "make")
sudo make install
For Windows :
Run C:\khanat-opennel-code\code\build\RyzomCore.sln that was generated
By choosing Visual C++, press F7 to compile.
==== Needed server symbolic links ====
ln -s $RYDATA/collisions $RYZOM_PATH/server/
ln -s $RYDATA/leveldesign $RYZOM_PATH/server/
ln -s $RYDATA/primitives $RYZOM_PATH/server/
ln -s $RYDATA/translation $RYZOM_PATH/server/
ln -s $RYDATA/continents $RYZOM_PATH/server/
ln -s $RYDATA/common $RYZOM_PATH/server/
ln -s $RYDATA/shard/su/dev_gm_names.xml $RYZOM_PATH/server/data_shard
ln -s $RYDATA/shard/su/invalid_entity_names.txt $RYZOM_PATH/server/data_shard
ln -s $RYDATA/shard/su/reserved_names.xml $RYZOM_PATH/server/data_shard
ln -s $RYDATA/shard/egs/game_event.txt $RYZOM_PATH/server/data_shard
ln -s $RYDATA/shard/egs/mission_queues.txt $RYZOM_PATH/server/data_shard
ln -s $RYDATA/shard/egs/named_items.txt $RYZOM_PATH/server/data_shard
==== Recompile data from datasheets ====
===Compiler sheet_id.bin===
These steps(recompiling the datasheets) require some in depth knowledge of the process and how to manage the files. \\
If you are an beginner, you can/should safely ignore the steps for know and just jump to the "Configure server" part in the guide!!
Note: Zatalyz and scoui had success.
cd $RYHOME/build/bin
./make_sheet_id -o$RYDATA/leveldesign/game_elem/sheet_id.bin $RYDATA/leveldesign/game_elem $RYDATA/leveldesign/game_element $RYDATA/leveldesign/world $RYDATA/leveldesign/ecosystems $RYDATA/sound
=== Compiling the visual_slot.tab file ===
First, verify that the paths to the directorys containing the ''leveldesign'', ''primitives'' and the ''common'' files(for the server and the client) are correctly found in the configuration file:
cd $RYHOME/build/bin
cp sheets_packer $RYZOM_PATH/tools/sheets_packer/
cd $RYZOM_PATH/tools/sheets_packer
nano sheets_packer.cfg
Default state of the file sheets_packer.cfg file:
/////////////////////////////////
/////////////////////////////////
/// 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 standing directory of the ".cfg file" because of the relative paths:
$ $RYHOME/build/bin/sheets_packer
Finally, copy the visual_slot.tab to it's needed place:
cp visual_slot.tab $RYZOM_PATH/common/data_common/visual_slot.tab
=== Add the missing languages ===
This is a hack to add some translation files strangely requested by IOS. You should find out how to delete these calls that are hardcoded in: ''code/ryzom/server/src/input_output_service/string_manager.h ''lines 54 to 67:
class CStringManager
{
public:
/// This is a list of available languages.
enum TLanguages
{
work,
english,
german,
french,
russian,
spanish,
NB_LANGUAGES
};
for var in $RYDATA/translation/translated/*_en.txt; do nomfic=${var##*/}; ln -s $nomfic ${var%/*}/${nomfic/_en/_de}; done
for var in $RYDATA/translation/translated/*_en.txt; do nomfic=${var##*/}; ln -s $nomfic ${var%/*}/${nomfic/_en/_es}; done
for var in $RYDATA/translation/translated/*_wk.txt; do nomfic=${var##*/}; ln -s $nomfic ${var%/*}/${nomfic/_wk/_ru}; done
If you are missing out on the French translations(and you want them), you must add:
for var in $RYDATA/translation/translated/*_en.txt; do nomfic=${var##*/}; ln -s $nomfic ${var%/*}/${nomfic/_en/_fr}; done
===== Configure Server =====
**Edit different files for proper(and working) server configuration:**
nano $RYZOM_PATH/server/frontend_service.cfg
The line to be edited in **frontend_service.cfg** is: \\
FSListenHost = "your.server.ip.adress"; \\
For us it is: \\
FSListenHost = "lirria.khaganat.net";\\
nano $RYZOM_PATH/server/sql.cfg
To edit accordingly to your configuration:
DBHost = "127.0.0.1";
DBRingName = "ring_mini01";
Leave it to localhost. Create the user "nel" who has rights to the complete database, and then a user "ring" with rights to db: ring_mini01, both users with there own passwords. Don't forget to edit ''$ RYZOM_PATH/server/sql.cfg'' with your chosen configuration.
===== Web-admin =====
==== Installing web server packages ====
apt-get install mysql-server apache2 php5 php5-mysql php5-gd rrdtool screen mcrypt php5-mcrypt
apt-get install phpmyadmin
adduser compil www-data
==== Create, copy and set rights to "ryzomweb": ====
cp -r $RYHOME/web ryzomweb
chmod -R a+w ryzomweb
sudo chown -R www-data:www-data ryzomweb
==== Configure 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 lirria.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 lirria.khaganat.net
ServerAdmin admin@localhost
DocumentRoot /home/compil/ryzomweb/public_php
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Open the port 40916! \\
nano /etc/apache2/ports.conf
Add:
Listen 40916
=== Restart the Apache web service ===
service apache2 restart
=== Install the web-admin ===
Go to: ''http://YOUR_IP_ADRESS/setup''
Follow the instructions.
If you want to manage your MySQL database, go to: ''http://YOUR_ADRESSE_IP/phpmyadmin''
Helpful information about editing the database: \\
''Https://khaganat.net/wikhan/shard_database''
Notes:
General web page on all the web services: https://ryzomcore.atlassian.net/wiki/display/RC/Web+Services+Installer+Design+Doc
How to install the web services: https://ryzomcore.atlassian.net/wiki/display/RC/Configure+Linux+Web+Services
---
How to install AMS: https://ryzomcore.atlassian.net/wiki/display/RC/Setup+the+AMS
Documentation on AMS: https://ryzomcore.atlassian.net/wiki/display/RC/Account+Management+System
Details about AMS: https://ryzomcore.atlassian.net/wiki/display/RC/AMS+Design+Info
Videos and explanations from the author of AMS: https://plus.google.com/116363537101759977044
---
Installing the API for apps: https://ryzomcore.atlassian.net/wiki/display/RC/Configuring+Ryzom+API
WIki on the API: http://dev.ryzom.com/projects/ryzom-api/wiki
==== Install the patch service(optional) ====
The installation of the Patch Server is explained in detail on a specially dedicated page: https://khaganat.net/wikhan/en:installation_d_un_serveur_de_patchs
===== Start the Shard =====
**To turn on the shard:**
shard start
**To navigate and exit screen:**
Ctrl + a + n (or ctrl + a + service digit) allows you to navigate between services.
Ctrl + a + d allows you to exit screen.
Shard join allows to join an already running shard.
Shard share allows to join several running shards.
**To turn off the shard:**
shard stop
==== Verify that all works without a client ====
Http://lirria.khaganat.net:40916/login/r2_login.php?cmd=login&login=sonlogin&password=mdp&clientApplication=Lirria
Sonlogin = your user
Mdp = your passwords
{{Tag>computer server shard tutorial}}