Logotipo de AlfrescoDespués de un aparente periodo vacacional de más de un mes sin publicar nada, es hora de volver con las pilas cargadas. ¿Y qué mejor que hacerlo con uno de esos proyectos que dan algo de miedito? Casualmente, ayer, mi amiga Laura me planteó el reto: Necesitaba actualizar un Alfresco Community 4.2.c a la versión 5.0.a.

La cantidad de distintas tecnologías que componen Alfresco y la sensibilidad de la información que estamos tratando (todos los contenidos de la organización) nos hace extremar las precauciones y temernos lo peor. Afortunadamente, el proceso de actualización ha resultado ser mucho más sencillo de lo que me esperaba.

Esta instancia de Alfresco no tiene ningún plugin instalado ni tampoco ninguna configuración a medida en el directorio <extension>, así que este se trata del tipo de actualización más fácil de Alfresco. La versión actual es Alfresco 4.2.c y fue instalada en /opt/alfresco-4.2.c utilizando el asistente de instalación. La plataforma se encuentra desplegada sobre sobre un S.O. Debian GNU/Linux Wheezy de 64 bits.

La actualización de Alfresco consiste básicamente en instalar una nueva versión y migrar los contenidos de la vieja a la nueva. Por ello, el proceso es el siguiente:

  • Instalar Alfresco 5.0.a sin desinstalar Alfresco 4.2.c
  • Iniciar Alfresco 5.0.a por primera vez para que se despliegue y detenerlo.
  • Migrar la base de datos y el almacén de cotenidos de Alfresco 4.2.c a 5.0.a.
  • Iniciar Alfresco 5.0.a, detectará la base de datos y el almacén de la versión 4.2.c y los actualizará.
  • Reindexar el contenido de Alfresco 5.0.a.

Instalación de Alfresco 5.0.a

Para comenzar con la actualización, nos autenticamos en el servidor como root, creamos el nuevo directorio donde instalaremos Alfresco 5.0.a y le asignaremos como propietario y grupo al usuario que se encarga de ejecutar el servidor Alfresco, en nuestro caso el usuario se llama alfresco:

# mkdir /opt/alfresco-5.0.a
# chown alfresco.alfresco /opt/alfresco-5.0.a

Ahora nos autenticamos como alfresco y detenemos Alfresco 4.2.c. Durante el proceso de instalación de Alfresco, se comprueba que los puertos que utiliza, como por ejemplo el 8080, pueden abrirse correctamente. Si hay un Alfresco corriendo, este está ocupando esos puertos y el instalador nos dirá que no pueden utilizarse, por eso es necesario detener el servicio antes de instalar.

# su - alfresco
$ /opt/alfresco-4.2.c/alfresco.sh stop
$ wget http://heanet.dl.sourceforge.net/project/alfresco/Alfresco%205.0.a%20Community/alfresco-community-5.0.a-installer-linux-x64.bin
$ chmod +x alfresco-community-5.0.a-installer-linux-x64.bin
$ ./alfresco-community-5.0.a-installer-linux-x64.bin
Language Selection

Please select the installation language
[1] English - English
[2] French - Français
[3] Spanish - Español
[4] Italian - Italiano
[5] German - Deutsch
[6] Japanese - 日本語
[7] Dutch - Nederlands
[8] Russian - Русский
[9] Simplified Chinese - 简体中文
[10] Norwegian - Norsk bokmål
[11] Brazilian Portuguese - Português Brasileiro
Please choose an option [1] : 3
----------------------------------------------------------------------------
Bienvenido a la instalación de Alfresco Community.

----------------------------------------------------------------------------
Tipo de instalación

[1] Fácil: instala los servidores con la configuración por defecto
[2] Avanzada: Configura las propiedades de servicio y los puertos de servidor.: También puede elegir componentes opcionales para instalar.
Por favor seleccione una opción [1] : 

----------------------------------------------------------------------------
Carpeta de instalación

Por favor, elija una carpeta para instalar Alfresco Community

Seleccionar una carpeta [/home/zylk/alfresco-5.0.a]: /opt/alfresco-5.0.a

----------------------------------------------------------------------------
Contraseña de admin

Por favor, especifique una contraseña a utilizar para la cuenta de administrador
de Alfresco.

Contraseña de admin: :
Repita la contraseña: :
----------------------------------------------------------------------------
El programa está listo para iniciar la instalación de Alfresco Community en su
ordenador.

¿Desea continuar? [Y/n]:  

----------------------------------------------------------------------------
Por favor espere mientras se instala Alfresco Community en su ordenador.

 Instalando
 0% ______________ 50% ______________ 100%
 #########################################

----------------------------------------------------------------------------
El programa terminó la instalación de Alfresco Community en su ordenador.

Ver el archivo Léeme [Y/n]: n

Lanzar Alfresco Community Share [Y/n]: n

Ahora lanzamos Alfresco 5.0.a por primera vez para que se despliegue, cargue las configuraciones y construya la base de datos. Mientras arranca Alfresco, comprobaremos su correcto arranque consultando sus logs. Finalmente, lo detenemos:

$ /opt/alfresco-5.0.a/alfresco.sh start
$ tail -f /opt/alfresco-5.0.a/tomcat/logs/catalina.out
$ /opt/alfresco-5.0.a/alfresco.sh stop

Copia de contenidos de Alfresco 4.2.c a 5.0.a

Primero copiaremos la base de datos de 4.2.c en 5.0.a y después haremos lo mismo con los contenidos. Si Alfresco ha sido instalado utilizando instalador en modo fácil, como es nuestro caso, el usuario de base de datos será siempre alfresco, y el nombre de la base de datos también será alfresco. La contraseña de la base de datos es la misma que hemos introducido para el usuario admin de Alfresco durante la instalación. De todas formas, si necesitásemos consultarla, lo haríamos en el fichero <alf_home>tomcat/shared/classes/alfresco-global.properties.

Para comenzar con la migración de las bases de datos, iniciamos el servidor PostgreSQL de Alfresco 4.2.c, exportamos la base de datos alfresco y lo detenemos:

$ /opt/alfresco-4.2.c/postgresql/scripts/ctl.sh start
$ /opt/alfresco-4.2.c/postgresql/bin/pg_dump -F t alfresco > /tmp/alfresco-4.2.c.tar
$ /opt/alfresco-4.2.c/postgresql/scripts/ctl.sh stop

Procedemos a importar la base de datos. Iniciamos el servidor PostgreSQL de Alfresco 5.0.a, nos autenticamos como el usuario postgresql, eliminamos la base de datos alfresco, volvemos a crearla y le cargamos el dump de la base de datos de Alfresco 4.2.c:

$ /opt/alfresco-5.0.a/postgresql/scripts/ctl.sh start
# su - postgres
$ /opt/alfresco-5.0.a/postgresql/bin/psql
postgres=# DROP DATABASE alfresco;
postgres=# CREATE DATABASE alfresco WITH owner = alfresco;
postgres=# \q
$ /opt/alfresco-5.0.a/postgresql/bin/pg_restore -d alfresco /tmp/alfresco-4.2.c.tar
$ exit

Nos autenticamos como el usuario alfresco, eliminamos el dump y detenemos la base de datos de Alfresco 5.0.a:

# su - alfresco
$ rm /tmp/alfresco-4.2.c.tar
$ /opt/alfresco-5.0.a/postgresql/scripts/ctl.sh stop

El siguiente paso es migrar el contenido. Para ello, eliminamos los directorios contentstore y contentstore.deleted del <alf_data> de Alfresco 5.0.a y copiamos aquí los de Alfresco 4.2.c:

$ rm -rf /opt/alfresco-5.0.a/alf_data/contentstore
$ rm -rf /opt/alfresco-5.0.a/alf_data/contentstore.deleted/
$ cp -rp /opt/alfresco-4.2.c/alf_data/contentstore /opt/alfresco-5.0.a/alf_data/
$ cp -rp /opt/alfresco-4.2.c/alf_data/contentstore.deleted/ /opt/alfresco-5.0.a/alf_data/

Actualización y reindexado

Ya tenemos Alfresco 5.0 instalado y los contenidos copiados al mismo. La siguiente vez que iniciemos Alfresco se aplicarán las actualizaciones sobre la base de datos y los contentstore. Pero antes de eso, vamos a desactivar el subsistema de indexado Solr. ¿Por qué? Para ir paso a paso. Como en este momento sólo nos interesa que el sistema se actualice correctamente, sin Solr trabajaremos más rápido y evitaremos errores relacionados con el indexado, de lo que nos ocuparemos más tarde, cuando Alfresco esté actualizado y funcionando de forma correcta.

Para desactivar el indexado, editamos el fichero alfresco-global.properties:

$ vi /opt/alfresco-5.0.a/tomcat/shared/classes/alfresco-global.properties

Definimos el subsistema como noindex y comentamos el puerto de Solr:

[...]

### Solr indexing ###
#index.subsystem.name=solr
index.subsystem.name=noindex
dir.keystore=${dir.root}/keystore
#solr.port.ssl=8443

[...]

Iniciamos Alfresco 5.0.a y monitorizamos los logs para comprobar su correcto arranque:

$ /opt/alfresco-5.0.a/alfresco.sh start
$ tail -f /opt/alfresco-5.0.a/tomcat/logs/catalina.out

El sistema se inicia y se actualizará. Cuando el proceso termine Alfresco estará operativo en su versión 5.0.a. Entonces lo detendremos para reindexar todo el contenido:

$ /opt/alfresco-5.0.a/alfresco.sh stop

Para activar el indexado de nuevo, volvemos a editar el fichero de configuración:

$ vi /opt/alfresco-5.0.a/tomcat/shared/classes/alfresco-global.properties

Y dejamos los parámetros del indexado tal y como estaban originalmente:

[...]

index.subsystem.name=solr
dir.keystore=${dir.root}/keystore
solr.port.ssl=8443

[...]

Procedemos a borrar los índices de Solr. De esta forma hacemos que Solr comience a indexar todo el contenido de nuevo, es decir, un reindexado completo. También se podían haber migrado los índices de Alfresco 4.2.c, pero como este servidor maneja pocos documentos, es mejor realizar un reindexado, no necesita mucho tiempo y es una forma de aseguramos de que los índices son correctos.

$ cd /opt/alfresco-5.0.a/alf_data/solr
$ rm -rf workspace/SpacesStore/*
$ rm -rf archive/SpacesStore/*
$ rm -rf workspace-SpacesStore/alfrescoModels/*
$ rm -rf archive-SpacesStore/alfrescoModels/*

Volvemos a lanzar Alfresco 5 y monitorizamos el inicio:

$ /opt/alfresco-5.0.a/alfresco.sh start
$ tail -f /opt/alfresco-5.0.a/tomcat/logs/catalina.out

Durante este arranque se relalizará el reindexado completo. Con esto hemos terminado la actualización 🙂 Como los indices ya están creados no hace falta tocar nada más. Nuestro servidor ya está completamente preparado para ser integrado en nuesto SO, así que ahora no olvidemos realizar los cambios pertinentes en nuestros scripts de inicio y de backup.

Enlaces de interés

Para realizar esta actualización me han sido de gran ayuda los siguientes enlaces:

Alfresco Wiki – General Upgrade Process

Alfresco Documentation – Upgrading Alfresco

Francesco Corti – Yet another Alfresco Community upgrade tutorial: from 4.0.d to 4.2.f.

Actualizando Alfresco Community de 4.2.c a 5.0.a
Share on FacebookTweet about this on TwitterShare on LinkedInGoogle+Email to someonePrint this page
Etiquetado en:                                            

14 thoughts on “Actualizando Alfresco Community de 4.2.c a 5.0.a

    • 2015/07/29 a las 22:26
      Enlace permanente

      De res Blackhold 🙂

      Amb moltes ganes de tornar a Euskal Herria i visitar també els Països Catalans. Un petó i una abraçada molt grans.

      Responder
  • 2015/07/07 a las 19:19
    Enlace permanente

    Hola qué tal,

    Una duda, ¿cuánto tiempo estimas llevaría una migración de la versión 3.1 a la 5.0? Considerando tu experiencia en este caso y un total de 2800 documentos.

    ¡Saludos !

    Responder
    • 2015/07/29 a las 23:15
      Enlace permanente

      Buenas Fabián, me alegra mucho que participes en el blog. Lo primero, pido disculpas por tardar tanto en responder.

      La respuesta que puedo darte es la tan odiada “depende”, el producto evolucionó mucho entre estas versiones, por ejemplo ahora incluye los sites. Este post está basado en esa misma experiencia, una migración de 3.x a 4.2. Durante el proyecto Alfresco publicó la versión 5.0.a así que decidí actualizar para mantener el sistema al día.

      No realicé una actualización, lo que hice fue exportar todos los documentos de 3.x usando Export and Import Command Line Tools e importarlos después usando la misma herramienta y otras herramientas de apoyo que desarrollé en lenguaje Python 2.7 para tal fin. La función de estas herramientas era exportar e importar contenidos por partes y realizar sustituciones de eñes, tildes y otros caracteres non-ascii cuando los mismos generaban problemas.

      Siento mucho no poder darte plazos, pues aunque en principio puede parecer algo sencillo, tiene su complicación. Tuve suerte porque Alfresco se estaba utilizando como contenedor de documentos sin hacer uso de workflows, reglas de contenido ni modelos a medida y esto facilita las cosas. Lo que puedo decirte es que eran bastante menos de 24.000 documentos. Si te encuentras en un entorno parecido y sin personalizaciones, la exportación/importación es muy viable.

      Si tienes alguna duda o necesitas más ayuda no dudes en seguir comentando.

      Saludos y mucha suerte con tu proyecto.

      Responder
  • 2015/07/29 a las 14:10
    Enlace permanente

    Gracias por el post.

    Un par de preguntas:
    1- ¿Por casualidad migraste de alfresco/mysql a alfresco/postgresql? ¿Hay algún tutorial / es posible?
    2- Estamos haciendo la migración de 4.0.e a 4.2.f y nos da un error en el proceso de updates de Base de Datos, ¿Hiciste esta migración? ¿Tuviste algún problema?. El proceso seguido es el mismo que describes para pasar de 4.2.c a 5.0.a

    Responder
    • 2015/07/29 a las 23:36
      Enlace permanente

      No hay de qué, Alex.

      La verdad es que nunca he cambiado el motor de base de datos en Alfresco, pero por lo que he podido ver en Internet, basta con exportar de MySQL, modificar el dump e importarlo en PostgreSQL. También hay que modificar la configuración de Alfresco para que se olvide de MySQL y se conecte a PostgreSQL. Por lo que cuentan en este tutorial parece bastante sencillo. En cuanto a los índices no estoy seguro de que haya que hacer algo con ellos, pero en el foro de Alfresco hay recomendaciones de hacer un reindexado completo después del cambio de motor de BBDD.

      También he encontrado otras dos publicaciones [1] [2] que detallan el proceso inverso, de PostgreSQL a MySQL, que pueden ayudarte a hacerte una idea del procedimiento.

      Sobre el error que recibes en la migración, puedo decirte que no he realizado ninguna migración entre 4.0.e y 4.0.f, pero debería ser menos problemática que una migración entre versiones mayores, por ejemplo la que realicé entre 4.2.c a 5.0.a. En principio el proceso debería ser el mismo: Instalar la nueva versión de Alfresco, conectarlo a la vieja base de datos para que la ajuste y reconstruir los índices. De todas formas, te recomiendo consultar este post de Francesco Corti donde actualiza de 4.0.d a 4.0.f, es un experto en Alfresco y todo lo que publica es muy confiable.

      Si tienes alguna duda o necesitas más ayuda no dudes en seguir comentando.

      Saludos y mucha suerte con esa actualización.

      Responder
      • 2015/07/30 a las 14:15
        Enlace permanente

        el problema lo tengo también pasando de 4.0.e a 4.2.a (que seria la siguiente versión a la mía).

        Me da un error al pasar los scripts de upgrade de la base de datos.
        exactamente en uno que se llama NodeDeleted.sql

        He probado a pasar los scripts 1 a 1 manualmente sin problemas, hasta llegar al que me da error, el cual va pasando hasta que llega un momento en que el mysql da error y se detiene.

        la consulta en si no es problemática, es un delete table.

        mysql> drop table t_alf_node;
        ERROR 2006 (HY000): MySQL server has gone away
        No connection. Trying to reconnect…
        ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock (111)
        ERROR:
        Can’t connect to the server

        O sea, todo el script va pasando bien, hasta que llega a ese delete, en el cual el servicio se detiene y falla todo el upgrade.

        Falla ahí ya sea pasando el script manualmente como haciendo el upgrade automático.

        Sinceramente ya no se que hacer, el link que me pasaste de Francesco Corti está muy bien y es muy claro.

        He echo exactamente lo que pone ahí (a excepción de que yo tengo una base de datos en mysql y no en postgresql).

        Me imagino que será algún problema con la base de datos

        Responder
        • 2015/08/04 a las 19:31
          Enlace permanente

          Buenas Alex. Siento haber tardado casi una semana en responder, no ví tu comentario hasta hoy.

          Por lo que veo en el mensaje de error de abajo, este script se lanza presuponiendo que tienes la base de datos instalada en el mismo host que Alfresco y que puedes acceder a la misma desde un socket de UNIX:

          ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock (111)
          

          Para poder avanzar, necesitaría saber lo siguiente:

          1. ¿MySQL está instalado en el mismo host que alfresco o en otro?
          2. ¿MySQL está corriendo?
          3. Si MySQL está corriendo: ¿Existe el fichero /var/run/mysqld/mysqld.sock? (ls /var/run/mysqld/mysqld.sock)
          4. Si MySQL está corriendo: ¿Existe algún proceso de mysql? (ps aux | grep mysql)
          5. Si MySQL está parado: ¿Existe el fichero /var/run/mysqld/mysqld.sock? (ls /var/run/mysqld/mysqld.sock)
          6. Si MySQL está corriendo: ¿Existe algún proceso de mysql? (ps aux | grep mysql)
          7. ¿Puedes conectarte con el cliente mysql a través de socket? (mysql -u root -p)
          8. ¿Puedes conectarte con el cliente mysql a través de TCP/IP? (mysql -h 127.0.0.1 -u root -p)

          Conociendo está información, quizás podamos diagnosticar el problema y realizar los ajustes pertinentes en el script si fuese necesario.

          Me cuentas qué tal y vamos viendo si avanzamos más. ¡Suerte!

          Responder
  • 2016/04/11 a las 06:07
    Enlace permanente

    Buenos días Joseba

    Muy interesante el post. A rasgos generales me da una idea de lo que debo hacer para una migración. Soy un usuario medio nuevo en el tema de Alfresco y comencé con la versión 4.2, la dejé por un tiempo y ahora bajé la 5.1. y desearía pasar los ejemplos (usuarios, datos, etc) que he creado a la nueva versión ya que una particularidad que le veo es que me parece más fácil la administración en general y esta migración la quiero tomar como un “proyecto” para ver la flexibilidad del software.
    Estoy buscando y obteniendo información de algunas webs, pero el problema que me encuentro es que el 90% de los comentarios y post son con Alfresco sobre Linux y en mi caso lo tengo instalado en Windows Server 2012 R2 ya que las plataformas objetivo de los clientes donde tengo posibilidad de hacer una demo y posteriormente vender el producto son con dicho servidor.
    A lo que voy es ¿qué pasos tendría que dar para actualizar como tú indicas en el post pero con Windows 2012 server? Es que, por ejemplo, he intentado crear una copia de seguridad pero la misma me da un error tanto al crearla como al intentar restaurarla. He instalado Alfresco con el administrador de bases de datos Postgre, tal como viene de “fábrica”, todos los puertos por defecto y a pesar de hacer esto, me da errores. ¿Hay alguna solución? El resto de funciones va perfecto, inclusive la de edición en línea con MS Office que leí por ahí que daba problemas, pero esto de las copias de seguridad, necesaria para la migración, es un dolor de cabeza.

    Desde ya muchas gracias por cualquier pista que me puedas ofrecer.
    Atentamente
    Marcelo

    Responder
  • 2016/04/23 a las 18:53
    Enlace permanente

    Hola Marcelo.

    Al tratarse de una herramienta Java que corre sobre el contenedor de servlets Apache Tomcat, el proceso de actualización en Windows es el mismo que en una distribución de GNU/Linux. Habría que mirar cuáles son los errores que recibes para poder diagnosticarlo.

    Estuve revisando y la documentación de actualización de Alfresco está al día para la versión 5.1: http://docs.alfresco.com/community/tasks/upgrade-process.html

    También es importante siempre revisar el Update Path (http://docs.alfresco.com/5.1/concepts/upgrade-path.html) para estar seguros entre qué versiones tenemos que saltar para actualizar correctamente. Afortunadamente, de las versiones 4.2.x se puede actualizar directamente a 5.1.

    Te recomiendo que revises esta documentación al detalle para tener una idea clara del proceso de actualización y entonces actualices, si recibes errores utiliza los buscadores. A mí me han servidor mucho para encontrar la solución a errores de forma rápida. Si ves que no avanzas puedes consultarme aquí con un comentario y vemos cómo puede solucionarse.

    ¡Mucha suerte!

    Responder
  • 2016/05/05 a las 06:47
    Enlace permanente

    Buenas Joseba.
    Mi pregunta es saber si desde la version que muestro se puede realizar una actualizacion a la ultima version community de Alfresco.
    Versión: Community – v4.2.0 (4576)
    Desconozco bastante el tema, ya que me ha venido heredada la aplicacion.Termino de hacerme cargo de la instalacion y desconocia el producto.
    La tengo sobre un servidor en hosting y virtualizado en una maquina os.name Linux
    os.version 2.6.32-74-server.
    Si necesitas ampliacion de mas datos para poderme dar una respuesta, no dudes en solicitarmelos.
    De antemano gracias por el tiempo que me dedicas.

    Responder
    • 2016/06/08 a las 23:27
      Enlace permanente

      Hola Javier.

      Siento muchísimo no haber podido atender tu solicitud hasta ahora. Cambié de empleo y he estado muy centrado en Comware potenciando su línea de negocio Red Hat como arquitecto de soluciones.

      Según veo en la gráfica de los upgrade paths o caminos de actualización de la documentación de Alfresco, sí que es posible actualizar de la versión 4.2.0 a la última (5.1). Puedes consultar el proceso de actualización en esta página de la documentación oficial. Aunque viendo la cercanía de las versiones menores, creo que mi post puede servirte, porque además está basado en la documentación oficial.

      Antes de actualizar, ponle atención a si tu Alfresco tiene instalado algún módulo (AMP: Alfresco Module Package). Porque si existe alguno, también será necesario tenerlo instalado en la nueva instalación de Alfresco 5.1 antes de proceder a migrar los datos.

      Realmente es más fácil de lo que parece, lo más importante es entender el proceso de actualización y tener claros los conceptos antes de comenzar a actualizar. Si mi respuesta llegó a tiempo, cuéntame que tal te va y te ayudaré en lo que pueda.

      Responder
  • 2016/07/13 a las 09:51
    Enlace permanente

    Aupa Joseba, nosotros queremos actualizar lo mismo, de la 4.2 a la 5.0. Tenemos 2 Teras de documentos, me gustaría saber una estimación de tiempo de lo que nos costaría hacer la actualización en el caso de que todo vaya bien…

    Saludos.

    Responder
    • 2016/07/15 a las 15:20
      Enlace permanente

      Aupa Jesús.

      Me lo has puesto difícil con la pregunta 😛 No puedo darte una estimación, pero sí puedo darte algunas recomendaciones:

      1. No es tan importante el tamaño total del repositorio, sino el número de documentos pues eso impactará en el tiempo del reindexado.
      2. La capacidad de computación del servidor es importante a la hora de estimar el tiempo de migración.
      3. Comprueba si tienes módulos (AMP) e instálalos en la nueva versión antes de actualizar.
      4. Antes de actualizar, realiza una copia de seguridad de Alfresco:
        • Directorio /opt/alfresco-X.X.X
        • Si no tienes espacio puedes omitir el backup de /opt/alfresco-5.0.a/alf_data/, aunque recomiendo que lo hagas, aunque tengas que invertir dinero para un disco duro externo
        • Dump de la base de datos de Alfresco

      Te recomiendo que una vez realizados los backups, lances una actualización para comprobar cuánto tarda. Si tras actualizar ves que te has dejado algún detalle por el camino, siempre puedes volver al backup y realizar de nuevo la actualización.

      ¡Te deseo mucho éxito con la migración!

      Responder

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *