Instalar Apache Tomcat 10 en Rocky Linux 8

En esta entrada os explico cómo instalar Apache Tomcat 10 sobre un servidor Rocky Linux 8. La idea para este artículo viene porque tengo intención de desplegar herramientas sobre él, que me parecen interesantes. Por lo que vamos a construir primero los cimientos, para no empezar la casa por el tejado.

Como no podía ser de otra manera voy a utilizar una magnífico VPS con Rocky Linux 8.5, creado en mi proveedor de confianza Clouding.io, que no me canso de recomendar.

Logo de Apache Tomcat

Sobre Apache Tomcat

Se trata de un contenedor de servlets y JSP. Incluye el compilador Jasper, que compila JSPs convirtiéndolas en servlets. El motor de servlets de Tomcat a menudo se presenta en combinación con el servidor web Apache. Digamos, que es la respuesta de la Apache Foundation, a lenguajes web como PHP o ASP.NET

Sirve para presentar aplicaciones desarrolladas en Java, se trata de un proyecto open source.

Al ser desarrollado en Java puede funcionar sobre cualquier sistema operativo de servidor, ya os he comentado que en nuestro caso es un sistema GNU Linux.

Instalar Apache Tomcat 10 en Rocky Linux 8

Una vez ya tenemos disponible nuestro servidor, primero de todo actualizamos los repositorios e instalamos Java, algo básico para el funcionamiento de Tomcat, obvio:

dnf update
dnf -y install java-latest-openjdk-devel

De esta manera instalaremos la versión 9 de Java, que ya viene en los repositorios de Rocky Linux 8.5

Si no tenemos el usuario ‘tomcat’ creado procedemos a crearlo:

groupadd tomcat
useradd -M -s /bin/nologin -g tomcat -d /opt/tomcat tomcat

De esta manera indicamos que el usuario no usa login, pertenece al grupo tomcat y tiene como directorio principal /opt/tomcat

Una vez hecho esto ya podemos descargar la última versión estable que a fecha de hoy es la 10.1.8

Imagen del apartado de descargar de Apache Tomcat

Descargamos el fichero con extensión tar.gz y lo guardamos en la carpeta temporal /tmp

cd /tmp
https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.8/bin/apache-tomcat-10.1.8.tar.gz

Creamos la ubicación /opt/tomcat y descomprimimos el fichero:

mkdir /opt/tomcat 
tar xvf apache-tomcat-10.1.8.tar.gz -C /opt/tomcat --strip-components=1

Vale, ahora tenemos que asignar permisos y propietario a la carpeta y a diferentes subcarpetas y ficheros.

cd /opt/tomcat
chgrp -R tomcat /opt/tomcat
chmod -R g+r conf
chmod g+x conf
#Por último asignmos el propietario a las carpetas principales
chown -R tomcat webapps/ work/ temp/ logs/

Como hemos descargado el software y no hemos utilizado ‘dnf‘ para la instalación desde los repositorios, debemos crear un fichero de arranque y que lo sepa leer systemd.

Creamos el fichero:

vi /etc/systemd/system/tomcat.service

Con este contenido:

[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target
 
[Service]
Type=forking
 
Environment=JAVA_HOME=/usr/lib/jvm/jre
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'
 
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/bin/kill -15 $MAINPID
 
User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always
 
[Install]
WantedBy=multi-user.target

Se trata de una configuración básica, si tienes ciertos conocimientos del funcionamiento de Tomcat, la puedes adaptar a tu gusto.

Ahora nos toca indicar a systemd que utilice el nuevo fichero:

systemctl daemon-reload
systemctl start tomcat
#Lo añadimos al arranque
systemctl enable tomcat
#Podemos ver su estado
systemctl status tomcat

De esta manera, si accedemos a la IP o nombre FQDN de nuestro servidor, más el puerto 8080, ya deberíamos ver algo similar a lo siguiente:

Interfaz web de Tomcat recién instalado

Todavía nos queda trabajo. Ahora debemos añadir un usuario que tenga permisos de administrador, para poder acceder al panel. Para ello debemos modificar el fichero /opt/tomcat/conf/tomcat-users.xml, indicando el nuevo usuario:

vi /opt/tomcat/conf/tomcat-users.xml

Dentro del fichero, justo dentro del apartado con las siguientes líneas:

(...)
<user username="administrador" password="contraseña" roles="manager-gui,admin-gui"/>
</tomcat-users>

En la línea anterior hemos creado un nuevo usuario, llamado «administrador» con roles sobre la «manager-gui» y la «admin-gui», esto es, los paneles de administración. Atención aquí, para que funcionen tenemos que eliminar la línea anterior y posterior, de comentarios.

Por defecto en las últimas versiones de Tomcat el acceso a los paneles de ministración y manager están restringuidos, para IP que no sean la del propio servidor. Para cambiar esto y así acceder de manera remota desde otra ubicación, se deben modificar los ficheros /opt/tomcat/webapps/manager/META-INF/context.xml y /opt/tomcat/webapps/host-manager/META-INF/context.xml, modificando las siguientes líneas:

<Context antiResourceLocking="false" privileged="true" >
  <!--<Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />-->
</Context>

Una vez realizamos el cambio guardamos, salimos y reiniciamos el servicio:

systemctl restart tomcat

Y con esto ya estaría. Espero que esta información os sea de utilidad en algún momento.