Configuring and running Ryzom Core server on GNU/Linux
Preparing Packages
For Debian/Ubuntu users you will need to install the following packages:
sudo apt-get install apache2 php5 php5-mysql php5-gd rrdtool screen
Making changes in services config files
- Change FSListenHost in
code/ryzom/server/frontend_service.cfg
to your address (e.g. 192.168.0.1). If you set up server on different machine, remember it has to be address that's reachable on client host.
If your frontend service is available through a firewall using NAT and a mapped IP address this is how you can advertise that external IP address. For example if your FS is on 192.168.1.100 internally but your firewall maps 74.125.225.210 through to your FS you would want to configure FSListenHost to be the address the clients connect to: 74.125.225.210.
Configuring Apache and web tools
- Ubuntu user: Don't forget to install php5-mysql synaptic packet and to uncomment "extension=mysql.so" into "php.ini" file to allow mysql connection from php code.
- Configure Apache with PHP. Make a VirtualHost (usually in
/etc/apache2/httpd.conf
) for the login scripts and admin app (replace DocumentRoot with your own path).
For current Ubuntu versions you can just edit the file default in /etc/apache2/sites-available/ - substituting what is listed below for what is already there. It may be helpful to break this into multiple site configuration files but isn't necesasry.
Don't forget to change the paths used below to match where your source is checked out!
Listen 40916 <VirtualHost *:40916> <Directory "/home/username/ryzom/code/ryzom/tools/server/"> Options -Indexes FollowSymLinks MultiViews IndexOptions FancyIndexing FoldersFirst NameWidth=* AllowOverride All Order allow,deny Allow from all </Directory> ServerAdmin admin@localhost DocumentRoot /home/username/ryzom/code/ryzom/tools/server/www ServerName localhost </VirtualHost>
<VirtualHost *:80> <Directory "/home/username/ryzom/code/ryzom/tools/server/"> Options -Indexes FollowSymLinks MultiViews IndexOptions FancyIndexing FoldersFirst NameWidth=* AllowOverride All Order allow,deny Allow from all </Directory> ServerAdmin admin@localhost
# You can change this if you want.
DocumentRoot /home/username/ryzom/code/ryzom/tools/server/admin
# Admin Tool
Alias /admin/ /home/username/ryzom/code/ryzom/tools/server/admin
ServerName localhost
</VirtualHost>
You can place these into the same configuration file or separately, it's up to you. If you want to serve up some unique content, a signup page or something along those lines you can change the main website's DocumentRoot so long as the admin tool alias is still there.
Advanced Configuration Topics
- See Configuring WebTT for configuration details regarding the Web Translation Tool.
- See Configuring Ryzom API for configuration details regarding configuring the Ryzom API and WebIG applications.
- See Configuring the Character Achievement App for information on setting up the Character Achievements app.
- See Configuring Ryzom Ring Server for configuration details regarding the configuration of a Ryzom Ring shard.
- See Configuring Patching Services for configuration details regardin the patch site and tools.
In order to execute system commands like restarting services you will need to be able to log in as root or execute the command using sudo, e.g.:
sudo /etc/init.d/apache2 restart
- Restart Apache by typing the following.
/etc/init.d/apache2 restart
- Set NELTOOL_SITEBASE to your server address and NELTOOL_SYSTEMBASE to your path in
code/ryzom/tools/server/admin/config.php
.
- Create
code/ryzom/server/save_shard/rrd_graphs/
directory.
mkdir -p code/ryzom/server/save_shard/rrd_graphs/
- Make sure the
code/ryzom/tools/server/admin/graphs_output
directory is writeable by all.
chmod a+w code/ryzom/tools/server/admin/graphs_output
- Change $LogRelativePath to 'logs/' in
code/ryzom/tools/server/www/login/config.php
(NOTE: log directory has to be writeable by webserver and it's not wise to give it write access to the directory where script is.)
$LogRelativePath = 'logs/';
- Make
code/ryzom/tools/server/www/login/logs/
directory and make it writeable by all for login script logs.
mkdir -p code/ryzom/tools/server/www/login/logs/ chmod a+w code/ryzom/tools/server/www/login/logs/
cd code/ryzom/tools/server/admin/templates/ cp -r default default_c chmod a+w default_c
Setting up MySQL
The configuration files in code/ryzom/server expect your user to be named 'shard' with NO PASSWORD. If you decide to use a different name for your MySQL user, or assign it a password, you will need to go through the .cfg files and change these values from 'shard' and "" wherever they appear. (they appear in several of the .cfg files)
Since this (and a password) can lead to unexpected errors (eg. error '4000') it is best to make sure everything works correctly with the defaults first.
Parse Error
If you are getting strange errors some config files may have Windows editor "control-M" endline characters, which appears as a blue ^M in vim. You can remove it with this vi command, noting that ^M is typed by pressing Ctrl+V followed by Ctrl+M:
find /home/username/ryzom/code -name "*.cfg" -name "*.php" | xargs grep -l '^M' # if there are none, Vim will gladly eat your shell if you xargs it vi <listed filename> # Next issue this command to vi :%s/^M//g
You may also skip this section and use the next section entitled "Setting up MySQL (Alternative)". It condenses all the steps listed below into a pre-generated MySQL file that you import.
- Remove STRICT_TRANS_TABLES from sql_mode in your MySQL configuration. You can check if you have it by doing
SHOW VARIABLES WHERE Variable_name='sql_mode';
- Or can run an SQL query within your database management tool, such as phpMyAdmin:
SET @@global.sql_mode= '';
- Prepare MySQL databases
* Login to the MySQL database server using the command line: mysql -uroot -p
CREATE DATABASE nel; CREATE DATABASE nel_tool; CREATE DATABASE ring_open; GRANT ALL ON nel.* TO shard@localhost; GRANT ALL ON nel_tool.* TO shard@localhost; GRANT ALL ON ring_open.* TO shard@localhost; FLUSH PRIVILEGES;
If you use different usernames and password for database, you need to change the following files:
code/ryzom/server/sql.cfg
code/ryzom/tools/server/www/login/config.php
code/ryzom/tools/server/admin/config.php
- Change all occurrences of open.ryzom.com in
code/ryzom/tools/server/sql/ryzom_default_data.sql
to your address (e.g. 192.168.0.1), but remember to keep ports (:4999 etc) as is.
- Change code/ryzom/tools/server/sql/ryzom_admin_default_data.sql replacing /home/nevrax/code/ryzom/server/save_shard/rrd_graphs by your directory.
- Popoulate databases with default data
cat code/ryzom/tools/server/sql/ryzom_tables.sql | mysql -ushard cat code/ryzom/tools/server/sql/ryzom_default_data.sql | mysql -ushard cat code/ryzom/tools/server/sql/ryzom_admin_default_data.sql | mysql -ushard nel_tool
- In MySQL update host for admin app. Change YOUR_ADDRESS to your address (e.g. 192.168.0.1).
USE nel_tool; UPDATE neltool_domains SET domain_as_host='YOUR_ADDRESS' where domain_id=12;
If you plan to make your shard public only the SU, FS and web services should have a public IP. The other services should all be behind a firewall for security reasons.
Setting up MySQL (Alternative)
- Use the Quick Start SQL Setup Script
- Edit the file and replace the following path with your own:
- /home/ryzom/code/ryzom/server/save_shard/rrd_graphs
- Import in phpMyAdmin or sourcing via the mysql CLI.
Running the shard
If you're running on Ubuntu or Debian, the default shell is actually dash and the shard/screen scripts will not run correctly in dash. The steps following will have you switch to bash. If you want to keep using dash as the default shell then you will need change the shebang from /bin/sh to /bin/bash in the following files:
- code/ryzom/tools/scripts/linux/shard
- code/ryzom/server/shard.screen.rc
Great screen how-to at: http://www.rackaid.com/resources/linux-screen-tutorial-and-how-to/
- Run commands:
# if you're on Ubuntu or Debian - disable dash: [[ `lsb_release -si` = 'Ubuntu' ]] || [[ `lsb_release -si` = 'Debian' ]] &&\ # Change your selection to 'no' so it uses bash instead. sudo dpkg-reconfigure dash echo "export RYZOM_PATH=/home/user/ryzom/code/ryzom" >> ~/.bashrc echo "export PATH=$PATH:$RYZOM_PATH/tools/scripts/linux" >> ~/.bashrc source ~/.bashrc
- Start the shard by typing: shard start
Running and Monitor the Shard
- To start: shard start
- To stop: shard stop
- To view screen: shard join
- To switch monitored service: Ctrl-A+n
Client login errors
- If your client gives you error messages on connect, check Client Connect Errors.
Notes
If you want to use your shard with the core client, you will have to copy the following file into code/ryzom/common/data_common: