Running ClioPatria as a service
Running ClioPatria as a normal Unix daemon is generally the preferred way to deploy the system. This page describes the setup. It targets Ubuntu, but most of the remarks will also apply for other Unix-like systems. We will setup ClioPatria as an Ubuntu upstart job, using the Prolog SWISH for querying and controlling the server.
Make sure SWI-Prolog is installed as
git and the
graphviz packages are installed. The commands below are for a typical
Ubuntu server or Linux container. For
many other Linux distributions you will have to build SWI-Prolog from
% sudo apt-get install software-properties-common % sudo apt-add-repository ppa:swi-prolog/devel % sudo apt-get update % sudo apt-get install swi-prolog git graphviz
Now ClioPatria can be installed by cloning the git repository:
% git clone https://github.com/SWI-Prolog/ClioPatria.git
Make the user that manages the server member of the group that runs web
www-data on an Ubuntu system) using the command
me with the user.
% sudo usermod -a -G www-data me
Creating the server
First of all, configure ClioPatria in an empty directory. We will call
myproject, create a directory with that name and perform
the basic ClioPatria setup. The
--without-debug reduces the amount
of messages logged, which speeds up your server and prevents flooding
the system logs.
% mkdir myproject % cd myproject % ../ClioPatria/configure --without-debug
Available options for
configure can be viewed by running the command
below. Good candidates are
Edit network configuration
config-enabled/network.pl to suit your needs. If a proxy is
http:public_host to the public name of the server. Choose
a port for running the server and fill this in for
the appropriate proxy rule.
Create the administrative user
Run the server using
./run.pl. If all is configured correctly, it
now be available at the public address. Immediately fill in the admin
name and password. Use a fair password, as SWISH provides full access to
the machine under the daemon user permissions. Note that by default,
passwords are exchanged using plain HTTP, so do not use a password you
use elsewhere for critical access.
Install SWISH for this ClioPatria instance using
config-enabled/pengies.pl and change the setting
[*] if you want to enable SWISH access
Now shut down the server.
Typically, web-services are running under the user
www-data. One should certainly not run the server as
root and it is
wise to use a different user than the user that owns the ClioPatria
source files. Depending on the usage scenario, you want to give the
server write access to some resources. We assume that you are root or
member of the group
- Directories need mode 2775 (rwxrwsr-x), group
- Files need mode 664 (rw-rw-rw-), group
The resources that need attention are:
- users.db must have write access if you want to be able to add new users and change passwords.
- RDF-store must have write access if you want to be able to manage the triple set through the web interface.
- Create the directory log for storing the HTTP access log files if you enabled logging.
- Create the directory storage and make it writeable if you want to allow SWISH users to share program fragments.
- cpack must be writeable if you want to install packs through the SWISH console. We do not advice this.
The typical commands are:
% mkdir storage log % chmod 2775 storage log RDF-store % chmod 644 users.db % chgrp www-data storage RDF-store users.db
Install further cpacks and optionally load RDF
If you wish to install further cpacks, this is the time to do so. Start
./run.pl and use
?- cpack_install(Pack). to install the
You can now load RDF using
?- rdf_load('myfile.ttl'). or, if you
RDF-store writeable you can do this later.
Now shut down the server.
Register the service with Ubuntu upstart
Create a file
myproject.conf based on the template below. Edit the
chdir argument to point to the installation directory.
description "ClioPatria myproject server" start on runlevel  stop on runlevel [!2345] respawn respawn limit 5 60 umask 022 console log chdir /home/me/src/ClioPatria/myproject script export LANG=en_US.utf8 ./daemon.pl --no-fork --user=www-data --workers=16 end script
You may test the server by running the
./daemon.pl ... line from the
script as root. Watch for error messages on the terminal and test that
you can access the server. If that works nicely, close the server using
Control-C and e (exit).
/etc/init and start the server using
% service myproject start
Verify that the server comes online. If not, examine
the logfile at
Managing the server using SWISH
You can manage the server using SWISH by logging into the server using
admin account and select SWISH from the Query pulldown menu. You
can run any Prolog query in the bottom-left corner. If the needed
predicate is in a library, you have to load that library. You do so by
adding a directive like this in the left window:
You can run commands such as
?- rdf_load('myfile.ttl'). or
Unless you have
www-data to the cpack and ClioPatria source tree, you
cannot update ClioPatria directly through SWISH. To make changes to
the software, update the ClioPatria sources (e.g., `git pull`) and then
?- make. from the SWISH console. To update the cpacks, run a
copy of the server on a unique port and with a temporary database and
then run your cpack commands before running
?- make. from the SWISH
./run.pl --port=4444 --store=tmp ... ?- cpack_upgrade.
New packs are installed similarly, but often require a service restart.