domingo, 8 de julio de 2012

Instalación de OpenCms 8 (8.0.4) en JBoss 7 (7.1.1)

Tuve un fin de semana extraño, me desperté temprano el sábado luego de haber pasado un viernes de cumpleaños y como venía maquinando la idea de hacerle una web a mi madre (que tanto la pide) me dispuse a instalar y configurar correctamente Joomla, mas que nada porque lo desconozco totalmente y si saliera algún día la posibilidad de hacer una web a algún conocido me podría ser de ayuda, ya que dicen por ahí que es bastante simple...
Pero eso lo contaré otro día, ahora estamos con otra cosa, la gran lucha, la lucha de las instalaciones.
Recordé que mi compañero de trabajo (compañero y mentor he de decir), me comentó que intentaríamos a la brevedad pasar a utilizar OpenCms 8, yo como de costumbre estuve reticente a la idea, pero luego meditándolo un poco me di cuenta que la idea no es tan descabellada, supuestamente cada versión nueva de un producto va a mejor y nosotros lo haremos con ella.
Entonces, sin un plan a la vista mas que escaparme a andar con el longboard, dormir una siesta o mirar una "peli" me dispuse a arriesgarme e instalar JBoss 7 y OpenCms 8, sabía que no sería fácil y de hecho a día de hoy no lo es pero no por eso voy a dejar de apuntar mis avances por aca.
Por eso, aca van los pasos realizados para que aparezca, al menos, el setup de instalación de OpenCms.

Herramientas:
  • Ubuntu 12.04
  • Java 1.6 (los pasos estan descritos aca aunque habrá que buscar la versión adecuada ya que el "wget" no funciona)
  • Base de datos PostgreSql 8.4 (desde los repositorios de ubuntu)
  • OpenCms 8.0.4 (OpenCms 8.0.4)
  • JBoss 7.1.1 (JBoss 7.1.1 Final)
  • Ganas y paciencia para suplir el desconocimiento.
Teniendo instalada la versión de Java y PostgreSql que vamos a obviar descargamos el paquete de JBoss.

Instalación de JBoss:

Descargamos JBoss y lo descomprimimos en donde nos guste, para los ejemplos utilizaremos la carpeta "/tmp/"
Al descomprimirlo nos quedará un directorio tal que será :

"/tmp/jboss-as-7.1.1.Final/"

lo copiamos a /opt/ asi nuestra ruta será /opt/jboss-as-7.1.1.Final/ y como no me gusta escribir toooooodo el nombre del directorio de JBoss lo simplificamos con un enlace simbólico desde /opt/ (ln -s /opt/jboss-as-7.1.1.Final/ /opt/jboss)

Una vez realizado esto podremos acceder a la home de JBoss haciendo cd /opt/jboss para que sea mas comodo todo.

Una de las cosas (tantas) que han cambiado en JBoss 7 respecto a la 4 (creo que era la que usaba) es la carpeta de despliegue, que ya no esta mas en .../server/default/deploy/ sino que ahora se ubica en "/opt/jboss/standalone/deployments"
directorio a tener en cuenta porque ahi es donde ubicaremos nuestro war de OpenCms.

Instalación de OpenCms:


Como muchos ya saben (otros quizá no) para desplegar OpenCms en JBoss necesitamos alojarlo en el directorio de despliegue (ahora deployments) como una carpeta y no como un fichero/paquete war, por ello, una vez descargado OpenCms lo descomprimimos en /tmp/ esto nos va a dejar una serie de archivos de los que nos interesa solo "opencms.war" el cual renombraremos a "opencms8.war", lo  descomprimiremos otra vez y asi tendremos la carpeta opencms la cual renombraremos ahora si como "opencms.war" y la moveremos al directorio de despliegues de JBoss antes mencionado. Esto nos dejará un directorio dentro de JBoss asi:
"/opt/jboss/standalone/deployments/opencms.war/"
y dentro haciendo un "ls" deberemos tener los 3 subdirectorios:
"META-INF",  "setup" y "WEB-INF".

Hecho esto no está todo dicho, hay que crear la base de datos.
Para ello vamos a una consola y accedemos a postgres y creamos el usuario y la base de datos donde se alojarán las tablas de OpenCms.

  1. create user opencms with password 'opencms';
  2. create DATABASE opencms with owner opencms;
  3. grant ALL privileges on database opencms to opencms;

Una vez realizados estos pasos ya tenemos la base de datos creada para comenzar con la instalación de OpenCms 8.

PERO

han ocurrido una serie de problemas a la hora de iniciar y no ha sido posible acceder al setup de OpenCms. Ahora es cuando aparecen los cambios interesantes.

Hay que crear en JBoss 7 un modulo de openjpa, me basé en la información de este post el cual recomiendo leer si hay alguna duda, yo resumiré los pasos empleados.

  • Descargar openjpa 2.2.0 desde el sitio de apache
  • Crear una carpeta nueva (modulo nuevo) en el directorio de modulos de JBoss para apache (/opt/jboss/modules/org/apache/) llamada openjpa la cual contara con un subdirectorio main. En ese subdirectorio creamos un fichero module.xml vacio. Creo que con un "tree" estará mas claro
/opt/jboss/modules/org/apache/
├── openjpa
│   └── main
│       ├── module.xml
│       ├── openjpa-all-2.2.0.jar
│       ├── serp-1.13.1.jar

  • Descomprimir el zip en /tmp/ y como vemos en el árbol anterior copiamos el fichero /tmp/apache-openjpa-2.2.0/openjpa-all-2.2.0.jar  dentro del directorio main y el fichero serp-1.13.1.jar que estara dentro de /tmp/apache-openjpa-2.2.0/lib/serp-1.13.1.jar tambien irá dentro del directorio main de nuestro modulo
  • Editamos el fichero module.xml y agregaremos lo siguiente:

Con eso tendremos la parte de JBoss cubierta, pero, como siempre hay un pero, deberemos también que realizar unos cambios en el fichero de persistencia de  nuestro OpenCms. Por lo tanto, nos vamos a nuestro fichero persistence.xml (/opt/jboss/standalone/deployments/opencms.war/WEB-INF/classes/META-INF/) de OpenCms, y lo editamos.
En el bloque de <properties> agregaremos las siguientes:


 Y asi podremos acceder a la instalación de OpenCms a través de nuestro navegador una vez hayamos arrancado correctamente JBoss en nuestra url "localhost:8080/opencms/setup"

Indicaremos los valores previamente definidos para la base de datos e indicaremos los modulos que queramos instalar. Ahi es cuando se ha detenido mi progreso ya que OpenCms crea las tablas en mi base de datos pero cuando quiere conectarse para volcar los contenidos no lo consigue con el siguiente error:

20:13:12,663 INFO  [org.opencms.init] (OpenCms: Setup workplace import) . Wait for DB          : opencms:default (jdbc:postgresql://localhost:5432/opencms), attempt 1, wait 5,000 ms.

y asi hasta los 10 intentos configurados en opencms.properties sin exito, el log de instalacion muestra que el error ha sido:

27:    Caused by: java.sql.SQLException: No suitable driver found for jdbc:postgresql://localhost:5432/opencms

pero no he sido capaz ya que en el lib de opencms cuento con el jar correspondiente a postgres y aunque lo he copiado al lib del servidor sigue fallando. Podremos finalizar la instalación pero no se ha instalado nada.

Por eso, de momento, esto está pendiente, de hecho cuando logre la instalación completa modificaré este post asi que si te interesa, ya sabes, a seguirlo! y si sabes como solucionar este problema! Comenta!!!





    1 comentario:

    1. Muy buen artículo.

      Solo una consulta, te interesaría que se publicase en OpenCms Hispano? Si eso mándanos un correo a través de la web y te lo publicamos, ok?

      Saludos!

      ResponderEliminar