Installing Zoook on Ubuntu – Part II: Python and Django

1 Install Python

The default Python interpreter on Ubuntu 11.10 is 2.7.2. To verify that this is the version on your system execute:

$ python

This should return something like the following:


Find out the version of your Python installation.

The message indicates that the version 2.7.2 is installed.

To exit the Python interpreter execute a

>>> quit()

In the rare case that there is no Python on your system, install it via

$ sudo apt-get install python

2 Install Django

Install all dependencies needed by Django:

$ sudo apt-get install python-dev python-psycopg2

You can install Django in three different ways:

  1. via the package management system of your distribution,
  2. fetching the latest stable version from the website, or
  3. download the development version from their repositories.

2.1 Installation via the package management system

The installation via the package management system is as simple as

$ sudo apt-get install python-django

2.2 Installing the last stable version from the website

Surf to the download section of the Django site and check for the latest stable version. That was 1.3.1 as of this writing (8th of February 2012).

$ cd ~
$ tar xvzf Django-1.3.1.tar.gz
$ mv Django-1.3.1 django-src

This way you’ll find the source code in the directory ~/django-src. The next step is to pass this information to Python. Locate the site-packages of your Python installation:

$ python -c "from distutils.sysconfig import get_python_lib; 
 print get_python_lib()"

This should return something like the following:


Locate the site-packages of your Python installation.

which indicates that your site-package directory is /usr/lib/python2.7/dist-packages. In this directory you’ll have to add the route to the Django sources:

$ echo '/home/roberto/django-src' | sudo tee -a 

This creates the file /usr/lib/python2.7/dist-packages/django.pth with the path to your Django installation.

To make a live a bit more comfortable, create a symbolic link to django-admin.py:

$ sudo ln -s /home/roberto/django-src/django/bin/django-admin.py 

This way you can use django-admin.py in every place of the file system instead of executing the script by its absolute path ~/django-src/django/bin/django-admin.py.

3 Verify the installation

Check that Python can find the Django modules:

$ python
>>> import django
>>> print django.get_version()

This should return something like:


Check that Python finds Django.

This indicates that Python detected Django in its 1.3.1 version.

3.1 Create a Django test project

We are going to create a Django test page in order to verify that everything is working fine. At first create a new directory for this:

$ mkdir ~/django-projects
$ cd ~/django-projects

In this case the directory is located in the home directory of the user and has the name django-projects. Now, create a test project in this category:

$ django-admin.py startproject testdjango

Change to the directory of the project and start the Django server:

$ cd testdjango
$ python manage.py runserver

This should return something like:


Successfully started Django server.

The server started up correctly and is waiting for connections on port 8000 ( When navigating your browser to this direction you should see a site like this:


Djangos start page.

Now, we could create a database in PostgreSQL and verify the connection with the project. But, given the aim of this article (install Zoook) we’re going into the details of the database access when configuring Zoook.

Installing Zoook on Ubuntu – Part I: Apache and PostgreSQL

Whar are we going to install?

  • Apache 2
  • PostgreSQL 9.11
  • pgAdmin3 1.14.0
  • Python 2.7
  • the mod_wsgi module for Apache 2
  • Zoook.

In this series of articles we are going into the details of how to install Zoook on Ubuntu 11.00.

The aim of these articles is to document the steps to implement a Zoook in a development as well as in an actual production environment and to give the user the solutions to possible problems that can come up during the installation and configuration process.

The whole process it is going to be split up into four parts with this one being the first explaining how to set up Apache 2 and PostgreSQL.

1 Install Apache 2 (production environment)

Django incorporates a server for development environments that is recommended to use as it simplifies the debugging process. So this step is not needed in development environments.

To install Apache 2 open up a terminal and execute:

$ sudo apt-get install apache2

2 Install PostgreSQL

Python as well as Apache support various database back ends. But, this article is centred on the usage of PostgreSQL.

To install PostgreSQL execute:

$ sudo apt-get install postgresql

3 Install pgAdmin3

The next step is to install pgAdmin3. A graphical interface to PostgreSQL that makes the management of the PostgreSQL server easier. Actually the last available version is 1.14.0. But, in the repository of Ubuntu is only te version 1.12.3-1.

3.1 Installation from the repositories

To install the version 1.12.3-1 from the repositories:

$ sudo apt-get install pgadmin3

3.2 Compilation and Installation of the source code

If you prefer to install the last version, you have to fetch the source code and compile it. Download the source and unpack it:

$ tar xvzf pgadmin3-1.14.0.tar.gz

Change to the directory where you unpacked it:

$ cd pgadmin3-1.14.0

Before you can install it make sure that all the dependencies are satisfied:

$ sudo apt-get install build-essential libwxgtk2.8-dev libxml2-dev 
       libxslt1-dev  libgtk2.0-dev

After this execute

$ ./configure

The next step would be to execute make. But, if you do that now it’ll raise the error:

./db/keywords.c:33:34: error: parser/kwlist.h: No such file or directory

This error is produced because there is a bug in the PostgreSQL constructor that misses to install the necessary file in the appropriate directory. To solve this you have to download this file and create the directory /usr/include/postgresql/parser:

$ sudo mkdir -p /usr/include/postgresql/parser

Move the downloaded archive to this directory:

$ sudo mv kwlist.h /usr/include/postgresql/parser

Now, you can execute

$ make

and afterwards

$ make install

The installation should have succeed correctly.

Additionally create a symbolic link to the pgadmin3 executable:

$ sudo ln -s /usr/local/pgadmin3/bin/pgadmin3 /usr/local/bin/pgadmin3

This way you can execute it via:

$ pgadmin3

instead of:

$ /usr/local/bin/pgadmin3

4 Configure PostgreSQL user

PostgreSQL has the default setting ident sameuser for local connections. This permits a system user to access the same account on the SQL server. For this reason you have to create a new user on the SQL server with the same name under which the server is running.

$ sudo -u postgres createuser --superuser YOUR_USER_NAME
    $ sudo -u postgres psql
    postgres=# password YOUR_USER_NAME

Re-initiate the Apache server after all these changes:

$ sudo /etc/init.d/apache2 restart

Now the system is set up to continue with the following steps to install Python, Django, mod_wsgi and Zoook.

Instalar Zoook en Ubuntu – Parte II: Python y Django

2.- Instalar Django

Django puede instalarse de tres formas:

  1. Usar los sistemas de distribución de paquetes de algunas distribuciones (como Ubuntu).
  2. Descargar la versión estable desde su web.
  3. Descargar la última versión en desarrollo desde repositorios.

En el momento de escribir este artículo la versión estable de los repositorios de Ubuntu coincide con la versión estable descargable por la web. Instalar la última versión desde los repositorios de Ubuntu es tan sencillo como:

sydo apt-get install python-django

Ahora se detallará el proceso a seguir para instalar la última versión estable en caso de no estar disponible a través de repositorios de Ubuntu.

En primer lugar hay que ir a la sección de descargas de la web de Django y descargar la última versión estable/oficial de Django. En el momento de escribir este artículo la versión era la 1.3.1 y el archivo descargado es Django-1.3.1.tar.gz

Suponiendo que se ha descargado el archivo en la carpeta de usuario estos serían los pasos para generar el directorio en el que se almacenará el código fuente de Django:

cd ~
tar xvzf Django-1.3.1.tar.gz
mv Django-1.3.1 django-src

De esta forma la carpeta que contendrá el código fuente de Django queda situada en:


Con la carpeta de Django preparada el siguiente paso es informarle a Python de dónde la hemos generado. Para eso, a su vez, hay que buscar dónde están los site-packages de Python.

Averiguar dónde están los site-packages de Python:

python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"

Nos devolverá algo como:


que indica que en este caso el directorio de los site-packages es: /usr/lib/python2.7/dist-packages

Dentro de ese directorio hay que agregar la ruta a la carpeta con el código fuente de Django.

Para agregar la ruta a Django:

echo '/home/roberto/django-src' | sudo tee -a /usr/lib/python2.7/dist-packages/django.pth

eso creará un archivo /usr/lib/python2.7/dist-packages/django.pth en cuyo interior queda almacenada la ruta de acceso a Django.

A continuación crear enlace simbólico a django-admin.py para facilitar su uso:

sudo ln -s /home/roberto/django-src/django/bin/django-admin.py /usr/local/bin

 De este modo se puede usar django-admin.py desde cualquier carpeta en lugar de tener que usar /home/roberto/django-src/django/bin/django-admin.py

3.- Verificar instalación

Comprobar que Python es capaz de encontrar Django:

>>> import django
>>> print django.get_version()

Que devolverá algo como:


que indica que Python ha detectado y conectado correctamente con la versión 1.3.1 de Django que hay en el sistema.

La siguiente verificación será crear el primer proyecto de Django para verificar que la generación funciona.

Crear una carpeta para almacenar los proyectos de Django y acceder a ella:

mkdir /home/roberto/django-projects
cd /home/roberto/django-projects

En este caso la carpeta se ha creado en el home del usuario con el nombre «django-projects» pero no es necesario que sea así. En su lugar podría haberse usado, por ejemplo, la carpeta workspace que usa Eclipse.

Crear el proyecto de prueba en la carpeta:

django-admin.py startproject testdjango

Acceder al proyecto y lanzar el servidor Django integrado:

cd testdjango
python manage.py runserver

que devuelve algo como:


El servidor ha arrancado correctamente y está esperando conexiones locales en el puerto 8000 ( ). Al abrir el navegador en la ruta indicada por el mensaje debería aparecer:


El proyecto ha cargado correctamente y es accesible desde el navegador. Ahora se podría crear una base de datos en PostgreSQL y comprobar la conectividad con el proyecto pero dada la finalidad de este artículo ( instalar Zoook ) el acceso a base de datos se detallará más adelante al configurar Zoook.

Instalar Zoook en Ubuntu – Parte I: Apache y PostgreSQL

1.- Instalar Apache 2 (entornos de producción)

Django incorpora un servidor para entornos de desarrollo que además es recomendable usar ya que simplifica enormemente el proceso de debug. Por lo tanto no es necesario realizar este paso en entornos de desarrollo.

Para instalar Apache 2 escribir en un terminal:

sudo apt-get install apache2

2.- Instalar PostgreSQL

Tanto Python como Apache soportan varios motores de bases de datos pero este artículo está centrado en cómo usar PostgreSQL.

Para instalar PostgreSQL

sudo apt-get install postgresql

3.- Instalar pgAdmin3

Lo siguiente es instalar la interfaz gráfica pgAdmin3 para facilitar la gestión del servidor PostgreSQL. Actualmente la última versión disponible es la 1.14.0 pero en los repositorios de ubuntu está la versión 1.12.3-1.

Para instalar la versión 1.12.3-1 desde los repositorios:

sudo apt-get install pgadmin3{/code}

Si se prefiere instalar la última versión hay que descargar directamente el código fuente y compilarlo. Descargar las fuentes de:


En este caso descargar:


Tras descargarlo descomprimirlo con:

tar xvzf pgadmin3-1.14.0.tar.gz

y acceder a la carpeta donde se ha descomprimido:

cd pgadmin3-1.14.0{/code}

Antes de instalarlo hay que asegurarse de tener todas las dependencias necesarias:

sudo apt-get install build-essential libwxgtk2.8-dev libxml2-dev libxslt1-dev libgtk2.0-dev

Después ejecutar:


Lo siguiente sería hacer un make pero si se hace ahora se obtiene un error:

./db/keywords.c:33:34: error: parser/kwlist.h: No such file or directory

Este error se produce porque hay un bug en el constructor del PostreSQL que no copia un archivo necesario ( kwlist.h ) en la carpeta correspondiente. Para solucionarlo descargar este archivo y después:

crear la carpeta /usr/include/postgresql/parser con:

sudo mkdir -p /usr/include/postgresql/parser

mover allí el archivo descargado con:

sudo mv kwlist.h /usr/include/postgresql/parser

A continuación ya se puede ejecutar:


y luego:

sudo make install

La instalación debería haberse realizado correctamente.

Adicionalmente y para mayor comodidad crear un enlace simbólico al ejecutable de pgadmin3 con:

sudo ln -s /usr/local/pgadmin3/bin/pgadmin3 /usr/local/bin/pgadmin3

De este modo se puede acceder a él desde cualquier lugar ejecutando simplemente:


en lugar de tener que usar:


4.- Configurar usuarios PostgreSQL

PostgreSQL por defecto trabaja con ‘ident sameuser’ para conexiones locales que permite usar el mismo usuario que ya existe en el sistema para establecer las conexiones con base de datos. De un modo similar se puede crear un usuario alternativo en el sistema y generarle un acceso a PostgreSQL.

El modo de crear un usuario superusuario es:

sudo -u postgres createuser --superuser NOMBREUSUARIO
sudo -u postgres psql
postgres=# password NOMBREUSUARIO

Tras todos los cambios reiniciar el servidor apache:

sudo /etc/init.d/apache2 restart

Finalizado todo este proceso quedaría el sistema listo para continuar con los siguientes pasos en los que instalaremos Python, Django, el módulo mod_wsgi para Apache 2 y finalmente Zoook.

En los próximos días publicaremos el resto de partes.