Inicio » howto » Integración de Solr y Drupal 7.x
Jun
06

Antes de comenzar la instalación es necesario asegurarse que se tiene instalado Java 5 o superior y como mínimo PHP 5.2.4. Para este caso se ha utilizado un servidor con las siguientes versiones:

  • Ubuntu Server 12.04
  • PHP 5.3.10
  • Apache/2.2.22
  • Java 6

En primer lugar se debe instalar el módulo de Drupal Apache Solr Search Integration (http://drupal.org/project/apachesolr). Se ha trabajado con la versión 7.x-1.2 del módulo.

Antes de activar el módulo es necesario realizar la instalación de Solr (http://lucene.apache.org/solr). A pesar de que existan paquetes para Solr en Debian y en Ubuntu, para que la integración funcione con Drupal se ha descargado la última versión de la página oficial (Solr 3.6.2 – http://www.apache.org/dyn/closer.cgi/lucene/solr/3.6.2).

Para instalar el servidor Solr se han seguido los siguientes pasos:

  1. Descomprimir apache-solr-3.6.2.zip en el directorio /opt siempre y cuando este no sea visible para el servidor web.
    cd /opt
    sudo unzip apache-solr-3.6.2.zip
  2. Los ficheros de configuración de Solr se encuentran en apache-solr-3.6.2/example/solr/conf. Se deben sustituir dichos ficheros por los que proporciona el módulo de Drupal:
    cd apache-solr-3.6.2/example/solr/conf
    sudo mv solrconfig.xml solrconfig.xml.bak
    sudo cp [DIR DRUPAL]/sites/all/modules/apachesolr/solr-conf/solr-3.x/solrconfig.xml .
    sudo mv schema.xml schema.xml.bak
    sudo cp [DIR DRUPAL]/sites/all/modules/apachesolr/solr-conf/solr-3.x/schema.xml .
    sudo mv protwords.txt protwords.txt.bak
    sudo cp [DIR DRUPAL]/sites/all/modules/apachesolr/solr-conf/solr-3.x/protwords.txt .
  3. El módulo de Drupal incluye además varios ficheros de configuración adicionales que se deben copiar dentro del directorio de configuración de Solr.
    cd apache-solr-3.6.2/example/solr/conf
    sudo cp [DIR DRUPAL]/sites/all/modules/apachesolr/solr-conf/solr-3.x/solrconf_extra.xml .
    sudo cp [DIR DRUPAL]/sites/all/modules/apachesolr/solr-conf/solr-3.x/solrcore.properties .
  4. Es recomendable incluir una lista de palabras vacías para optimizar la indexación de los contenidos. Se pueden encontrar listas de palabras vacías para una gran número de idiomas en http://code.google.com/p/stop-words/. Para este caso el contenido que se va a indexar está en español por lo que se ha descargado la lista de palabras vacías en español.
    sudo mv stopwords.txt stopwords.txt.bak
  5. Finalmente lanzamos Jetty con Solr.
    sudo java -jar /opt/apache-solr-3.6.2/example/start.jar

Para comprobar que el servidor Solr está funcionando correctamente se debe acceder a la siguiente url http://[TU DOMINIO]:8983/solr/admin. Asegúrate que el puerto 8983 es accesibles. En caso contrario puedes abrirlo o cambiar el puerto en el fichero de configuración de Jetty.

En /opt/apache-solr-3.6.2/example/etc/jetty.xml cambia el puerto por defecto 8983 por otro que no sea el 80:

<Call name="addConnector">
[...]
<Set name="port"><SystemProperty name="jetty.port" default="8983"/></Set>

Servidor Solr con autenticación HTTP

Para proteger la página de administración del servidor Solr mediante autenticación HTTP se han seguido las indicaciones que se encuentran en la siguiente página http://www.shayanderson.com/linux/how-to-password-protect-apache-solr-server-admin-pages.htm. En primer lugar, en el fichero /opt/apache-solr-6.3.2/example/etc/jetty.xml se debe descomentar el siguiente fragmento de código, asegurándose que se sustituye Test Realm por Solr Admin Auth.

[...]
<Set name="UserRealms">
<Array type="org.mortbay.jetty.security.UserRealm">
<Item>
<New>
<Set name="name">Solr Admin Auth</Set>
<Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set>
<Set name="refreshInterval">0</Set>
</New>
</Item>
</Array>
</Set>
[...]

Después se edita /opt/apache-solr-6.3.2/example/etc/webdefault.xml y se añade al final del fichero el siguiente fragmento de código:

[...]
</locale-encoding-mapping-list>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Solr Admin Auth</realm-name>
</login-config>
<security-constraint>
<web-resource-collection>
<web-resource-name>Solr Admin Auth</web-resource-name>
<url-pattern>/admin/*</url-pattern>
<url-pattern>/update/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
</web-app>

A continuación se crea el fichero realm.properties en /opt/apache-solr-6.3.2/example/etc en el que se debe indicar el nombre de usuario, la contraseña y el identificador (role-name) que en este caso es admin:

username: password, admin

Para que el módulo de Drupal funcione con autenticación HTTP se debe indicar el usuario y la contraseña en el campo de la URL del servidor Solr:

http://username:password@localhost:8983/solr

Script en init.d

Para terminar, creamos un script en init.d para iniciar y parar el servidor Solr:

#!/bin/sh -e

# Starts, stops, and restarts solr

SOLR_DIR="/opt/apache-solr-3.6.2/example"
JAVA_OPTIONS="-Xmx1024m -DSTOP.PORT=8079 -DSTOP.KEY=stopkey -jar start.jar"
LOG_FILE="/var/log/solr.log"
JAVA="/usr/bin/java"

case $1 in
start)
echo "Starting Solr"
cd $SOLR_DIR
$JAVA $JAVA_OPTIONS 2> $LOG_FILE &
;;
stop)
echo "Stopping Solr"
cd $SOLR_DIR
$JAVA $JAVA_OPTIONS --stop
;;
restart)
$0 stop
sleep 1
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}" >&2
exit 1
;;
esac

(fuente: http://lucene.472066.n3.nabble.com/solr-init-d-script-td1867519.html)

 

Añadir comentario

*

* Campos obligatorios