Ago 192016
 

Históricamente, la necesidad de implementar un protocolo seguro de comunicación entre un cliente y un servidor web sólo se presentaba para sitios que manejaban datos confidenciales de los usuarios, como por ejemplo las tiendas online. Sin embargo, desde que Google anunció a mediados de 2014 que el uso del protocolo seguro https iba a ser tenido en cuenta por el algoritmo que determina el posicionamiento (ranking) de las páginas en los resultados de búsqueda, cada vez son más los administradores de sitios web que se plantean la conveniencia de implementar este protocolo.

Para ello, hay que instalar y configurar un certificado SSL en el servidor. El proceso de solicitar un certificado, instalarlo y configurarlo ha sido tradicionalmente engorroso, y además era necesario adquirir el certificado desembolsando una cierta cantidad de dinero. La iniciativa Let’s Encrypt (promovida por Google), ha venido a solucionar este problema.

En este artículo se explica el procedimiento de instalación y configuración de un certificado SSL de Let’s Encrypt sobre un servidor Debian/Ubuntu que ejecuta un servidor web Apache.

Seguir leyendo »

 Publicado por en 8:03 am
Oct 282015
 

Solr es un motor de búsqueda que permite realizar operaciones de búsqueda muy elaboradas sobre conjuntos de documentos. Cada documento de una colección solr es un conjunto de pares (campo,valor). Los documentos pueden ser de distintos tipos, y cada tipo de documento se define como el conjunto de campos que puede contener, y el tipo de datos de cada una de ellos.

Así, en una colección solr que almacenara información sobre libros publicados, cada documento recogería los datos de un determinado libro, y podría incluir campos ‘titulo’, ‘autor’, ‘fecha de publicación’, etc.

En las versiones de solr anteriores a la 4.3, al crear una colección para almacenar determinado tipo de documentos era necesario incluir un fichero de configuración ‘schema.xml’ en el que se definian los nombres de los campos y sus tipos de datos.

A partir de la versión 4.3 se introdujo la posibilidad de crear colecciones con esquema gestionado (“managed schema”), también conocidas como colecciones sin esquema (“schema-less”). En una colección de este tipo, cuando se insertan documentos en una colección, solr añade automáticamente a la configuración de la colección las definiciones de los campos que encuentra, determinando el tipo de datos que contienen a partir de los valores que encuentra en los primeros documentos en los que aparece el nuevo campo.

Esta funcionalidad hace muy sencillo crear una nueva colección a partir de un conjunto de datos de los que no se conoce con exactitud su contenido. Sin embargo, en ocasiones es necesario realizar ajustes a la configuración del esquema elaborado automáticamente. Para ello, hay que convertir la colección “schema-less” a una colección de “esquema clásico”, como se explica en este artículo.

Seguir leyendo »

 Publicado por en 9:00 am
Oct 262015
 

Instalación de SiLK

En primer lugar, para obtener el paquete de instalación debemos rellenar el formulario en la página http://lucidworks.com/products/silk/#download_form. Una vez enviado el formulario, recibiremos en la dirección de email que hemos introducido un mensaje con el enlace para la descarga.

El paquete descargado en nuestro caso se llama SiLK-1.5.zip y ocupa 290 Mb

Para realizar la instalación, basta con descomprimir el fichero zip en un directorio de nuestra elección. Una vez descomprimido, podemos ver que el paquete contiene tres directorios, para cada uno de los componentes principales de SiLK:

  • solr-4.10.3 – El motor de búsqueda solr
  • solrWriterForLogStash – Una versión de LogStash que procesa los ficheros de log de accesos del servidor web, y los almacena en un índice solr
  • banana – Es el front-end que presenta el resultado del proceso estadístico del los datos almacenados en solr en forma de gráficos y tablas en un navegador web

Instalación de Java

El motor de búsqueda solr utilizado por SiLK se ejecuta en una máquina virtual Java, por lo que debemos disponer de un entorno de ejecución de Java (JRE) previamente instalado y operativo. Alternativamente podemos instalar el kit de desarrollo de java (JDK), que además del JRE, contiene también un compilador y otras herramientas.

En un sistema Linux Debian, la instalación se puede realizar fácilmente con el comando apt-get:

# apt-get install default-jdk

A continuación comprobamos la versión de java instalada con la opción “-version”:

# java -version
java version "1.7.0_85"
OpenJDK Runtime Environment (IcedTea 2.6.1) (7u85-2.6.1-6+deb8u1)
OpenJDK 64-Bit Server VM (build 24.85-b03, mixed mode)

Configuración y ejecución de solr

El motor de búsqueda solr de ejemplo incluido en el paquete SiLK se ejecuta con los comandos:

$ cd SiLK-1.5/solr-4.10.3/SiLK
$ java -jar start.jar

Con esto, solr comienza a ejecutarse y queda a la espera de conexiones en el puerto 8983. Desde un navegador web, accedemos a la url “http://SERVIDOR:8983/solr”, y accedemos al frontend de solr:

SiLK-sample-collections

Como podemos ver, la instancia de solr ya contiene la definición de algunas colecciones de ejemplo. Entre ellas:

  • La colección “logstash_logs” es una colección vacía, preparada para que logstash almacene en ella los logs de acceso.
  • La colección “banana-int” es una colección vacía, preparada para almacenar en ella los paneles de control que se generen en banana.

Configuración y ejecución de LogStash

El componente LogStash de SiLK se encuentra en el directorio  “SiLK-1.5/solrWriterForLogStash/logstash_deploy”

Para ejecutar logstash, debemos preparar previamente un fichero de configuración “logstash_apache.conf” con tres secciones: input, filter y output.

Sección input

En esta sección se indican los ficheros de entrada a logstash.

input {
  file {
    path => "/path-al-directorio-de-ficheros-de-log/access.log"
    exclude => ["*.gz","*.zip","*.tgz"]
    type => "apache-access"
    sincedb_path => "apachelogs.sincedb"
    start_position => "beginning"
  }
}

Sección filter

filter {
  grok {

    type => "apache-access"
    patterns_dir => "./patterns"
    # See the following URL for a complete list of named patterns
    # logstash/grok ships with by default:
    # https://github.com/logstash/logstash/tree/master/patterns
    #
    # The grok filter will use the below pattern and on successful match use
    # any captured values as new fields in the event.

    pattern => "%{COMBINEDAPACHELOG}"
  }

  if ("_grokparsefailure" in [tags]) {
                drop{}
  }

  date {
    type => "apache-access"
    # Try to pull the timestamp from the 'timestamp' field (parsed above with
    # grok). The apache time format looks like: "18/Aug/2011:05:44:34 -0700"
    match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
  }

  mutate{
  #timestamp is a field used in LWS. Need to delete it here
        remove_field => [ "timestamp"]
  }

}

Sección output

output {
  stdout { debug => true codec => "rubydebug"}
  lucidworks_solr_lsv133 { collection_host => "localhost"
                           collection_port => "8983"
                           collection_name => "logstash_logs"
                           field_prefix => "event_"
                           force_commit => false
                           flush_size => 100 idle_flush_time => 1 }

}

Con este fichero de configuración, podemos ejecutar logstash con los comandos:

$ cd SiLK-1.5/solrWriterForLogStash/logstash_deploy
$ java -jar logstash-1.3.3-flatjar.jar agent -f logstash_apache.conf -p .

Típicamente, el fichero que se especifica en la sección input del fichero de configuración es un fichero de log de accesos “vivo”, sobre el que apache está registrando las solicitudes de acceso que se van recibiendo. Cuando logstash termina de procesar el contenido del fichero, continúa ejecutándose, y va procesando los nuevos registros conforme apache los va escribiendo en el fichero.

Si lo que queremos es procesar un fichero de log y que logstash finalice su ejecución cuando termine de procesarlo, deberemos cambiar la configuración de la sección input para que los datos a procesar se lean desde stdin:

input {
  stdin {
    type => "apache-access"
  }
}

y ejecutar logstash de la siguiente forma:

$ java -jar logstash-1.3.3-flatjar.jar agent -f logstash_apache.conf -p . < access.log

Configuración de banana

Para acceder a banana, basta con visitar desde un navegador la url:

http://localhost:8983/banana

si todo funciona correctamente, veremos el panel de control por defecto “Basic Dashboard with Pointers”:

banana-basic-dashboard

Si estamos utilizando una instancia de solr que se ejecuta en otro servidor, o en un puerto distinto del puerto por defecto 8983, deberemos editar el fichero de configuración :

SiLK-1.5/solr-4.10.3/SiLK/banana-webapp/webapp/config.js

En dicho fichero, deberemos especificar la url de acceso a solr, incluyendo el nombre completo del servidor y el puerto en el que da servicio.

A continuación podemos comenzar a definir y configurar paneles en los que se presentarán de forma gráfica las estadísticas que nos interesa obtener. Para no partir de cero, podemos descargar de github algunos ejemplos.

 Publicado por en 11:20 am
Mar 042015
 

La información social de Facebook puede ser accedida por programa, utilizando el “Graph API”. Facebook ha desarrollado una librería en PHP que simplifica la programación de aplicaciones que desean hacer uso de esta información.

En este artículo se explica la manera de utilizar esta librería para obtener información de lugares, negocios, etc mediante un script escrito en lenguaje PHP.

Seguir leyendo »

 Publicado por en 8:33 am
Abr 072014
 

WordPress es un sistema de gestión de contenidos (CMS) muy flexible; aunque se utiliza principalmente para implementar blogs internet, es posible utilizarlo también para otro tipo de sitios. En estos casos, algunas de las funcionalidades que ofrece por defecto pueden no resultar adecuadas. Este es el caso de los tags del tipo <link rel=”*”> que aparecen en el interior de la sección <head> del código HTML de una página o artículo.

En este artículo explicamos la manera de eliminar estos tags.

Seguir leyendo »

 Publicado por en 6:35 pm
Mar 022014
 

Un tooltip es un pequeño texto que se puede asociar a determinados elementos de la página, ya sean enlaces, campos de un formulario, imágenes, etc… y que típicamente contiene una descripción del elemento, información adicional o consejos útiles sobre el mismo.

Un tooltip sólo se visualiza cuando el usuario coloca el cursor sobre el elemento  al que está asociado, y por ello constituye un recurso excelente para ofrecer al usuario información complementaria sobre el contenido de una página, sin recargar excesivamente el contenido visible.

En este artículos examinamos las distintas técnicas existentes para la incorporación de tooltips a una pagina web.

Seguir leyendo »

 Publicado por en 8:07 pm
Ene 252014
 

Geonames es una base de datos de información geográfica que contiene datos sobre más de 10 millones de topónimos de todo el mundo, incluyendo poblaciones, ríos, montañas, etc…, a los que asocia unas coordenadas, altitud, y otros datos.

Esta base de datos se alimenta de distintas fuentes oficiales, y de la información proporcionada por usuarios de todo el mundo, siguiendo el modelo de “crowdsourcing” que tan buenos resultados da en este tipo de proyectos.

Geonames se ofrece gratuitamente, y puede ser consultada a traves de una serie de webservices, para los cuales existen librerías de cliente en distintos lenguages de programacion. Además, es posible descargar un volcado de la base de datos completa que se genera diariamente.

En este artículo se explica la manera de cargar el volcado de Geonames en una base de datos MySQL, y se analiza la estructura y el contenido de esta interesante base de datos. Seguir leyendo »

 Publicado por en 9:17 pm
Nov 172013
 

RoundCube es un frontend para el acceso al servicio de correo electrónico a través de un navegador web.

RoundCube no es un servidor de correo, sino un cliente que se conecta mediante protocolo IMAP a un servidor de correo previamente existente. Por lo tanto, antes de intentar utilizarlo debemos disponer de un servidor de correo operativo que implemente dicho protocolo. En un sistema Unix, la instalación típica de un servidor de correo se realiza con Postfix, y el protocolo IMAP lo proporciona Dovecot.

Pero no es necesario instalar un servidor de correo para utilizar RoundCube. RoundCube se puede instalar por separado, para ser utilizado con cualquier servidor de correo que tenga soporte IMAP (como por ejemplo, GMail).

En este artículo vamos a comentar la manera de integrar el servicio RoundCube en un servidor, en el que  suponemos que ya se dispone de:

  • un servidor Postfix+Dovecot operativo
  • un servidor web Apache y una base de datos MySQL. Es habitual disponer de estos servicios en un servidor de correo Postfix, porque permiten la administración del mismo mediante el frontend Postfixadmin

Seguir leyendo »

 Publicado por en 11:06 am