Clone this wiki locally
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_rewrite, PHP 5.3 or newer. You can enable the required Apache modules
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
$ cd /var/www/ $ hg clone http://bitbucket.org/haschek/foafpress foafpress
2) 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.
make in your Foafpress directory to see more.
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/
$ 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
$ 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
3) Configure Apache
Second, you need to configure Apache that all resource requests of RDF
files are answered via Foafpress: use the template for the
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
the replacement would be only
$ cp .htaccess-example .htaccess $ gedit .htaccess
4) 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.
5) 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)
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!
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
$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