Si queremos hacer pruebas con Tomcat y con la instalación la forma más sencilla de desplegarlo será con Docker.
La versión oficial disponible nos permitirá hacer algunas pruebas rápidas pero como veremos más adelante tiene algunas limitaciones que no nos permitirán desplegar CMDBuild.
Podremos lanzar un contenedor con Tomcat en background con el siguiente comando:
$ docker run -it --rm -p 8888:8080 -d --name tomcat tomcat:9.0
Por defecto este contenedor no tiene activado las webapps. Aunque no es estrictamente necesario nos vendrá bien tenerlas disponibles para tener más conocimiento de cómo está funcionando Tomcat. Para activarlas tendremos que entrar en el contenedor de la siguiente manera:
$ docker exec -it tomcat bash
Una vez dentro del contenedor activaremos las webapps por defecto con los siguientes comandos:
# rmdir webapps
# mv webapps.dist/ webapps
Extrañamente no hay ningún editor de ficheros definido en la imagen de Tomcat así que tendremos que instalar el que más nos guste. La imagen está basada en Ubuntu así que para instalar vim ejecutaremos el comando:
# apt update && apt install -y vim
Previamente tendremos que habilitar el acceso a las apps de administración porque por defecto están limitadas únicamente a conexiones desde la misma máquina donde está desplegado el Tomcat.
Para ello tendremos que comentar tanto /usr/local/tomcat/webapps/host-manager/META-INF/context.xml como en /usr/local/tomcat/webapps/manager/META-INF/context.xml el siguiente bloque:
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
que nos quedará como:
<!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->
Ya tendremos disponible este editor y procederemos a añadir un usuario modificando el fichero /usr/local/tomcat/conf/tomcat-users.xml
<user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>
Al acceder a la IP del host docker y al puerto 8888 deberíamos ver la home de Tomcat.
Al acceder a status, manager o Host Manager nos pedirá el usuario que hemos definido. En nuestro ejemplo será tomcat/tomcat.
La última versión de CMDBuild la podemos descargar de su página en Sourceforge. En nuestra instalación necesitaremos el paquete war.
Al intentar desplegar el war desde la interfaz nos encontraremos con un problema porque la configuración de Tomcat limita el tamaño máximo de los uploads.
En este caso nos encontramos con un callejón sin salida porque para modificar el tamaño máximo que admite Tomcat es necesario reiniciarlo. En condiciones normales esto no debería suponer problema pero al ser el punto de entrada del contenedor, al reiniciarlo se cerrará y perderemos todos los cambios que hayamos hecho.
Para solventar este problema tendremos que desplegar el war copiándolo directamente en el directorio webapps. Esto lo haremos escribiendo:
$ docker cp cmdbuild-3.4.3.war tomcat:/usr/local/tomcat/webapps
Lógicamente ajustaremos el comando al nombre y localización del war así como el nombre del contenedor que hemos establecido.
Tomcat realizará el desempaquetado del war y la aplicación estará lista para activarla desde la interfaz.
Al intentar arrancar la aplicación nos encontraremos con el siguiente error en el log:
invalid OS user detected: this webapp has been started with ROOT user; this is NOT allowed, use a regular/limited user instead
Este es un obstáculo insalvable con la imagen original de Tomcat porque no permite definir con qué usuario se ejecuta la aplicación.
Esta versión, pese a ser la publicada por los creadores, está realmente limitada y no es recomendable para nada más que no sea una prueba.
Tomcat Bitnami
En esta ocasión vamos a utilizar la versión de Tomcat empaquetada y mantenida por Bitnami. Esta imagen tiene una configuración por defecto bastante amigable así como instrucciones muy completas.
Para lanza la imagen desde el terminal ejecutaremos:
docker run --rm -p 8888:8080 --name tomcat -e ALLOW_EMPTY_PASSWORD=yes -d bitnami/tomcat:latest
En esta versión las apps de administración están activadas por defecto y el usuario a utilizar será "manager" sin contraseña.
Igualmente copiaremos el war al directorio correspondiente que, en este caso, será /apps.
docker cp cmdbuild-3.4.3.war tomcat:/app
Si todo va bien esto desplegará y arrancará la aplicación:
Si hacemos click en el enlace veremos la pantalla de configuración de CMDBuild.
Comments