Instalación de Tomcat 10 en cPanel -Almalinux

Los siguientes pasos requieren que la cuenta de hosting ya esté creada. Debe tener acceso SSH activado. Debe ser Normal Shell, el modo Jailed no funcionará.

Primero, habrá que ingresar, vía SSH, con los datos de la cuenta cPanel. No usar su ni sudo.

Correr este comando para instalar ea-tomcat como container:

/usr/local/cpanel/scripts/ea-podman install ea-tomcat101

Esto creará el directorio de aplicaciones en: /home/usuarioCpanel/ea-podman.d/nombre-de-container Ej: /home/tomcattest/ea-podman.d/ea-tomcat101.tomcattest.01 Corriendo cualquiera 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

[tomcattest]$ /usr/local/cpanel/scripts/ea-podman containers
{
   "ea-tomcat101.tomcattest.01" : {
      "container_name" : "ea-tomcat101.tomcattest.01",
      "image" : "tomcat:10.1.24",
      "pkg" : "ea-tomcat101",
      "pkg_version" : "10.1.24-1",
      "user" : "tomcattest"
   }
}

Corriendo el siguiente comando obtendremos el nombre del container y sus puertos:

/usr/local/cpanel/scripts/ea-podman running

[tomcattest]$ /usr/local/cpanel/scripts/ea-podman running
{
   "ea-tomcat101.tomcattest.01" : {
      "image" : "docker.io/library/tomcat:10.1.24\n",
      "ports" : [
         "10000",
         "10001"
      ]
   }
}

Por ejemplo, un container se puede llamar: ea-tomcat101.miusuariocpanel.01 Habrá que usar ese nombre para correr cualquier comando de Tomcat para este usuario.

Dentro del directorio /home/usuarioCpanel/ea-podman.d/nombre-de-container los directorios mas importantes son:

/conf Donde está el archivo server.xml y otros archivos de configuración. /logs Donde se guardan los logs. /webapps/ROOT Donde se deben subir los archivos de la aplicación Java.

Para comprobar si Tomcat funciona podemos crear un archivo index.jsp dentro del directorio /webapps/ROOT mencionado anteriormente, y agregarle este contenido:

<html><body>
<% out.println("Hello world! -- From JSP"); %>
</body></html>

Luego, debemos agregar el siguiente código en /conf/server.xml en la sección donde figura:

<Host name="localhost" appBase="webapps" unpackWARs="false" autoDeploy="false" deployOnStartup="false" deployXML="false">

Agregar:

<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 EJ: /usr/local/cpanel/scripts/ea-podman restart ea-tomcat101.tomcattest.01

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.

En este punto, deberíamos poder ver el contenido del index.jsp que creamos anteriormente escribiendo esta dirección web en el navegador: http://IP-Servidor:PuertoTomcatHTTP/index.jsp

Ej: http://69.61.102.92:10000/index.jsp

Pasos para ver las aplicaciones Java desde direcciones web por dominio.

Debemos ingresar al servidor vía SSH, ahora como root:

Debemos 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 creamos el archivo custom.conf en el primer directorio creado (cuidado con /user/domain):

nano /etc/apache2/conf.d/userdata/std/2_4/user/domain/custom.conf

En este archivo debemos agregar el siguiente proxy, reemplazando 10001 por el segundo puerto que nos devolvió el comando: /usr/local/cpanel/scripts/ea-podman running

<IfModule proxy_ajp_module>
    ProxyPassMatch "/.well-known/(.*)" "!"
    ProxyPassMatch "/(.*).jsp" "ajp://localhost:10001"
    ProxyPassMatch "/servlets/(.*)" "ajp://localhost:10001"
</IfModule>

Luego, creamos un symlink desde este archivo a la segunda ruta que habíamos creado mas arriba. 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 esto:

/usr/local/cpanel/scripts/rebuildhttpdconf

No debería arrojar ningún error. Si encuentra un error podría estar en el código del archivo custom.conf que creamos.

Por último, reiniciamos Apache:

service httpd restart

Deberíamos poder ver el index.jsp usando el dominio normal: http://dominio/index.jsp

Redirección automática a HTTPS

Primero, habrá que instalar SSL en la cuenta usando AutoSSL, como hacemos normalmente.

Si el dominio funciona con https://dominio podemos proceder con la redirección automática.

Tendremos que ingresar al archivo server.xml del directorio conf de Tomcat:

usuarioCpanel/ea-podman.d/nombre-de-container/conf

En el archivo server.xml buscamos la linea:

<Connector port="8080" protocol="HTTP/1.1"

En esa linea debemos agregar: redirectPort="443"

Nos quedará la linea como indica la imagen:

Luego, debemos agregar este código en el archivo web.xml de la ruta de la aplicación en: /usuario/ea-podman.d/nombre-de-container/webapps/ROOT/WEB-INF

<security-constraint>
 <web-resource-collection>
 <web-resource-name>Entire Application</web-resource-name>
 <url-pattern>/*</url-pattern>
 </web-resource-collection>
 <user-data-constraint>
 <transport-guarantee>CONFIDENTIAL</transport-guarantee>
 </user-data-constraint>
</security-constraint>

Por ultimo reiniciamos el container de Tomcat del usuario:

/usr/local/cpanel/scripts/ea-podman restart nombre-de-container

Si probamos el dominio o aplicación sin https debería redirigir automáticamente a la versión https.

Eso es todo en cuanto a la instalación de Tomcat propiamente dicha.

Comandos Útiles:

Este comando, ejecutado como el usuario Cpanel, borrará el container de Tomcat que se instaló: Reemplazar nombre-de-container por el que se haya instalado.

/usr/local/cpanel/scripts/ea-podman uninstall nombre-de-container --verify

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

Con este comando se pueden correr ciertos comandos como root en forma rápida:

/usr/local/cpanel/scripts/ea-podman bash nombre-de-container

Como modificar variables de Tomcat (como la memoria xms/xmx)

Conectarse vía SSH como usuario Cpanel.

Correr este comando para poder editar archivos como root temporalmente:

/usr/local/cpanel/scripts/ea-podman bash nombre-de-container

Habrá que instalar vim, vi, nano o algún editor de archivos:

apt update

apt install vim o apt install nano

Deberíamos estar en /usr/local/tomcat. Debemos ingresar al subdirectorio bin y editar el archivo catalina.sh con vim o el editor instalado:

Agregar la siguiente linea debajo del cuadro comentado:

CATALINA_OPTS="-Xms512m -Xmx1024m"

Los limites del ejemplo pueden modificarse por los necesarios.

Luego de grabar el cambio en el archivo catalina.sh, salir del modo root temporal con:

exit

Reiniciar el container revisando que estemos nuevamente en modo usuario cpanel:

/usr/local/cpanel/scripts/ea-podman restart nombre-de-container

Chequeamos el status de Tomcat:

/usr/local/cpanel/scripts/ea-podman status nombre-de-container

Luego, chequear que se haya tomado el cambio con el comando:

ps aux |grep tomcat |grep Xmx

Última actualización