Desplegando Tomcat 9 con Core-Admin y herramienta de servicios personalizados -- Magnolia


#1

1. Introducción

El siguiente artículo muestra cómo:

  • Desplegar el servidor tomcat, asociado a un alojamiento en concreto de core-admin
  • Limitar dicho tomcat al usuario del alojamiento de manera que podamos implementar configuraciones seguras de separación de usuarios
  • Enganchar el tomcat al systemctl para que sea fácil arrancar, para y consultar este tomcat independiente.

2. Requisitos

Antes de continuar, revisa los siguientes requisitos:

  • Necesitas un core-admin actualizado a la última con la herramienta de #WebHostingManagement (Gestor de Alojamientos).

  • Necesitas ser administrador de la máquina para instalar algunas de las configuraciones

3. Preparando el sistema

Lo primero que tendremos que hacer es descargar una versión de java LTS 11 (recomendada para Tomcat 9). Revisa la documentación de tomcat para otras versiones. Los pasos aquí descritos te deberían funcionar igual.

  1. Instalación de Java LTS 11:

     >> cd /usr/local/bin/
     >> wget https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.10%2B9/OpenJDK11U-jdk_x64_linux_hotspot_11.0.10_9.tar.gz
     >> tar xvf OpenJDK11U-jdk_x64_linux_hotspot_11.0.10_9.tar.gz 
     >> cd jdk-11.0.10+9/
     >> pwd
    
  1. (Opcional) Actualizamos /root/.bashrc

    export JAVA_VERSION=/usr/local/bin/jdk-11.0.10+9/bin
    export PATH=$JAVA_VERSION:$PATH
    
  2. …y recargamos

    >> source ~/.bashrc
    
  3. Comprobamos:

    >> java -version
    openjdk version "11.0.10" 2021-01-19
    OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.10+9)
    OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.10+9, mixed mode)
    
  4. Creamos un alojamiento dentro de la máquina (con Core-Admin WebhostingManagement). Para ello, ver:

    Como crear un alojamiento web desde Core-Admin

  5. Una vez creado, entramos en la carpeta raiz de la web y descargamos tomcat:

    >> cd /var/webs/alojamiento.dominio.com
    
    # Descargamos el core del binary distribution: https://tomcat.apache.org/download-90.cgi
    >> wget https://ftp.cixug.es/apache/tomcat/tomcat-9/v9.0.43/bin/apache-tomcat-9.0.43.tar.gz
    >> tar xzvf apache-tomcat-9.0.43.tar.gz
    
    # Asignamos permisos del alojamiento
    >> ls -la -tr -d .
    (vemos permisos y configuramos)
    
    >> chown -R <usuariodelaweb>:<grupo-de-laweb> apache-tomcat-9.0.43
    
  6. Configuamos el puerto donde arranque el servicio HTTP en el fichero:

    apache-tomcat-9.0.43/conf/server.xml
    

    …buscando la declaración siguiente para configurar “port=” y quitar reidrectPort="

      <Connector port="8080" protocol="HTTP/1.1" ...redirectPort="8443"> 
    
  7. Ahora, entarmos en el directorio bin y obtenemos ruta completa:

    >> cd bin/
    >> pwd
    /var/webs/alojamiento.dominio.com/apache-tomcat-9.0.43/bin
    
  8. Con este dato nos vamos a la herramienta de gestión de procesos y servicios, y dentro de la sección de servicios peronsonalizados, creamos una entrada del siguiente modo:

    Nombre del servicio: Tomcat
    Descripción del servicio: Tomcat para la web X

    Comando comleto:
    export JAVA_HOME=/usr/local/bin/jdk-11.0.10+9
    export CATALINA_HOME=/var/webs/alojamiento.dominio.com/apache-tomcat-9.0.43
    ./startup.sh

    Ruta de trabajo: /var/webs/alojamiento.dominio.com/apache-tomcat-9.0.43/bin
    Configuración del path: /usr/local/bin/jdk-11.0.10+9/bin/

    Ejecutar como usuario: <id del usuario de la web>
    Ejecutar como grupo: <id del grupo de la web>

    Tipo de servicio: forking

  9. Una vez creado el servicio, le damos a reiniciar y debería arrancarse el servicio tomcat en el puerto indicado en el conf/server.xml

  10. Si queremos ajustar opciones adicionales de memoria, se puede poner las siguientes declaraciones en el comando completo antes de hacer el ./startup.sh:

    # ajustar memoria maxima a 1GB (ms y mx igual para evitar gc-stop-the-world
    export CATALINA_OPTS="-Xms512M -Xmx1024M -server"
    

    Donde:

    • -Xms : es el mínimo heap size. Se recomienda poner un valor que sea la mitad de -Xmx
    • -Xmx : es el máximo heap size. Este es el valor que configuraremos como máximo de heap size. Por defecto, si no configuramos nada, se ajustará a 256MB.
    • -server : activa las optimizaciones de ejecución para servidor.
    • -XX:+UseParallelGC : usar recoleción de basura paralela.
  11. Ahora, nos vamos al alojamiento asociado a este tomcat y creamos un proxy pass con / si es para todas las rutas o las rutas particulares que correspondan:

    Ruta: /
    URL remota: http://localhost:8080
    Preservar cabecera Host: [X] (marcar)

    Comentarios: servicio systemctl asociado:

    >> systemctl status Tomcat-1.service -l
    
  12. Llegados a este punto ya deberías tener un servicio tomcat listo para comenzar a ser configurado con las aplicaciones que se necesiten, y conectado con un alojamiento core-admin donde poder configurar certificados, accesos y opciones.

4. Añadiendo administrador web (Manager App)

Para acceder a las URLs de gestión:

  1. Editar el fichero tomcat-users.xml localizado en la siguiente ruta:

     apache-tomcat-9.0.43/conf/tomcat-users.xml
    
  2. Añadir una entrada como la que sigue dentro de la declaración <tomcat-users />

    <tomcat-users>
        ....
        <user username="usuario-administrador" password="contraseña-en-plano" roles="manager-gui, admin-gui" />
    </tomcat-users>
    
  3. No hace falta reiniciar. Tomcat coge los cambios automáticamente. Si no los coge, revisar formato del fichero.

    
    

5. Corrección de fallos conocidos

  1. java.lang.OutOfMemoryError: Java heap space:

    Este error ocurre cuando se alcanza el máximo de memoria permitida en la pila (Heap). Revise las opciones -Xms y -Xmx que se proponen en párrafos anteriores para incrementar el valor. Una vez aplique los cambios, tendrá que reiniciar el servicio.