XDATA - Manual de instalación


Pre-requisitos

Postgres

  1. Instalar postgres
  2. Ejecturar el servidor postgres
  3. Crear una base de datos con el nombre “django_xdata”
  4. Crear el usuario postgres
  5. Darle permisos al usuario sobre la base de datos django_xdata

Secuencia de comandos en mac:

brew install postgres
postgres -D /usr/local/var/postgres
create database django_xdata;
create user postgres with password '1';
GRANT ALL PRIVILEGES ON DATABASE django_xdata to postgres;

ElasticSearch

  1. Descargar la versión 2.3.0
  2. Habilitar dynamic scripting. Editar el archivo config/eliasticsearch.yml agregando las siguientes lineas

    script.inline: true
    script.indexed: true

  3. Es posible indicar el puerto en el que escuchará elastic search. Por default, el proyecto utiliza el puerto 9400. Para eso modificar le archivo config/elasticsearch.yml

    http.port: 9400

  4. Ejecutar el servidor de elasticSearch

    ./bin/elasticsearch -d


Django

Django es el framework web utilizado en el proyecto. La versión elegida es: 1.8.11

Estructura del proyecto

Se siguieron los estándares de Django con lo cual haciendo el tutorial oficial de Django es fácil entender la estructura del proyecto. Dentro de la carpeta principal existen múltiples directorios.

Dev y Prod

Estos directorios contienen scripts para utilizar en desarrollo y en producción. Los archivos enter.sh contienen las definiciones de variables de entorno utilizadas en el entorno virtual.

Env

El directorio env es creada con el comando del entorno virtual y no es parte del repositorio. Allí se instalarán todas las dependencias.

Otros directorios

Los demás directorios api, core, docs y web corresponden a aplicaciones de Django. Dentro de cada una de ellas existen los siguientes archivos:

Además cada app cuenta con los siguientes directorios:

Core

Esta app contiene la definición de modelos más importantes del proyecto que se persistirán en postgres e indexarán en elastic search

Web

Esta app contiene todoas las vistas web. Consumirán los modelos de Core y rendeará las vistas web con las visualizaciones

Api

Es la app responsable de atender los pedidos que se envían al API consumiento los modelos de Core

Docs

Contiene las vistas web con la documentación del proyecto


Como ejecutar el proyecto

  1. Clonar el repositorio
  2. Crear el entorno virtual ingresando al directorio del repositorio y ejecutar

    virtualenv –distribute env

  3. Entrar al entorno virtual

    source dev/enter.sh

  4. Instalar el archivo con los requisitos

    pip install -r requirements.txt

  5. Ejecutar el servidor de desarrollo con el comando (Nunca utilizar este servidor para producción)

    m runserver


Scripts

Dentro del directorio /prod existen múltiples scripts de utilidad que pueden ser ejecutados desde un cron o manualmente. Cada script incluye el comando para ingresar en el entorno virtual de producción automáticamente

Iniciar el servidor

El script start_django_server.sh inicia el servidor de producción con Gunicorn en el puerto 8000

Detener el servidor

El script kill_django_server.sh detiene el servidor de producción

Iniciar el servidor de elastic search

El script start_elasticsearch.sh inicia la ejecución de elastic search

Reconstrucción del índice de elastic search

El script rebuild_index.sh reconstruye el índice de elastic search utilizando los datos en la base de postgres

Cargar noticias

El script get_rss.sh buscá las noticias de los medios cargados y los guarda en la base de datos