Skip to content
v4dim edited this page Jun 3, 2012 · 6 revisions

Install Foafpress

If installation does not work please report bugs, errors and your suggestions how to improve Foafpress as well as this document, thank you!

Requirements: Apache web server with mod_negotiation, mod_dir and mod_rewrite, PHP 5.3 or newer. You can enable the required Apache modules by starting:

sudo make enable-modules

in your foafpress root directory (after cloning, see next step)

Note: All code examples are valid for a standard installation of Ubuntu Linux. If you use another Operation system or another Linux distribution please adapt it.

  1. Copy Foafpress to your web server

Currently we do not offer archive downloads, Pear channels, Phars or Debian packages. Please clone it via Git:

$ cd /var/www/
$ git clone https://github.com/haschek/Foafpress.git foafpress

or Mercurial:

$ cd /var/www/
$ hg clone http://bitbucket.org/haschek/foafpress foafpress
  1. Prepare cache folder, Install libraries

Using the makefile

$ cd foafpress/
$ make install

That will prepare the cache folder and installing all necessary libraries. You can go to 'Configure Apache' now. The makefile provides also some other options, e.g. installing/updating only a specific library. Call make in your Foafpress directory to see more.

Manually

Foafpress needs read/write access to the cache folder. You could grant read/write access to all (anonymous) users but it is recommended to grant this rights only to your user and the user group of your www user.

$ cd foafpress/
$ sudo chown youruser:www-data cache/
$ sudo chmod 6770 cache/

You need to install some libraries, Foafpress needs SPCMS, Arc2 and the RDF Template Object for PHP. Using Git:

$ cd foafpressapp/libraries
$ git clone https://github.com/haschek/Sandbox-Publisher-CMS.git spcms
$ git clone https://github.com/haschek/arc2.git arc2
$ git clone https://github.com/haschek/RDF-Template-Object.git rdfto

or Mercurial:

$ cd foafpressapp/libraries
$ hg clone https://sandbox-publisher-cms.googlecode.com/hg/ spcms
$ hg clone http://bitbucket.org/haschek/arc2 arc2
$ hg clone http://bitbucket.org/haschek/rdf-template-object rdfto
  1. Configure Apache

Second, you need to configure Apache that all resource requests of RDF files are answered via Foafpress: use the template for the .htaccess file and please follow the instruction there, basically you need to replace all occurrences of /path/to/ with the base URI of your Foafpress installation. If Foafpress is located in /var/www/foafpress/ the replacement would be only /foafpress/.

$ cp .htaccess-example .htaccess
$ gedit .htaccess
  1. Configure Foafpress

Foafpress itself comes with several options to configure, you can use the example template for the user config file, uncomment and edit the line you want to change. The template is documented extensive.

$ cp fp-config.php-example fp-config.php
$ gedit fp-config.php

If you only want to test Foafpress, or do not need any customizations on templates/layout you can ignore options for templates and plugins. It is recommended to configure caching and the language stack. If you decide to use Foafpress on your public server please configure the production mode.

  1. Run Foafpress

Now Foafpress should work. Please check out one of the test resources which are located in the test sub folder.

For instance, if you have installed Foafpress on your local machine under /var/www/foafpress/ then run http://localhost/foafpress/test/desirejeanette in your web browser. If Foafpress is working properly you should see something like this:

Foafpress screenshot: rendering a foaf:Person example (v 0.0)Foafpress screenshot: rendering a foaf:Person example (v 0.0)

In case Foafpress does not work please check also the trouble shooting page.

Now you could copy your own foaf:Person profile to the foafpress folder and do further testings. Would be nice to hear some feedback, thank you!

Performance

Aggregating data is slow, every internal HTTP request by Foafpress to get Linked Data RDF and all the the associated activity feeds, e.g. for your related profile accounts, needs time. Sometimes a lot of time. Foafpress uses caches to prevent new aggregation at every request of a Foafpress powered site. But, for example, for your feeds you do not want to use long cache invalidation times. Additionally, if a resource is requested only a few times, caches are probably invalid on each single request, and Foafpress needs a long time to respond, each time.

Foafpress tried to tackle this problem by implementing post output processes. What does it mean? Foafpress checks for valid caches of previously rendered sites of requested resources, or -- if Foafpress cannot find any valid cache -- it tries use an already outdated cache. Foafpress tells the requesting client, e.g. the visitor's web browser, via HTTP headers how long the response will be, then it sends back the output. The client should close connections at this point, the visitor do not need to wait for the site. After sending the output, Foafpress keeps running, doing all the data aggregation stuff, updating all caches. That means that the next visitor instantly get back an updated site without waiting.

This behaviour is turned off by default. You can speed up your Foafpress site by enabling it in your fp-config.php:

$c['Foafpress']['enableOutputPostprocessing'] = true;

With post output processing enabled, you could use short invalidation time for caches, what leads to steady updated sites and current activity feeds. For example, this is my cache configuration:

$c['cache']['age'] = 15 * 60; // update output all ~15 minutes
$c['Foafpress']['LinkedData']['cachetime'] = 7 * 24 * 60 * 60; // update Linked Data resource all ~7 days
$c['Foafpress']['Activity']['cachetime'] = 30 * 60; // update feeds every ~30 minutes