How to install a scielobooks instance

Install pre-requisites

Before installing the SciELO-Books application, install the software listed below.

Server software

softwareproduct URLinstallation methodUbuntu Package name
Python 2.5 or 2.6 http://www.python.org/ OS package manager python2.6
python2.x-dev (2.5 or 2.6) http://www.python.org/ OS package manager python2.6-dev
GNU compiler and tools http://www.python.org/ OS package manager build-essential
Apache HTTP server 2.2 http://httpd.apache.org/ OS package manager apache2
mod_wsgi - Python adapter(optional) http://code.google.com/p/modwsgi/ OS package manager libapache2-mod-wsgi
CouchDB 1.0 http://couchdb.apache.org/ OS package manager couchdb
PostgreSQL http://www.postgresql.org/ OS package manager postgresql
GIT http://git-scm.com/ OS package manager git-core
Subversion http://subversion.apache.org/ OS package manager subversion

1. Install each package below using the recommended installation method above.

Note: Python comes pre-installed in most Linux distributions. If Python 2.5 or 2.6 is already installed, there is no need to install a newer version.

Note2: on Ubuntu 10.04 (Lucid) build-essential includes: dpkg-dev, g++, libc6-dev and make

System-wide Python libraries

softwareproduct URLinstallation method
distribute 0.6.10 http://pypi.python.org/pypi/distribute sudo python distribute_setup.py
virtualenv http://pypi.python.org/pypi/virtualenv sudo easy_install virtualenv
python gfx module http://www.swftools.org/gfx_tutorial.html installation instruction topic 1.1 Compiling gfx and installing

2. Download the distribute_setup.py script and use the installed Python interperter to run it as root (this provides the easy_install utility)

# wget http://python-distribute.org/distribute_setup.py
# python distribute_setup.py

3. Use easy_install to download and install virtuaenv

# easy_install virtualenv

Configure the database

4. Create a scielobooks_1a database. The user name and password will not be configured at this time.

Log in to the Futon's web interface:

http://localhost:5984/_utils/

Install the application environment

Note: all of the remainig steps can be performed by a regular user without root access.

5. Use virtualenv to create an application environment and activate it:

$ virtualenv --distribute --no-site-packages scielobooks-env
$ source scielobooks-env/bin/activate
(scielobooks-env)$   # note that the shell prompt displays the active virtual environment

Install the scielobooks application

6. Go to a suitable installation directory and check out the application source

Development(Recommended):
Read-only:
(scielobooks-env)$ git clone git://github.com/bireme/scielobooks.git
Read+write:
(scielobooks-env)$ git clone git@github.com:bireme/scielobooks.git

Development:
(scielobooks-env)$ svn co http://svn.reddes.bvsalud.org/scielo-books/trunk/scielobooks

Stable:
(scielobooks-env)$ svn co http://svn.reddes.bvsalud.org/scielo-books/tags/<VERSION>


user: anonymous 
password: 4guests@

7. With the scielobooks-env environment active, use setuptools to automagically download and install all the dependencies

(scielobooks-env)$ python setup.py install

8. Run automated tests (NOT WORKING)

(scielobooks-env)$ python setup.py test -q

Running the application

Paster

The Pyramid web framework already comes with Paster. So, in order to run it you simply need to:

1. Create a paster .ini configuration file. Note: The application comes with 2 base templates, for development and for production environments.

Development:
$ cp development-TEMPLATE.ini development.ini

Production:
$ cp production-TEMPLATE.ini production.ini

See http://pythonpaste.org/script/#configuration for more information about PasteScript?.

2. Run

$ paster serve production.ini --daemon

Apache with mod_wsgi

1. Create and configure a paster .ini configuration file. Note: The application comes with 2 base templates, for development and for production environments.

Development:
$ cp development-TEMPLATE.ini development.ini

Production:
$ cp production-TEMPLATE.ini production.ini

See http://pythonpaste.org/script/#configuration for more information about PasteScript?.

2. Create and configure a .wsgi configuration file. Note: The application comes with a directory named apache, containing templates for deployments using Apache with mod_wsgi

Development:
$ cp apache/app/devel-TEMPLATE.wsgi apache/app/devel.wsgi

Production:
$ cp apache/app/production-TEMPLATE.wsgi apache/app/production.wsgi

Note: The .wsgi configuration file must be configured to point to the previously created .ini file, to match the application's entry point.

3. Configure the Apache WebServer? Note: The application comes with 2 virtual hosts base templates. You can simply create a symlink to the apache's available sites.

Development:
$ cp apache/httpd-devel-TEMPLATE.conf apache/httpd-devel.conf

Production:
$ cp apache/httpd-TEMPLATE.conf apache/httpd.conf

See http://docs.pylonsproject.org/projects/pyramid/1.0/tutorials/modwsgi/index.html for more information about deploying a Pyramid app using mod_wsgi.

Troubleshooting

The application is updated but seems like the cache is not (even after the apache+mod_wsgi have been restarted)

mod_wsgi has an aggressive cache system. to refresh it, you have to update the date of the .wsgi configuration file and restart apache.

$ touch apache/app/production.wsgi