# Instalación de Tomcat 10 en cPanel -Almalinux

#### Documentación oficial: <https://docs.cpanel.net/ea4/containers/easyapache-4-containers/#almalinux-and-rocky-linux> <https://docs.cpanel.net/ea4/containers/tomcat-via-containers/>

{% hint style="info" %}
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á.
{% endhint %}

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**:&#x20;

`/usr/local/cpanel/scripts/ea-podman install ea-tomcat101`&#x20;

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.<br>

Para comprobar si **Tomcat** funciona podemos crear un archivo **index.jsp** dentro del directorio \
\&#xNAN;**/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>
```

<figure><img src="/files/YUy2nAOW5COBMZRLumMP" alt=""><figcaption></figcaption></figure>

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`

<div align="left"><figure><img src="/files/QggYoZJpnvU90Ibj2EUM" alt=""><figcaption></figcaption></figure></div>

{% hint style="warning" %}
El primer puerto es el puerto **HTTP** y el segundo puerto es el **AJP**.&#x20;
{% endhint %}

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>
```

<div align="left"><figure><img src="/files/w55UsVkzWFBSL4FoeCLz" alt=""><figcaption></figcaption></figure></div>

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:

<figure><img src="/files/znDpkhb6CyLtYWj9ZsCR" alt=""><figcaption></figcaption></figure>

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.&#x20;

### 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:

<div align="left"><figure><img src="/files/4Xar1bg6FwpUb9yvbrAL" alt=""><figcaption></figcaption></figure></div>

Agregar la siguiente linea debajo del cuadro comentado:

`CATALINA_OPTS="-Xms512m -Xmx1024m"`

<div align="left"><figure><img src="/files/LMf5JJ9p4WczDAemO3HD" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}
Los limites del ejemplo pueden modificarse por los necesarios.
{% endhint %}

Luego de grabar el cambio en el archivo **catalina.sh**, salir del modo root temporal con:&#x20;

`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`

<figure><img src="/files/Z8HTeJMRcFP6vBsWkkcM" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ayuda.sitioshispanos.com/menu-principal/guias/cloud-hosting/administracion-con-whm/instalacion-de-tomcat-10-en-cpanel-almalinux.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
