Posted by & filed under gnu/linux, solr.

Hace ya más de un mes que no pasaba por aquí más que para ver las estadísticas del blog; así que ya es hora de que me siente a escribir algo y compartir con el resto de internet.

Hoy vengo hablando, o escribiendo, sobre cómo instalar / montar una instancia de Solr sobre Jetty, porque esta semana pasada me surgió la necesidad de montar una instancia y hemos tenido que pelear un poco para hacerlo, así que he decidido crear una receta muy simple para tenerlo funcionando rápidamente y siguiendo unos pasos muy sencillos. Pero empecemos por el principio…

¿Qué es Solr?

Solr es la plataforma de búsqueda de código abierto del proyecto Apache Lucene. Es una plataforma de búsqueda muy popular y rápida; está escrita en Java y se ejecuta de forma independiente dentro de un servidor de aplicaciones como pueder ser Tomcat o Jetty. Podéis encontrar mucha más información de Sorl en su página oficial.

Preparativos

Antes de empezar con la instalación de Solr necesitamos tener instalados varios paquetes en nuestro sistema. En mi caso, y a la hora de escribir este post, estoy utilizando una distribución Ubuntu; y muchos pensaréis que es tan fácil como hacer un apt-get install solr-jetty solr-common pero mi necesidad surgió en una distribución Debian Squeeze, y no contaba con Solr en mi sistema de paquetería. De todas formas, este post tiene como fin poder instalar un Solr sin necesidad de utilizar el sistema de paquetería de nuestra distribución y poder utilizar una versión más nueva de Solr que la empaquetada en esta. Así que necesitaremos:

Java

Necesitaremos la máquina virtual de Java para poder ejecutar Solr dentro de nuestro contenedor de aplicaciones Jetty. Podemos buscar el paquete referente a openjdk en nuestra distribución. En mi caso, tengo instalado varios paquetes referentes a openjdk-7:

$ dpkg -l |grep openjdk |awk '{print $2}'
openjdk-7-jre:amd64
openjdk-7-jre-headless:amd64
openjdk-7-jre-lib

Para comprobar que tenemos java correctamente instalado y conocer la versión que vamos a utilizar podemos ejecutar la siguiente instrucción:

$ java -version
java version "1.7.0_21"
Java(TM) SE Runtime Environment (build 1.7.0_21-b11)
Java HotSpot(TM) 64-Bit Server VM (build 23.21-b01, mixed mode)

Jetty

Instalaremos el servidor de aplicaciones Jetty utilizando nuestro sistema de paquetería igual que hemos hecho con Java. Así que en distribuciones basadas en Debian utilizaremos la siguiente instrucción para su instalación:

$ sudo apt-get install jetty libjetty-extra

Solr

Como he comentado antes, en este caso no vamos a instalar Solr desde el sistema de paquetería, pues yo no tuve esa posibilidad y mi intención es compartir la forma de hacerlo de que exista un paquete en los repositorios, como era mi caso.

Descargar y descomprimir Solr

Descargaremos y descomprimiremos la última versión disponible de Solr en este momento, la versión 4.2.1:

$ cd /opt
$ sudo wget http://apache.rediris.es/lucene/solr/4.2.1/solr-4.2.1.tgz
$ tar xzf solr-4.2.1.tgz && mv solr-4.2.1 solr

Crearemos el directorio /usr/share/solr y descomprimiremos dentro de él el contenido de dist/solr-4.2.1.war:

$ sudo mkdir /usr/share/solr
$ cd /usr/share/solr
$ sudo unzip /opt/solr/dist/solr-4.2.1.war

Esta última instrucción descomprime los ficheros web de Solr en el directorio /usr/share/solr teniendo este el siguiente contenido:

$ ls
admin.html  css  favicon.ico  img  js  META-INF  mgc  solr.xml  tpl  WEB-INF

Añadiendo Solr a Jetty

Para instalar Solr como aplicación dentro de Jetty, crearemos un enlace simbólico de /usr/share/solr en /usr/share/jetty/webapps:

$ sudo ln -s /usr/share/solr /usr/share/jetty/webbaps/solr

NOTA: /usr/share/jetty es el directorio donde se encuentra instalado Jetty en nuestra distribución. Puedes consultarlo ejecutando: dpkg -L jetty.

Esto quiere decir que nuestra instancia de Solr va a ser accesible en http://localhost:8080/solr

Configurando Jetty

Editaremos el fichero /etc/default/jetty a través del cual podremos modificar el comportamiento de éste sin necesidad de modificar sus ficheros de configuración XML.

En mi caso he incluido las siguientes lineas:

NO_START=0
VERBOSE=yes
JETTY_PORT=8080
JETTY_HOST=0.0.0.0
JAVA_OPTIONS="-Dsolr.solr.home=/usr/share/solr $JAVA_OPTIONS"
JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
  • NO_START=0: permite que Jetty se ejecute. Si el valor es 1, Jetty no podrá ejecutarse.
  • VERBOSE=yes: indica a Jetty que queremos que nos muestra mucha más información durante su ejecución. Muy recomendable sobre todo cuando se intenta depurar un error.
  • JETTY_PORT=8080: puerto en el que escuchará Jetty. En este caso se utiliza el puerto por defecto, pero se puede establecer cualquier otro siempre y cuand o no se encuentra ya en uso en el sistema.
  • JETTY_HOST=0.0.0.0: indica a Jetty que escuche en todas las interfaces de red y no solo en localhost. Aunque es recomendable que escuche solo en localhost, sobre todo si se encuentra instalada en el mismo servidor donde se encuentra la aplicación.
  • JAVA_OPTIONS: opciones y parámetros que se pueden pasar a la máquina virtual de Java.
  • JAVA_HOME: indica el directorio HOME de la máquina virtual de Java. Es posible descubrirlo ejecutando dpkg -L openjdk-7-jre.

Añadiendo Cores a Solr

Es necesario configurar al menos un Core en Solr para que podamos hacer uso de él, así que editaremos el fichero /usr/share/solr/solr.xml:

$ sudo vim /usr/share/solr/solr.xml

y añadiremos algo como lo siguiente:

<solr persistent="true">
 <cores adminPath="/admin/cores">
   <core name="mysitename" instanceDir="mysitename" dataDir="/var/lib/solr/mysitename/data" />
 </cores>
</solr>

Esto añade un Core llamado mysitename. Ahora crearemos el directorio del Core que acabamos de configurar:

$ sudo mkdir -p /var/lib/solr/mysitename/data

Y establecemos jetty como propietario y grupo a los directorios /var/lib/solr y /usr/share/solr:

$ sudo chown -R jetty:jetty /var/lib/solr/
$ sudo chown -R jetty:jetty /usr/share/solr

Configurando el Core

Tal y como hemos hecho antes, tenemos que crear el directorio que alojará la configuración para el Core mysitename:

$ sudo mkdir -p /usr/share/solr/mysitename

Y si aún no tenemos una configuración disponible, podemos copiar la configuración de ejemplo que viene incluida con Solr y que se encuentra en el directorio example:

$ sudo cp -r /opt/solr/example/solr/collection1/conf/ /usr/share/solr/mysitename/

Reiniciar Jetty

Por último y para terminar solo nos quedaría reiniciar el servido Jetty:

$ sudo service jetty restart

Si todo va bien, Solr debería estar accesible en http://localhost:8080/solr

Y esto es todo! Espero que os sirva de ayuda, a mi seguro que me va a ser muy útil cuando tenga que montar un Solr de nuevo.

Un saludo, Manu.

Posted by & filed under mongodb.

En mi anterior post hablaba sobre cómo empezar con MongoDB, una base de datos NoSQL orientada a documentos; y como sigo estudiándola y me parece interesante, me gustaría seguir compartiendo y profundizando sobre el uso de MongoDB, así que he decidido escribir una segunda parte de este anterior post.

El objetivo de este post es bien sencillo. Cubrirá las operaciones principales básicas de MongoDB, también conocidas como operaciones CRUD, que significa C reate, R ead, U pdate y D elete. ¡Así que empecemos con ello!

Read more »

Posted by & filed under mongodb.

Normalmente muchos de los que nos dedicamos a la informática, cuando escuchamos el término base de datos o database (en inglés) pensamos directamente en un tipo de base de datos, las bases de datos relacionales, como MySQL, PostgreSQL, etc; quizás porque son las más comunes y utilizadas durante mucho tiempo. Pero esto está cambiando.

Desde hace un tiempo hasta ahora han ido proliferando otro tipo de base de datos conocidas como NoSQL y seguro que conocéis algunas como: Memcached, una caché tipo clave-valor en RAM, su variante MemcacheDB que almacena datos clave-valor en disco usando BerkeleyDB, Redis otra base de datos de tipo clave-valor, o MongoDB que a diferencia de las anteriores, está orientada a documentos.

Read more »

Posted by & filed under gnu/linux.

Hoy me he encontrado con el término sparse file y realmente no lo conocía, aunque puede que os pase como a mi, que después de que os diga qué es, muchos de vosotros ya sabíais de su existencia e incluso es muy probable que hayáis trabajado con este tipo de ficheros. Pero…

¿Qué es un sparse file?

Un sparse file es un tipo de fichero el cual se crea con un tamaño específico pero no se reserva dicho espacio en el sistema de ficheros inicialmente. Su tamaño irá creciendo a medida que vaya siendo necesario. Por ejemplo, podríamos crear un fichero cuyo tamaño máximo sea 2G pero que inicialmente en nuestro sistema de ficheros ocupe 0 bytes.

Read more »

Posted by & filed under nginx.

De regalo de Reyes os traigo un post bastante sencillo sobre Nginx. Se trata de configurar Nginx para que funcione como un proxy HTTP, pero antes de nada…

¿Qué es un proxy?

Un proxy no es más que un intermediario, que es el significado que tiene la palabra proxy en inglés, en la comunicación que se realiza entre dos puntos. Por ejemplo, entre un cliente, que puede ser un navegador web, petición Ajax, etc; y un servidor.

Read more »

Posted by & filed under offtopic.

 

Bueno pues el 2012 ya está a punto de terminar, ya solo quedan horas. Llevo ya un buen rato pensando, intentando resumir lo que ha sido mi 2012 y no se si es que han pasado muchas cosas, pocas o es que estoy empezando a perder la memoria :-)

Mi 2012 no ha sido malo en general, comparado con la situación de mucha gente en España, ya que aun estando la situación como está, se me ha permitido seguir el camino que yo creo que es correcto. Y si no es el correcto, tampoco es el malo.

Estoy contento, porque este año he alcanzado algún objetivo que otro, como conseguir la certificación LPIC-1 Junior Level Linux CertificationNovell Certified Linux Administrator (CLA); además de seguir mejorando mi inglés hablado. También he estado estudiando HTML5, CSS3, Javascript; los cuales seguiré aprendiendo en 2013.

En julio viajé a Alemania, concretamente estuvimos recorriendo Baviera, visitando lugares como Núrember, Bamberg, Rothenburg ob der Taube…; y viviendo situaciones que no olvidaremos en mucho tiempo.

Sigo escribiendo en este blog, uno de los objetivos del año pasado (aunque debería escribir más a menudo); y también sigo aprendiendo música y a tocar la guitarra, afición que descubrí a finales del pasado 2011.

Sin embargo, este año también ha tenido situaciones difíciles para mí, sobre todo cuando decidí dejar de trabajar en Yaco Sistemas.

Tenemos que mirar a 2013 con una mirada positiva, de superación y mejora personal. Si puedo pedir algo, será salud. Y como objetivos para el nuevo año: procastinar menos, seguir aprendiendo, y no perder la fuerza de voluntad por seguir adelante.

De momento esta noche la voy a pasar cenando con mi familia y celebrándolo después con mis mejores amigos… ¿se puede pedir más?

Esta noche brindemos por los que están y por los que ya no están pero que siguen “estando”…

Os deseo a tod@s un ¡Feliz año nuevo 2013!

Un abrazo,

Manu.

Posted by & filed under nginx.

Nginx

Hace bastante tiempo que tengo en mente escribir un post sobre Nginx (pronunciado como Engine X), aunque ya lo he comentado en algún otro post anterior, y creo que hoy va a ser el día. No por nada en especial, si no porque me apetece compartirlo y además es un servidor web que me gusta mucho y que, en ciertos aspectos, ha ido conquistando terreno de otros servidores web.

Read more »

Posted by & filed under gnu/linux.

Añadir nuevas fuentes a mi sistema Linux siempre ha sido una incógnita, al menos para mí. Supongo que es algo por lo que no me he preocupado demasiado o que quizás no me haya hecho falta saberlo, hasta ahora.

El objetivo de este post, añadir nuevas fuentes a nuestro sistema GNU/Linux, está relacionado directamente con nuestro servidor X, es decir, nuestro servidor gráfico. Creo que este siempre ha sido un punto problemático en GNU/Linux ya que agregar una tipografía nueva a nuestro sistema no es tan sencillo como hacerlo, por ejemplo, en otro sistema operativo como Microsoft Windows, que básicamente consiste en copiar los ficheros de las fuentes en un directorio.

Pero empecemos por el principio…

Read more »

Posted by & filed under osx.

Aunque mi sistema operativo favorito es GNU/Linux, y es el que uso a diario; también suelo usar OS X para temas multimedia, retoque fotográfico, creación de vídeos caseros, etc.

Hace algún tiempo me prestaron el DVD de actualización de Snow Leopard, y me actualicé para probar las nuevas features del sistema operativo de la manzanita. El caso es que hace no mucho tiempo decidí reinstalar el sistema de mi Mac, y claro, ya no tenía el DVD de Snow Leopard que me prestaron, así que tuve que volver a la versión de OS X que tenía, Leopard.

Read more »

Posted by & filed under gnu/linux.

Ahora mismo estoy preparándome para obtener la certificación LPIC-1 y uno de los objetivos del tema que estoy estudiando es conocer y saber utilizar umask, pero me ha parecido que la documentación no es muy clara, al menos en el libro LPIC-1: Linux Professional Institute Certification: Guia de estudio: Examenes 101 y 102, que es el que estoy leyendo.

He buscado en otros libros de GNU/Linux y administración de sistemas que tengo, y tampoco me ha dejado satisfecho. Así que he decidido escribir este post con lo que se acerca de umask y aportar mi humilde granito de arena.
Read more »