Las versiones nuevas de Sistemas Operativos basados en Linux, como por ejemplo Almalinux, permiten sólo la instalación de Tomcat en versiones superiores a las 10.0; lo cual trae consigo un cambio en el proceso de instalación y en el de despliegue de aplicaciones en servidores con cPanel.
Es necesario preparar el servidor cPanel con Almalinux para usar Tomcat 10.x.
Tomcat funciona gracias al administrador de contenedores llamado PODMAN. Tenemos que activar este contenedor a nivel servidor con credenciales root.
Cabe destacar que, para realizar este proceso, necesita no solo tener acceso como usuario root y como usuario cPanel al servidor; sino también poseer conocimientos, al menos básicos, para conectar vía SSH al servidor y correr comandos en consola.
Comenzamos
Nos conectamos vía SSH al servidor con usuario root.
Primero corremos estos comandos para instalar Podman:
dnf install -y ea-podman-repo
dnf install -y ea-podman
Luego es necesario instalar el paquete de Tomcat en el servidor para que esté disponible:
dnf install -y ea-tomcat101
Con estos pasos quedaría listo el servidor para poder usar el contenedor a nivel usuario de cPanel, para luego poder instalar Tomcat en cada cuenta que lo necesite.
El usuario de cPanel debe tener activado SSH.
Ya conectado vía SSH como usuario de cPanel, deberemos correr el siguiente comando para instalar ea-tomcat como Container:
/usr/local/cpanel/scripts/ea-podman install ea-tomcat101
Esto creará el directorio de aplicaciones para la utilización de Tomcat en la siguiente ruta:
/home/usuarioCpanel/ea-podman.d/nombre-de-container
Donde “usuarioCpanel” es el usuario de cPanel de la cuenta donde corrimos el comando; y “nombre-de-container” es el nombre del contenedor de Tomcat. Este nombre lo crea el comando por defecto.
Corriendo alguno de los siguientes comandos se podrá obtener el nombre del container:
/usr/local/cpanel/scripts/ea-podman containers
/usr/local/cpanel/scripts/ea-podman registered
/usr/local/cpanel/scripts/ea-podman running
Por poner un ejemplo, un contenedor se puede llamar:
ea-tomcat101.miusuariocpanel.01
Deberemos usar ese nombre para poder correr cualquier comando de Tomcat dentro del usuario de cPanel.
Hay que detallar que en la instalación de Tomcat se guarda en:
/home/usuarioCpanel/ea-podman.d/nombre-de-container
Dentro de dicha instalación, las carpetas más importantes o a tener en cuenta son:
1) /home/usuarioCpanel/ea-podman.d/nombre-de-container/conf
En esta carpeta se encuentran los archivos de configuración de Tomcat; donde hay que destacar el archivo server.xml
2) /home/usuarioCpanel/ea-podman.d/nombre-de-container/logs
Aquí tenemos los registros o logs de la aplicación.
3) /home/usuarioCpanel/ea-podman.d/nombre-de-container/webapss/ROOT
Aquí se suben los archivos de la aplicación JAVA.
Podemos probar que Tomcat funciona realizando los siguientes pasos:
- Creamos en /home/usuarioCpanel/ea-podman.d/nombre-de-container/webapss/ROOT un archivo llamado index.jsp que tenga el siguiente contenido:
<html><body>
<% out.println("Hello world! -- From JSP"); %>
</body></html>
- Luego, debemos agregar este código en /home/usuarioCpanel/ea-podman.d/nombre-de-container/conf/server.xml
Como muestra la imagen, en la linea mencionada debajo:
<Host name="localhost" appBase="webapps" unpackWARs="false" autoDeploy="false" deployOnStartup="false" deployXML="false">
Debemos agregar este Context:
<Context path="" docBase="ROOT">
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
Luego debemos reiniciar el container de Tomcat:
/usr/local/cpanel/scripts/ea-podman restart nombre-de-container
Ahora, es importante saber que puertos fueron asignados al container de Tomcat instalado.
Podemos ver esto corriendo:
/usr/local/cpanel/scripts/ea-podman running
El primer puerto es el puerto HTTP y el segundo puerto es el AJP. Cada container de Tomcat instalado asignará distintos puertos.
En este punto, deberíamos poder ver el contenido del index.jsp que subimos escribiendo esta dirección web en el navegador:
IPservidor:PuertoTomcatHTTP/index.jsp
Por ejemplo: http://10.11.12.13:10000/index.jsp
Si podemos visualizar de manera correcta el archivo index.jsp que pusimos como prueba, implica que Tomcat está bien instalado y configurado hasta este punto.
Ahora procederemos con unas modificaciones para poder visualizar aplicaciones JAVA desde direcciones web normales; como si se usara Apache.
Vamos a tener que loguearnos ahora al servidor nuevamente como usuario root para proceder con estos pasos.
Deberemos crear estos dos directorios, donde /user/domain debe reemplazarse por el usuario cPanel y su dominio.
mkdir -p /etc/apache2/conf.d/userdata/std/2_4/user/domain/
mkdir -p /etc/apache2/conf.d/userdata/ssl/2_4/user/domain/
Luego debemos crear el archivo custom.conf en el primer directorio creado:
nano /etc/apache2/conf.d/userdata/std/2_4/user/domain/custom.conf
El comando nano o vi crean el archivo sin necesidad de usar otro comando para crear archivos en SSH; como lo era touch.
En este archivo debemos agregar el siguiente proxy, donde se usa el segundo puerto que nos da como resultado al correr el comando:
/usr/local/cpanel/scripts/ea-podman running
En este ejemplo, el comando da como resultado dos puertos: 10000 y 10001.
El puerto 10001 es el que se usa en el proxy para utilizar AJP.
El archivo custom.conf debería tener el siguiente contenido:
<IfModule proxy_ajp_module>
ProxyPassMatch "/.well-known/(.*)" "!"
ProxyPassMatch "/(.*).jsp" "ajp://localhost:10001"
ProxyPassMatch "/servlets/(.*)" "ajp://localhost:10001"
</IfModule>
(Recuerde que el puerto 10001 es un ejemplo, el resultado en su instalación puede ser otro).
Luego, creamos un symlink desde este archivo custom.conf desde la ruta /etc/apache2/conf.d/userdata/std/2_4/user/domain/ a la ruta /etc/apache2/conf.d/userdata/ssl/2_4/user/domain/. Recordar reemplazar /user/domain por el usuario cpanel y su dominio.
ln -s /etc/apache2/conf.d/userdata/std/2_4/user/domain/custom.conf /etc/apache2/conf.d/userdata/ssl/2_4/user/domain/custom.conf
Hecho esto, debemos recompilar el archivo httpd.conf corriendo el siguiente comando:
/usr/local/cpanel/scripts/rebuildhttpdconf
Este proceso no debería arrojar ningún error. Si se presenta un error, entonces existe algún mal tipeo o copiamos un espacio en blanco en el archivo custom.conf.
Por último, reiniciamos Apache:
service httpd restart
Deberíamos poder ver el index.jsp usando el dominio normal:
https://dominio/index.jsp
Algunos comandos útiles
Estos comandos mostrarán el Status, iniciarán, reiniciarán o detendrán el container de Tomcat:
/usr/local/cpanel/scripts/ea-podman status nombre-de-container
/usr/local/cpanel/scripts/ea-podman start nombre-de-container
/usr/local/cpanel/scripts/ea-podman restart nombre-de-container
/usr/local/cpanel/scripts/ea-podman stop nombre-de-container
Como modificar variables de Tomcat
Para realizar estos cambios es necesario conectar a SSH como usuario de root.
Se puede hacer este proceso como usuario de cPanel corriendo este comando:
/usr/local/cpanel/scripts/ea-podman bash nombre-de-container
Es necesario usar nano, vi o vim para editar el archivo.
Accedemos a la ruta /user/local/tomcat/bin:
cd /user/local/tomcat/bin
Ahora corremos el editor elegido para editar el archivo catalina.sh:
nano catalina.sh
Agregar la siguiente linea debajo del cuadro comentado:
CATALINA_OPTS=”-Xms512m -Xmx1024m”
La siguiente línea agregada significa que la aplicación tiene un mínimo de memoria de 512MB y un máximo de memoria de 1GB.
Luego, de grabar el cambio en el archivo catalina.sh, salir del modo root temporal con:
exit
Ahora reiniciamos el container asegurándonos que estamos nuevamente como usuario cpanel:
/usr/local/cpanel/scripts/ea-podman restart nombre-de-container
Procedemos a controlar el estado de Tomcat con el comando:
/usr/local/cpanel/scripts/ea-podman status nombre-de-container
Con esto corroboramos que luego de editar el archivo catalina.sh Tomcat está funcionando correctamente.
Fuente:
https://docs.cpanel.net/ea4/containers/tomcat-via-containers/
https://docs.cpanel.net/ea4/containers/easyapache-4-containers/#almalinux-and-rocky-linux