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