Instalar varias instancias de DSpace

Una de las fases de mi proyecto es proporcionar un repositorio de documentos para el grupo de investigación. He utilizado DSpace porque, en su momento, fue la herramienta elegida para montar Gredos, el repositorio institucional de la USAL.

Me ha costado bastante lograr que funcionara ya que a mi falta de experiencia con Tomcat se ha unido la necesidad de hacer la instalación en el mismo servidor en el que ya había otro DSpace. Esto último también ha sido una ventaja porque no he tenido que preocuparme de los requisitos de instalación, evitando así tener que instalar Tomcat, Postgres y Java.

Voy a explicar brevemente los pasos que he seguido basándome en este tutorial. He utilizado la versión 1.6.2 de DSpace y la 6.0.20 de Tomcat. [dspace-source] se refiere a /opt/dspace-1.6.2-src-release.

– Crear el usuario ‘dspace’ si no existe ya.

sudo useradd -M dspace
sudo passwd dspace

– Crear un directorio por cada instancia de DSpace que vayamos a instalar. En mi caso ya había una así que sólo tuve que crear un directorio. No es necesario que nuestras instancias se encuentren en /opt, vale cualquier otro directorio donde tengamos permisos de escritura.

sudo mkdir /opt/dspace-2
sudo chown dspace /opt/dspace-2
sudo chmod 777 /opt/dspace-2

– Creamos el usuario ‘dspace’ en ‘Postgres’ y una base de datos por cada instancia que vayamos a instalar.

sudo su postgres
createuser -U postgres -d -A -P dspace
createdb -U dspace -E UNICODE dspace-2

– Para cada instancia debemos definir un fichero de configuración en [dspace-source]/dspace/config. Para ello duplicamos el fichero por defecto dspace.cfg.

sudo cp [dspace-source]/config/dspace.cfg [dspace-source]/config/dspace-2.cfg

– Ahora editamos cada fichero de configuración y cambiamos las siguientes línea. Debe indicarse el puerto en el que esté configurado Tomcat.

dspace.dir = /opt/dspace-2
dspace.hostname = http://your-dspace-url
dspace.baseUrl = http://your-dspace-url:443
dspace.url = http://your-dspace-url:443/dspace-2
db.url = jdbc:postgresql://localhost:5432/dspace-2
db.username = dspace
db.password = contraseña-usuario-postgres-dspace

– Si se desea configurar el envío de correo hay que editar las siguientes líneas del fichero de configuración. En el ejemplo se muestran los parámetros que deben utilizarse para el envío a través de Gmail.

mail.server=smtp.gmail.com
mail.server.username = usuario-de-gmail
mail.server.password = contraseña-de-gmail
mail.from.address = dirección-de-email
feedback.recipient = dirección-de-email
mail.admin = dirección-de-email
# Descomentar las siguientes líneas
mail.extraproperties = mail.smtp.socketFactory.port=465, \
mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory, \
mail.smtp.socketFactory.fallback=false

– Otras opciones interesantes son las siguientes:

# Idioma por defecto
default.locale = es
# Idiomas que el usuario puede seleccionar
webui.supported.locales = es, en
# Si se desea evitar que cualquier usuario pueda registrarse
authentication.shib.autoregister = false
# En mi caso la opción anterior no realizaba bien su cometido así que habilité el siguiente parámetro e indiqué un dominio que no existe
# Este parámetro restringe el registro únicamente a aquellos emails que terminan en los dominios indicados.
authentication.password.domain.valid = xxx.xxx

– Accedemos al sistema como el usuario ‘dspace’ y generamos los paquetes de la instalación con maven.

cd [dspace-source]/dspace/
sudo su dspace
mvn package

-Instalamos cada una de las instancias utilizando los ficheros de configuración definidos anteriormente.

cd [dspace-source]/dspace/target/dspace-[version].dir/
sudo su dspace
ant -Dconfig=[dspace-source]/config/dspace-2.cfg fresh_install

– Añadimos una cuenta de administrador.

sudo -u dspace [dspace-instances]/dspace-2/bin/create-administrator

– Configuramos Tomcat.

sudo vim [TOMCAT_HOME]/conf/server.xml
<!-- DEFINE A CONTEXT PATH FOR DSpace JSP User Interface  -->
<Context path="/dspace-2" docBase="[dspace-instances]/dspace-2/webapps/jspui/"
debug="0" reloadable="true" cachingAllowed="false" allowLinking="true"/>

– Por último reiniciamos Tomcat y listo.Para comprobar que funciona correctamente basta acceder a la url que se indicó en el fichero de configuración: http://your-dspace-url:443/dspace-2

sudo /etc/init.d/tomcat start

Agorá

Hace mucho que no narro mis aventuras y desventuras con el proyecto pero, como todo últimamente, la escusa es la falta de tiempo. El propósito de entregar en septiembre se desvaneció a principios de mes pero aún así he seguido trabajando día y noche y ya se van viendo los resultados.

Tal vez este blog, o el propio gestor que lo contiene, parezca que no ha cambiado nada desde que lo lleno con aburridos posts pero desde hace unas semanas mis horas de trabajo han estado invertidas en él y al utilizarlo se pueden apreciar las mejoras realizadas. Versión imprimible, mejoras en el tema de WordPress, soporte para menús, incremento de la funcionalidad proporcionada a los usuarios, traducciones al español y desarrollo de plugins, son algunas de las tareas que he llevado a cabo.

Desarrollar plugins para WordPress y ver como la gente los va descargando es, sin duda alguna, la tarea más gratificante que he realizado para Agorá. Lo que me llevó a realizar estos desarrollos fue la inexistencia de plugins que cubrieran mis necesidades. Remarco este hecho porque me parece una pérdido de tiempo reimplementar algo que ya existe, aunque, como en todo, habrá excepciones.

Cuando monté Diarium, por aquel entonces sobre WPMU, los pocos plugins que existían de búsqueda a través de todos los blogs no funcionaban así que desarrollé el mío propio, WPMU Global Search. Ese desarrollo lo he seguido manteniendo y funciona con la última versión de WPMU existente. Luego tomé la decisión de que Agorá iría sobre WordPress Multisite así que me basé en mi viejo plugin para crear Multisite Global Search.

El otro plugin surgió de la necesidad de un widget que contuviera las etiquetas más usadas en todos los blogs y el único que había no me gustaba como funcionaba así que me puse manos a la obra y el resultado ha sido BuddyPress Activity Tags, un plugin que recoge las etiquetas más utilizadas en los posts que aparecen en la actividad reciente de BuddyPress.

Podría extenderme y explicar cómo funcionan porque son de esa manera y no de otra pero, si os interesa, lo mejor es que los probéis vosotros mismos.

Y la migración terminó

Me gusta WordPress, lo sencillo que es modificar su funcionamiento sin tener que tocar ningún fichero del core pero…odio lo resistente que es frente a migraciones. Aceptando el hecho de que les encanta propagar la ruta absoluta de los blogs por toda la base de datos, simplifiqué la migración a dos sencillos pasos, instalar un WordPress nuevo en un directorio nuevo e importar en él los pocos blogs que tenía en el antiguo. Una simple tarea que me ha llevado un día entero porque en el blog de un proyecto Comenius había una página en la que la mitad del contenido desaparecía por arte de magia. Sí, por arte de magia porque no hay otra explicación, la página se guardaba correctamente, se mostraba bien, en la base de datos se almacenaba correctamente, no existe ningún proceso en background que haga revisiones de posts/páginas ya guardados ni nada, y aún así volvías a mirar la página y la mitad del final había desaparecido. Después de muchas pruebas conseguí arreglarlo metiendo a pelo el contenido en la base de datos. Funciona. La causa no di con ella y hoy prefiero aceptar que fue magia, no tengo tiempo para indagar más. La migración está hecha.

WordPress 3.0

Terminada la primera fase de documentación, tras hartarme de realizar diagramas y documentar decisiones, he decidido dedicar la siguiente fase de desarrollo al gestor de blogs. Lo primero que tenía que hacer, antes de ponerme a documentar y desarrollar, era decidir si al final iba a migrar de WPMU a WordPress 3.0 con soporte para multisite. Así que me he pasado el fin de semana leyendo experiencias de otros usuarios, documentándome de los posibles problemas que podrían surgirme y, sobre todo, asegurándome de que los plugins que tengo ya seleccionados para que formen parte del core del gestor fueran compatibles con esta nueva versión. Quiero hacer incapié en que esto último no sería un problema si dispusiera del tiempo necesario para arreglar los bugs de aquellos que no funcionaran.

Al final después de tanto leer he pasado a la fase de experimentación, me he instalado un WordPress 3.0 en un servidor y me he puesto a hacer pruebas como loca. Ahora puedo decir que me encantan muchos de los cambios que han hecho, no son grandes cambios pero han mejorado la parte de administración muchísimo. Ya era hora de que la decisión de tener multisite o un único blog no estuviera sujeta a instalar herramientas diferentes y sobre todo, se terminó el buscar plugins compatibles con WPMU. Al código todavía no le he metido mano pero de momento he visto que da soporte para menús de una forma similar al manejo de los widgets. El único cambio que podría no ser muy acertado es permitir a los administradores que todo el código de los plugins y del tema se edite desde la interfaz web. Es cierto que dicho cambio es muy cómodo para evitar tener que trabajar en el servidor directamente pero me parece algo inseguro dejar tan al alcance ficheros en los que se puede escribir código PHP y desde los cuáles se pueden obtener toda la información contenida en la base de datos.

A pesar de este último comentario, tengo claro que voy a montar Agorá en un WordPress 3.0 porque los problemas que me podía causar ya están superados. Además, después de sopesar pros y contras, he decidido que voy a hacer una instalación desde cero y los pocos blogs que hay en el actual gestor los importo dentro del nuevo, así me evito problemas de migración entre sistemas y que me quede por ahí basura. Como voy a importar los blogs, el directorio donde se encuentre el nuevo WordPress no será un problema (parece una tontería pero WordPress es muy toca narices con las rutas porque no son relativas y las propaga por toda la base de datos).

Mañana más.

Todo gira en torno a Drupal

El centro de todo el portal 2.0 girará en torno a un CMS o gestor de contenidos que se conectará con diferentes herramientas web tales como un LMS o el gestor de blogs en el nos encuentramos ahora . Siguiendo la política de uso de software libre que se intenta promover en la Universidad de Salamanca, y manteniendo la línea que el director del grupo trazó para el portal institucional de la USAL cuando fue Vicerrector, el CMS elegido ha sido Drupal.

La elección del LMS tampoco ha supuesto ningún problema ya que, tanto desde el grupo como por mi parte, no había nada que discutir,  nuestros cursos se desarrollarán en Moodle entre otras razones porque tenemos mucha experiencia en el uso de dicha plataforma y con vistas a desarrollos futuros para la misma.

El gestor de blogs fue mi decisión, al igual que lo fue cuando se montó Diarium. En aquel momento contemplé diferentes formas de crear una estructura estable para albergar un gran número de blogs y la mejor solución fue WPMU ya que dicha herramienta surgió a partir de la experiencia que los desarrolladores de WordPress tuvieron con su propio gestor de blogs, WordPress.com, además de que existe una gran comunidad de desarrolladores que dan soporte a la misma. Por desgracia, o tal vez por suerte, desde hace unos días está disponible la versión 3.0 de WordPress, la cual ha incluido en su core aquella funcionalidad de WPMU que permitía tener múltiples blogs. De esta forma pretenden evitar que el mantenimiento de WPMU quedara desatendido, ya que ahora sólo tienen que mejorar un único producto. La elección de WordPress como gestor de blogs no ha cambiado, pero seguramente [crucemoslosdedos]migre todo este sistema a esa versión 3.0. [/crucemoslosdedos]

Pero no sólo WordPress tiene este verano una nueva versión, los desarrolladores de Drupal y Moodle también se han confabulado para que tenga que tomar la difícil decisión de migrar los sistemas a mitad de proyecto. Grial está ahora en un Drupal 6 y resulta que hace un par de semanas han puesto a disposición de los usuarios la versión 7, la cual ya maneja OO (Orientación a Objetos). Y no hablemos de Moodle, años sin soporte para servicios web y este verano…versión 2.0 orientada a servicios, toma ya. Es cierto que actualizar me permitirá disfrutar de las ventajas y las mejoras de las nuevas versiones, pero también me traerá dolores de cabeza lidiando con toda clase de bugs que suelen encontrarse cuando un producto lleva poco tiempo en explotación. [broma]Al final lanzaré una moneda y que decida la suerte.[/broma]

Al menos me queda el consuelo de que todas estas maravillosas herramientas están hechas en PHP así que me voy a sentir como pez en el agua trasteando con sus tripas.