jueves, 4 de septiembre de 2014

Solución Dspace Jspui Internal System Error


Si usted instalo Dspace posiblemente encontró este error:




Después de leer muchos foros encontré que esto es provocado por una configuración inadecuada para solr en [dspace src]/build.properties.


Antecedentes

Instalación de Dspace

  • Debian 7
  • Uso de tomcat7
  • Compilación con Openjdk7-jdk
  • Instalación de dspace-4.2 mediante src
  • Copia de la carpeta dspace/webapps/solr a tomcat7/webapps/



Problema

Una vez instalado Dspace al entrar a jspui se encuentra el mensaje Internal System Error, el cual es desconcertante.

Lo primero que hay que hacer es verificar los logs que se encuentran en [dspace]/log
Ahi encontramos que:

No hay permisos en los directorios para que pueda funcionar solr.

Lo cual lo solucionamos con mi anterior post: dspace-y-solr-problemas-al-ejecutar

Después de solucionar esa parte, y ver que solr funcionaba perfectamente al ingresar de manera local al servidor http://localhost:8080/solr

resulto que jspui seguía con el mensaje de Internal system error.

Entonces volvimos a los logs y encontramos ahora este nuevo error:

org.apache.catalina.core.StandardWrapperValve invoke GRAVE: El Servlet.service() para el servlet [jsp] en el contexto con ruta [/jspui] lanzo la excepcion [org.apache.jasper.JasperException: javax.servlet.ServletException: org.dspace.plugin.PluginException: org.dspace.app.webui.components.RecentSubmissionsException: org.dspace.browse.BrowseException: org.dspace.discovery.SearchServiceException: Server at http://192.168.1.1:8080/solr/search returned non ok status:403, message:Prohibido] 

Como Resolverlo

El problema en realidad es que al configurar los detalles de Dspace debemos especificar el uso de  solr de manera local, tomando en cuenta que solr solo responde a peticiones locales (No encontré como darle salida a una petición externa, ya que por default prohíbe el monitoreo externo)

Lo que hice fue recompilar Dspace ya que no encontré donde cambiar la ruta en Dspace que apunta a Solr.


Primero borramos las carpetas de las aplicaciones de Dspace en tomcat7

#  cd  /var/lib/tomcat7/
#  cd webapps/
# rm -R jspui/
#  rm -r oai/
# rm -r xmlui/
#  rm -r solr/

y desde http://tuservidor:8080/manager/ paramos y desplegamos las tres aplicaciones.

Entonces entramos a [dspace-src]/dspace y editamos el archivo  build.properties

# cd /home/cated/src/dspace-4.2-src-release/
# nano build.properties

solr.server=http://localhost:8080/solr

Guardamos con Ctrl + o

y seguimos los pasos para recompilar  Dspace: Rebuild Dspace 

en resumen, 

# su dspace
# cd /home/cated/src/dspace-4.2-src-release/dspace/
mvn package
cd [dspace-source]/dspace/target/dspace-[version]-build.dir/
ant update

vaya a su directorio dspace

# cd /ruta/dspace/webapps
# cp jspui /var/lib/tomcat7/webapps/
# cp -R jspui /var/lib/tomcat7/webapps/
# cp -R oai/ /var/lib/tomcat7/webapps/
# cp -R xmlui/ /var/lib/tomcat7/webapps/
# cp -R solr/ /var/lib/tomcat7/webapps/

# /etc/init.d/./tomcat7 restart

Verificamos que todo funcione bien 


http://tuservidor:8080/manager/

y verificamos nuestro jspui de Dspace

http://tuservidor:8080/jspui




¡¡Felicidades, ya está funcionando al 100!!


Notas finales

Como pueden observar son detalles que se nos llegan a pasar. Pronto, en un nuevo post: Como crear un tema personalizado para Dspace.







miércoles, 3 de septiembre de 2014

Dspace y solr: Problemas al ejecutar solr # Cannot create directory

Al instalar Dspace 4.2 encontré que había un error al utilizar solr

Antecedentes


  • Debian 7
  • Uso de tomcat7
  • Compilación con Openjdk7-jdk
  • Instalación de dspace-4.2 mediante src
  • Copia de la carpeta dspace/webapps/solr a tomcat7/webapps/


Problema
Como lo hacia desde una  maquina cliente, no veía que solr tenia problemas de funcionamiento.

Para ver la salida desde la consola basta con un 

root@magma#wget http://localhost:8080/solr > salida.html

Lo cual devuelve lo siguiente:

search: org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: Cannot create directory: /usr/local/dspace/solr/search/data/index
statistics: org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: Cannot create directory: /usr/local/dspace/solr/statistics/data/index
oai: org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: Cannot create directory: /usr/local/dspace/solr/oai/data/index


Como Resolverlo

Vaya a su Directorio Dspace

root@magma# cd /dspace/

cambie la asignación de propiedad de la carpeta solr/  (solo a la carpeta sin recursividad)

root@magma# chown tomcat7:dspace solr/

cambie los permisos de las carpetas statistics/  search/ oai/


root@magma# chmod 775  statistics/
root@magma# chmod 775  search/
root@magma# chmod 775  oai/

reinicie tomcat

root@magma#/etc/init.d/./tomcat7 restart

Vuelva a general el archivo de salida.

root@magma#wget http://localhost:8080/solr > salida2.html

Notas finales 

Como ven, esto lo soluciona sin problema, la salida muestra datos donde funciona.
(Recomendable verificar en un navegador de manera local en el servidor http://localhost:8080/solr/ y puedan ver las estadísticas y el funcionamiento) 



viernes, 7 de febrero de 2014

Usar YUI de un repositorio local

Hace meses comencé a trabajar con YUI (Yahoo User Interface ) un framework de javascript que te permite manejar efectos y acceder a un sin fin de funciones para dar una apariencia más dinámica a los sitios web.

Todo funcionaba bien, hasta que en una muestra me quede sin Internet, entonces el sitio no funciona por que hace peticiones la librería al servidor en línea de Yahoo donde están alojadas las librerías. Aun cuando descargues yui-min.js si utilizas algún módulo extra este es solicitado a yahoo.

Buscando en todas las páginas oficiales encontre la solución. Primero hay que bajar todo el framework en https://github.com/yui/yui3/releases , en mi caso baje http://yui.zenfs.com/releases/yui3/yui_3.14.1.zip 

Descomprimimos y lo colocamos en alguna carpeta a la que pueda acceder nuestro proyecto en nuestro servidor local, por ejemplo:  elproyecto/librerias/yui/

En la página html agregamos: 


<script type="text/javascript" src="yui-min.js"></script>

en este caso, es la librería básica para usar YUI

y después agregamos


<script>
<!-- 

var Y = YUI({base: 'librerias/yui/build/'});

Y.use('node', 'json','node-load', function(Y) {
  
  //// codigo a ejecutar
  
 });


y esto es lo suficiente para que trabaje YUI de manera local.

Saludos