[TIP] Alfresco no funciona, no levanta o está roto

Si estás aquí es porque probablemente has ido a ver tu Alfresco y se encuentra apagado o fuera de cobertura. Bienvenido al mundo de Alfresco :)

En esta entrada os quiero explicar qué hacer y cómo ver qué ocurre “por detrás” para intentar solucionarlo. Antes de nada: Para tu Alfresco, no sirve de nada que siga ejecutándose comiendo recursos de la máquina.

¿Qué necesitamos? alfresco.log y catalina.out. Son logs donde se registran los detalles “técnicos” cuando se inicia Alfresco.

alfresco.log se encuentra en tu instalación en alfresco/alfresco.log

catalina.out se encuentra en alfresco/tomcat/logs/catalina.out

Prueba lo siguiente:

  1. Arranca alfresco y abre uno de esos logs, yo quizás te recomendaría que echaras un primer ojo a catalina.out y después a alfresco.log.
  2. Si puedes, lo ídeal es que el log se vaya refrescando a medida que vaya cargando.
    • En linux puedes lanzar el comando tail desde la terminal (tail -n500 -f /opt/alfresco/tomcat/logs/catalina.out)
    • En windows puedes utilizar esa utilidad  para obtener el mismo resultado que en linux
  3. Una vez tengas el log y empiecen las lineas a “correr”, fijate en la primera que contenta al inicio la palabra ERROR
  4. Una vez veas que tienes el / los errores, puedes parar tu Alfresco.
  5. Abre con un editor de texto el log (catalina.out o alfresco.log) Si tienes varios errores no te preocupes, busca siempre el primer ERROR que tengas, y mira a ver si tiene un Caused by algo más abajo.

Bien, ya tienes el error “técnico” pero no tienes ni la más remota idea de por dónde empezar. Aquí las claves:

  1. Busca el “Caused by:” completo de tu error  más la palabra “alfresco” en google.
    • Pincha aquí para ver un ejemplo.
  2. Prueba a poner el error completo en un nuevo hilo en la comunidad de alfresco.
  3. Chatea con expertos (normalmente en inglés aunque a veces hay gente en español que echan una mano).

Como veis no es muy complicado saber qué ocurre exactamente detrás de “alfresco no funciona”. Al menos ahora podréis encontrar vosotros mismos la solución o al menos sabéis dónde se encuentra los detalles técnicos del mismo.

Espero que os sirva como orientación.

¡Un saludo!

[Alfresco Share] A server error has ocurred

Buenas.

He realizado en mi Mac una instalación simple con el instalador de un Alfresco Community versión 5.0.d y cual ha sido mi sorpresa que nada más arrancar e intentar acceder por el navegador web (http://localhost:8080/share) me casca un “A server error has ocurred” de estos súper genérico:

Share default failed web page

Consultando el catalina.out al arrancar, observo lo siguiente:

INFORMACIÓN: Despliegue del archivo /Applications/Alfresco/community/alfresco-5.0.d/tomcat/webapps/share.war de la aplicación web
sep 04, 2017 7:00:25 PM org.apache.catalina.startup.ContextConfig beforeStart
GRAVE: Excepción arreglando docBase: /share
java.io.EOFException: Unexpected end of ZLIB input stream
at java.util.zip.ZipFile$ZipFileInflaterInputStream.fill(ZipFile.java:418)
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:158)
at java.io.FilterInputStream.read(FilterInputStream.java:107)
at org.apache.catalina.startup.ExpandWar.expand(ExpandWar.java:413)
at org.apache.catalina.startup.ExpandWar.expand(ExpandWar.java:144)
at org.apache.catalina.startup.ContextConfig.fixDocBase(ContextConfig.java:735)
at org.apache.catalina.startup.ContextConfig.beforeStart(ContextConfig.java:863)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:388)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:402)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1081)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1877)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

Si me voy algo más abajo, coincidiendo con el momento de acceder por web, en uno de los Caused by, observo lo siguiente:

...
Caused by: org.springframework.extensions.surf.exception.PlatformRuntimeException: 09040000 No 'login' page type configured - but page auth required it.
at org.springframework.extensions.surf.mvc.PageView.renderView(PageView.java:260)
at org.springframework.extensions.surf.mvc.AbstractWebFrameworkView.renderMergedOutputModel(AbstractWebFrameworkView.java:316)
...

EL error está claro: No hay página de inicio.

Mirando la instalación he verificado que dentro de la carpeta webapps, no se descomprimía el share.war:

Cristina$ ls -la tomcat/webapps/
total 590896
drwxr-xr-x 9 Cristina admin 306 4 sep 19:00 .
drwxr-xr-x 16 Cristina admin 544 4 sep 18:56 ..
drwxr-xr-x 12 Cristina admin 408 4 sep 18:59 alfresco
-rw——- 1 Cristina admin 149546738 4 sep 18:57 alfresco.war
drwxr-xr-x 7 Cristina admin 238 4 sep 18:56 host-manager
drwxr-xr-x 8 Cristina admin 272 4 sep 18:56 manager
-rw——-1 Cristina admin 60471586 4 sep 18:57 share.war
drwxr-xr-x 10 Cristina admin 340 4 sep 18:59 solr4
-rw-r–r– 1 Cristina admin 92515594 19 mar 2015 solr4.war

Después de mirar, he caído que el problema viene del instalador: No establece los permisos adecuados a webapps/alfresco.war y share.war y tomcat no es capaz de descomprimirlo adecuadamente.

Echemos un ojo para comprender el problema

Por defecto, al realizar la instalación con el instalador y arrancado, tenemos lo siguiente:

Cristina$ ls -la tomcat/webapps/
total 590896
drwxr-xr-x 9 Cristina admin 306 4 sep 19:00 .
drwxr-xr-x 16 Cristina admin 544 4 sep 18:56 ..
drwxr-xr-x 12 Cristina admin 408 4 sep 18:59 alfresco
-rw——- 1 Cristina admin 149546738 4 sep 18:57 alfresco.war
drwxr-xr-x 7 Cristina admin 238 4 sep 18:56 host-manager
drwxr-xr-x 8 Cristina admin 272 4 sep 18:56 manager
-rw——-1 Cristina admin 60471586 4 sep 18:57 share.war
drwxr-xr-x 10 Cristina admin 340 4 sep 18:59 solr4
-rw-r–r– 1 Cristina admin 92515594 19 mar 2015 solr4.war

Si os fijáis, alfresco.war ocupa casi un giga y medio (149546738 4 sep 18:57 alfresco.war) y solo ha descomprimido 400kbs (408 4 sep 18:59 alfresco). Por lo que tampoco lo ha realizado bien.

Solución

Hay que ejecutar lo siguiente para otorgar los permisos adecuados. Tened en cuenta que debéis estar sobre la ruta en la que tengamos instalado nuestro Alfresco, por ejemplo C:/Alfresco/

  • chmod 0644 tomcat/webapps/share.war
  • chmod 0644 tomcat/webapps/alfresco.war

Los permisos adecuados deben ser:

Cristina$ ls -la tomcat/webapps/
total 590896
drwxr-xr-x 9 Cristina admin 306 4 sep 19:00 .
drwxr-xr-x 16 Cristina admin 544 4 sep 18:56 ..
drwxr-xr-x 12 Cristina admin 408 4 sep 18:59 alfresco
-rw-r–r– 1 Cristina admin 149546738 4 sep 18:57 alfresco.war
drwxr-xr-x 7 Cristina admin 238 4 sep 18:56 host-manager
drwxr-xr-x 8 Cristina admin 272 4 sep 18:56 manager
-rw-r–r– 1 Cristina admin 60471586 4 sep 18:57 share.war
drwxr-xr-x 10 Cristina admin 340 4 sep 18:59 solr4
-rw-r–r– 1 Cristina admin 92515594 19 mar 2015 solr4.war

Borramos el despliegue a que teníamos mal realizado de Alfresco:

  • rm -rf tomcat/webapps/alfresco/

Y ya solo nos queda arrancar Alfresco con un alfresco.sh start. Listo ;-)

Otra de esas cositas que son muy tontas pero que te quitan tiempo (mucho tiempo) en mirar de dónde viene el problema. Ahí queda :-)

¡Un saludo!

Problemas con LibreOffice en un Alfresco 5.2. limpio

He realizado varias instalaciones en diversos entornos de Alfresco 5.2, y en casi todos los casos he tenido que descargar las dependencias necesarias para que funcionara correctamente. Hasta aquí todo normal. El problema vino hace unos días en el que he tenido que realizar una instalación en un entorno el cual me ha dado varios quebraderos de cabeza. Debido a la poca información que he encontrado os voy a explicar qué error daba y cómo lo he solventado:

¡Manos a la obra!

  • He realizado una instalación de cero con un instalador de Alfresco 5.2. en ubuntu 14.04.1 LTS
  • Al arrancar, en el catalina.out, veo el siguiente problema relacionado con LibreOffice:
    ERROR [repo.content.JodConverterSharedInstance] [localhost-startStop-1] Unable to start JodConverter library. The following error is shown for informational purposes only.
    
     org.artofsolving.jodconverter.office.OfficeException: failed to start and connect
    
    ....
    
    Caused by: java.util.concurrent.ExecutionException: org.artofsolving.jodconverter.office.OfficeException: could not establish connection
  • Compruebo si libreoffice se ha arrancado:
    > alfresco/libreoffice/scripts$ ./libreoffice_ctl.sh status
    
    libreoffice not running
  • Intentamos arrancarlo con el script:
    > alfresco/libreoffice/scripts$ ./libreoffice_ctl.sh start
    
    ./libreoffice_ctl.sh : libreoffice could not be started
  • Para ver más detalles sobre qué ocurre, ejecutamos lo siguiente:
    > alfresco/libreoffice/scripts$ cd ../program/
  • Ejecutamos lo siguiente:
    sudo ./soffice --nologo --headless --nofirststartwizard --accept='socket,host=127.0.0.1,port=8100,tcpNoDelay=1;urp;StarOffice.Service'
    
     Resultado:
    
     javaldx: Could not find a Java Runtime Environment!
    
     Warning: failed to read path from javaldx
    
     /opt/alfresco/libreoffice/program/.soffice.bin: error while loading shared libraries: libcairo.so.2: cannot open shared object file: No such file or directory
  • El error de Java lo veremos más tarde, vamos a centrarnos en las dependencias. Intentamos instalar la dependencia que necesita:
    > alfresco/libreoffice/program$ sudo apt-get install libcairo2
    
     Leyendo lista de paquetes... Hecho
    
     Creando árbol de dependencias
    
     Leyendo la información de estado... Hecho
    
     Tal vez quiera ejecutar «apt-get -f install» para corregirlo:
    
     Los siguientes paquetes tienen dependencias incumplidas:
    
     cfg2html-linux : Depende: gawk
    
     libcairo2 : Depende: libpixman-1-0 (>= 0.18.0) pero no va a instalarse
    
     Depende: libxcb-render0 pero no va a instalarse
    
     Depende: libxcb-shm0 pero no va a instalarse
    
     E: Dependencias incumplidas. Intente «apt-get -f install» sin paquetes (o especifique una solución).
  • Para solucionar el error de dependencias, debemos ejecutar lo siguiente:
    sudo apt-get autoremove 

    Cuando termine seguimos con el siguiente comando:

    sudo apt-get autoclean

    Cuando termine seguimos con el siguiente comando:

    sudo apt-get update

    Cuando termine seguimos con el siguiente comando:

    sudo apt-get -f install
  • Finalmente en este punto se instalaran aquellas dependencias que no nos dejaban previamente. Ejecutamos:
    sudo apt-get install libcairo2

    Y ahora sí: Se instalan correctamente.

  • Para verificar que nuestro LibreOffice funciona correctamente:
    > alfresco/libreoffice/program$ sudo ./soffice --nologo --headless --nofirststartwizard --accept='socket,host=127.0.0.1,port=8100,tcpNoDelay=1;urp;StarOffice.Service'
    
    javaldx: Could not find a Java Runtime Environment!Warning: failed to read path from javaldx
  • Este warning se debe a que tenemos que arrancar libreoffice desde el servicio de Alfresco porque es donde se exporta la variable de Java. Hacemos lo siguiente:
    sudo service alfresco restart && tail -n500 -f ruta_alfresco/tomcat/logs/catalina.out
  • Y observamos el log que por fin se establece conexión:
     org.artofsolving.jodconverter.office.OfficeProcess start
    
     INFORMACIÓN: Using original OpenOffice command: [/opt/alfresco/libreoffice/program/soffice.bin, -accept=socket,host=127.0.0.1,port=8100;urp;, -env:UserInstallation=file:///opt/alfresco/tomcat/temp/.jodconverter_socket_host-127.0.0.1_port-8100, -headless, -nocrashreport, -nodefault, -nofirststartwizard, -nolockcheck, -nologo, -norestore]
    
     ago 21, 2017 5:12:29 PM org.artofsolving.jodconverter.office.OfficeProcess start
    
     INFORMACIÓN: starting process with acceptString 'socket,host=127.0.0.1,port=8100,tcpNoDelay=1' and profileDir '/opt/alfresco/tomcat/temp/.jodconverter_socket_host-127.0.0.1_port-8100'
    
     ago 21, 2017 5:12:29 PM org.artofsolving.jodconverter.office.OfficeProcess start
    
     INFORMACIÓN: started process; pid = 18835

Espero que os ayude a más de uno (o a mi si me vuelve a ocurrir :-P).

Links relacionados con la configuración de Libre Office en Alfresco  (muy útiles):

¡Un saludo!

[ERROR]: The amp will overwrite an existing file in the war

Buenas tardes.

Os dejo aquí este tip por si el día de mañana os ocurre para que no os volváis loc@s :-P

Un poco de historia…

Intentando instalar mis amps (carpetas amps/ y amps_share/) con el script apply_amps.sh en uno de mis módulos me daba el siguiente error y no lo instalaba:

06280001 An error was encountered during deployment of the AMP into the WAR: 06280000 ERROR: The amp will overwrite an existing file in the war ‘/themes/sampleTheme/images/alfresco-imagelib.png’. Execution halted. By specifying -force , you can force installation of AMP regardless of the current war state.

El problema es que, si utilizamos el -force como se indica en ese parrafo obligamos a alfresco a sobre escribir archivos que ya tuviera desplegados previamente. Pero más allá de eso: ¿Por qué Alfresco tiene una versión previa de mi archivo si estoy desplegando una nueva?

Si miramos un poco más y usamos el ./apply_amps.sh -force , tenemos lo siguiente:

– WARNING: The file ‘/themes/sampleTheme/images/alfresco-imagelib.png’ is being overwritten by this module. The original has been backed-up to ‘/WEB-INF/classes/alfresco/module/backup/f2d9c362-73b2-11e7-9166-857b2fac416e.bin’

Y nuestro problema vendrá cuando corrijamos esa ruta e intentemos desplegar esa misma imagen en una ruta distinta, veremos como Alfresco carga la que tiene en backup.

Solución.

  • Pongamos que nuestro Alfresco es el 5.2.
  • Cogemos el war limpio de la misma versión. ¿Qué significa limpio? Pues nos descargamos los fuentes de Alfresco, y tomamos el war de la misma versión que nosotros usamos. Vamos, que no haya sido utilizado nunca.
  • Tenemos que renombrar el war que queramos sustituir de nuestra instalación: Por ejemplo de alfresco.war a alfresco.war.previous o lo que queráis pero .lo-que-quieras para que no sea tenido en cuenta cuando cargue tomcat.
  • Copiamos el war en nuestro_alfresco/tomcat/webapps/
  • Ejecutamos ./apply_amps.sh (o bat si es para plataforma windows).
  • Veremos como habrá desaparecido tanto el error como los warnings.
  • Serás más feliz :-)

Espero que os sirva.

¡Un saludo!