Skip to main content

Instalación Solr 4.x sobre Tomcat 7 en Debian 7

Dependiendo de tus necesidades puedes hacer la instalación a través de la paquetería o manualmente. Instalar de paquetería siempre es más cómodo así como las actualizaciones pero en función de los repositorios que utilices puede estar obsoleta de forma que queda en tus manos tomar la decisión. Dado que esta es una configuración básica para montar un servicio rápido de solr para pruebas, local etc.. las siguientes directrices son sobre paquetería:

 

Instalación de java:

 

Instalamos la paquetería básica de java.

# aptitude install openjdk-7-jre-headless

Opcional:

# aptitude install java7-jdk

 

 

Instalación de tomcat:

 

Base:

# apt-get install tomcat7

Panel de administración:

# apt-get install tomcat7-admin

Comprobar que está funcionando:

# service tomcat7 start

El puerto por defecto de tomcat7 es 8080, podemos comprobarlo yendo a

http://localhost:8080

o

http://{IP}:8080/

Dado que el puerto

8080

suele ser utilizado por otros servicios podemos cambiar el puerto (por ejemplo 8983) con la siguiente instrucción.

# sed -i s/8080/8983/g /usr/local/tomcat/conf/server.xml
# service tomcat7 restart

 

 

Autentificación

 

Por razones de seguridad (a parte de firewall que podamos introducir) vamos a añadir un usuario y password para controlar el acceso.

Editamos el fichero:

tomcat-users.xml # vim /etc/tomcat7/tomcat-users.xml

Incluimos las siguientes instrucciones antes del final del cierre:

</tomcat-users>
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="your_username" password="your_password" roles="manager-gui,admin-gui"/>

Reiniciamos la máquina:

# service tomcat7 restart

 

 

Instalación de Solr

 

Descargamos última versión de 4.x (http://www.apache.org/dyn/closer.cgi/lucene/solr)

 # wget http://archive.apache.org/dist/lucene/solr/4.10.0/solr-4.10.0.tgz | tar xz

Partimos de la configuración por defecto del ejemplo de Solr y la incluimos en el class path de tomcat.

Nota: El directorio classpath de tomcat contiene enlaces simbólicos a los JAR de

/usr/share/java

Puedes hacer lo mismo si quieres con los de solr, dado que solo vamos a usar Solr desde tomcat preferimos incluirlo directamente (en futuras actualizaciones solo necesitarás remplazarlo).

 # cp ~/solr-4.10.0/example/lib/ext/* /usr/share/tomcat7/lib/

Incluimos los WAR de Solr dentro del directorio de webapps de Tomcat’s webapps para que Tomcat pueda desplegar la aplicación.

Nota: por defecto tomcat despliega los WAR en carpetas con el mismo nombre de forma que una vez que se haya desplegado el directorio

/var/lib/tomcat7/webapps/solr

debe de existir. El servicio se ejecutará desde éste.

# cp ~/solr-4.10.0/dist/solr-4.10.0.war /var/lib/tomcat7/webapps/solr.war

 

 

Catalina

 

Catalina es un servlet container de Tomcat: el componente del servidor Tomcat que interactúa con los Java servlets.

Copiamos los ficheros de ejemplo de solr al directorio de Catalina:

/var/lib/tomcat7

y fijamos los permisos para que Tomcat pueda interactuar.

# cp -R ~/solr-4.10.0/example/solr /var/lib/tomcat7
# chown -R tomcat7:tomcat7 /var/lib/tomcat7/solr

La aplicación de Solr debe de aparecer listada en ejecución en:

http://localhost:8080/manager/html

Reiniciamos el servicio para comprobar que se ha configurado todo correctamente.

# service tomcat7 restart

En este punto Solr estará ejecutándose en

http://localhost:8080/solr.

 

Autentificación

 

Por temas de seguridad añadimos protección de acceso a solr.

# service tomcat7 stop

Incluso si el puerto 8080 no es accesible públicamente, es una buena idea fijar una autentificación para prevenir accesos no autorizados internos.

Editamos el fichero

/var/lib/tomcat7/webapps/solr/WEB-INF/web.xml

(Incluye la configuración de la app de Solr).

# vim /var/lib/tomcat7/webapps/solr/WEB-INF/web.xml

Añadimos las siguientes instrucción antes del cierre:

<security-constraint>
  <web-resource-collection>
    <web-resource-name>Solr GUI Authentication</web-resource-name>
    <url-pattern>/*</url-pattern>
    <http-method>GET</http-method>
    <http-method>POST</http-method>
  </web-resource-collection>
  <auth-constraint>
    <role-name>solr-gui</role-name>
  </auth-constraint>
 
  <user-data-constraint>
    <transport-guarantee>NONE</transport-guarantee>
  </user-data-constraint>
</security-constraint>
 
<login-config>
  <auth-method>BASIC</auth-method>
</login-config>

Esto añade una autenticación HTTP básica (usuario y contraseña) para el rol

solr-gui

Editamos de nuevo el fichero /etc/tomcat7/tomcat-users.xml para añadir un usuario con el rol creado:

<user username="your_username" password="your_password" roles="solr-gui"/>

Reiniciamos:

# service tomcat7 restart

Comprobamos que accediendo a

http://localhost:8080/solr 

ahora nos pide las credenciales. Igualmente podíamos haber utilizado el mismo usuario de antes con añadiendo el nuevo rol

solr-gui
<user username="your_username" password="your_password" roles="manager-gui,admin-gui,solr-gui"/>

Disfruta de tu nuevo solr!

Jorge Tutor

Jorge Tutor

CIO