Cómo instalar Tomcat 9 en Rocky Linux 8

En este artículo veremos cómo instalar Tomcat 9 en Rocky Linux 8 paso a paso, de modo que podremos servir aplicaciones de Java o servlets desde nuestro servidor o VPS Rocky Linux.

Antes de instalar Tomcat 9 en Rocky Linux 8

Para poder seguir los pasos de esta guía de instalación de Tomcat 9 en Rocky Linux 8 habrá que partir del siguiente escenario:

  • Una máquina Rocky Linux 8 actualizada.
  • Entorno de ejecución de Java (JRE).
  • Acceso a línea de comandos con permisos de sudo.
  • Conexión a Internet.

Si no dispones aún del entorno mínimo, puede serte de utilidad nuestra guía de instalación de Java en Rocky Linux 8.

También necesitaremos algunas herramientas procedentes de los repositorios de Rocky Linux 8, así que los actualizamos:

~$ sudo yum update

E instalamos dichas herramientas:

~$ sudo yum install -y tar wget

Cómo descargar Tomcat 9 para Rocky Linux 8

Vamos a descargar Tomcat 9 para Rocky Linux 8 desde la página de descargas de dicha versión en el sitio oficial.

como descargar tomcat 9 para rocky linux 8

Encontraremos distintos formatos de paquete, como .zip y .tar.gz, siendo este último el que nos interesa. Podemos realizar la descarga directamente desde el navegador si estamos trabajando sobre la máquina Rocky Linux 8, o podemos hacerlo desde consola si trabajamos remotamente con alguna herramienta como wget:

~$ wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.88/bin/apache-tomcat-9.0.88.tar.gz

Cómo instalar Tomcat 9 en Rocky Linux 8

Vamos a instalar Tomcat 9 en Rocky Linux 8 como un servicio más del sistema, así que empezaremos añadiendo el usuario con el que correrá dicho servicio:

~$ sudo useradd -m -U -k /dev/null -d /opt/tomcat -s /bin/false tomcat9

El comando anterior crea la ruta /opt/tomcat como directorio de inicio del nuevo usuario, así que será ahí donde descomprimiremos el paquete que acabamos de descargar:

~$ sudo tar xf apache-tomcat-9.0.88.tar.gz -C /opt/tomcat/

Como el nombre del nuevo subdirectorio que se crea contiene el número de versión de Tomcat 9, renombraremos el subdirectorio para facilitar la configuración y el mantenimiento:

~$ sudo mv /opt/tomcat/apache-tomcat-9.0.88 /opt/tomcat/apache-tomcat

Finalmente, concederemos la propiedad de todos estos nuevos archivos al usuario tomcat9:

~$ sudo chown -R tomcat9: /opt/tomcat/apache-tomcat

Configurando el nuevo servicio

Creamos el archivo de configuración de Tomcat 9 para Systemd:

~$ sudo nano /etc/systemd/system/tomcat9.service

El contenido será similar al siguiente:

[Unit]
Description=Tomcat 9.0 servlet container para Rocky Linux 8
After=network.target

[Service]
Type=forking
User=tomcat9
Group=tomcat9
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom"
Environment="CATALINA_BASE=/opt/tomcat/apache-tomcat"
Environment="CATALINA_HOME=/opt/tomcat/apache-tomcat"
Environment="CATALINA_PID=/opt/tomcat/apache-tomcat/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
ExecStart=/opt/tomcat/apache-tomcat/bin/startup.sh
ExecStop=/opt/tomcat/apache-tomcat/bin/shutdown.sh

[Install]
WantedBy=multi-user.target

Guardamos los cambios y el servicio queda listo para ser iniciado por vez primera:

~$ sudo systemctl start tomcat9

Podemos comprobar que el servicio ha quedado en ejecución con la opción status del comando systemctl:

~$ systemctl status tomcat9

como instalar tomcat 9 en rocky linux 8

El servicio debería estar en ejecución.

Si además queremos que Tomcat 9 inicie automáticamente con cada arranque de Rocky Linux 8, deberíamos habilitar el servicio:

~$ sudo systemctl enable tomcat9

Configuración del firewall de Rocky Linux 8 para Tomcat 9

En caso de que tengas activado el firewall de Rocky Linux 8 y quieras que el servicio Tomcat 9 sea accesible desde red, habrá que añadir las correspondientes excepciones.

Para permitir conexiones HTTP:

~$ sudo firewall-cmd --permanent --add-port=8080/tcp

Y para permitir conexiones seguras HTTPS mediante SSL:

~$ sudo firewall-cmd --permanent --add-port=8443/tcp

Aplicaremos las nuevas reglas recargando la configuración del firewall:

~$ sudo firewall-cmd --reload

Cómo acceder al servicio

Para acceder a Tomcat 9 en Rocky Linux 8 desde un navegador introduciremos la dirección IP, nombre DNS, dominio, localhost (si accedemos localmente), etc. añadiendo el puerto 8080.

Por ejemplo, la máquina Rocky Linux 8 que hemos usado para redactar este tutorial es accesible en el subdominio rocky8.local.lan, así que podemos emplear http://rocky8.local.lan:8080 como URL:

instalar tomcat 9 en rocky linux 8

Podrías querer acceder mediante conexión segura, pero para ello hay que realizar algunos ajustes en la configuración, cosa que veremos a continuación.

Cómo configurar Tomcat 9 en Rocky Linux 8

A continuación explicamos cómo configurar Tomcat 9 en Rocky Linux 8 para poder aplicar los ajustes más habituales en el servicio que estamos instalando.

Seguridad SSL

Para poder activar el servicio en modo seguro, mediante conexiones SSL, será necesario disponer de los correspondientes archivos de clave y certificado. Para servicios disponibles desde Internet es importante que los archivos de certificado estén firmados por autoridades certificadoras, como los certificados que podemos obtener a través de servicios profesionales como Namecheap:

SSL Certificate for just $8.88 with Namecheap

Podemos crear la clave de cifrado en nuestra máquina Rocky Linux 8 con la herramienta keytool. Para ello previamente creamos una ruta donde guardar las claves:

~$ sudo mkdir /etc/keys

Y creamos la clave de cifrado indicando un alias y la ruta del almacén (que acabamos de crear en el paso anterior):

~$ sudo keytool -genkey -alias tomcat9 -keyalg RSA -storetype pkcs12 -keystore /etc/keys/tomcat9.jks

Este comando es interactivo y, además de crear una contraseña, solicita incorporar información pública al certificado. Es importante que en la primera pregunta indiquemos el dominio con el que se accederá al servicio:

...
¿Cuáles son su nombre y su apellido?
  [Unknown]:  rocky8.local.lan
...

Si queremos obtener un certificado firmado por un servicio de certificación, crearemos el archivo CSR o archivo de solicitud de firma de certificado a partir de la clave de cifrado que acabamos de crear, usando de nuevo el comando keytool:

~$ keytool -certreq -alias tomcat9 -keystore /etc/keys/tomcat9.jks -file rocky8.local.lan.csr

Se solicitará la contraseña para acceder al almacén de claves.

El parámetro -file indica el archivo CSR que queremos crear, en este caso en el directorio de trabajo. Podemos examinar el contenido del archivo .csr con el comando cat:

~$ cat rocky8.local.lan.csr
-----BEGIN NEW CERTIFICATE REQUEST-----
MIIC6jCCAdICAQAwdTEQMA4GA1UEBhMHVW5rbm93bjEQMA4GA1UECBMHVW5rbm93
...
kcRb6GteCn6wCbab3ENbyXNDpABv6+m+0kkZ6Lyz
-----END NEW CERTIFICATE REQUEST-----

Y es precisamente este contenido en texto plano lo que se envía al servicio certificador a través del formulario de solicitud de certificado.

En caso de un servicio en pruebas o local, no es necesario utilizar certificados firmados.

Por fin podemos empezar a realizar la configuración, editando el archivo server.xml del servidor de Tomcat 9:

~$ sudo nano /opt/tomcat/apache-tomcat/conf/server.xml

Dentro del bloque de servicio Catalina, creamos un bloque Connector, normalmente tras el bloque Connector principal:

...
    <Service name="Catalina">
...
        <Connector port="8443" maxThreads="150" scheme="https" secure="true"
                SSLEnabled="true" keystoreFile="/etc/keys/tomcat9.jks"
                keystorePass="XXXXXXXX" clientAuth="false" keyAlias="tomcat9"
                sslProtocol="TLS" />
...

Observa que utilizamos las rutas del almacén de claves y la contraseña del mismo.

Guardamos los cambios y reiniciamos el servicio:

~$ sudo systemctl restart tomcat9

Ya podemos acceder mediante conexión segura SSL, usando el protocolo HTTP y el puerto 8443.

En el ejemplo de este tutorial, ahora emplearíamos https://rocky8.local.lan:8443 como nueva URL.

como configurar tomcat 9 en rocky linux 8

En caso de usar certificados autofirmados el navegador mostrará algún tipo de advertencia, ya que no puede comprobar la autenticidad de los certificados usados. Normalmente se ofrece alguna opción para continuar con la conexión.

tomcat 9 en rocky linux 8

Acceso a las aplicaciones administrativas

Normalmente, una vez configurado el servicio, es posible acceder de forma local (desde la propia máquina Rocky Linux 8 que estamos configurando) a las aplicaciones de documentación y de administración sin problemas.

Sin embargo, por defecto no es posible acceder desde red a dichas aplicaciones (aplicaciones /docs/manager y /host-manager), a través de los enlaces «Documentation«, «Server Status«, «Manager App» y «Host Manager«. Por motivos de seguridad sólo se permite acceso local, pero si estás interesado puedes modificar esta configuración.

Para ello, editamos el archivo de configuración context.xml de cada una de las aplicaciones; por ejemplo, para la aplicación /docs:

~$ sudo nano /opt/tomcat/apache-tomcat/webapps/docs/META-INF/context.xml

Localizamos el siguiente bloque:

...
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
...

Y lo desactivamos encerrándolo dentro de un bloque de comentarios XML:

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

Hecho esto podemos guardar y cerrar el archivo.

Haríamos otro tanto con las otras aplicaciones, para la aplicación /manager:

~$ sudo nano /opt/tomcat/apache-tomcat/webapps/manager/META-INF/context.xml

Y para la aplicación /host-manager:

~$ sudo nano /opt/tomcat/apache-tomcat/webapps/host-manager/META-INF/context.xml

Hechos estos cambios, ya podemos acceder desde red, por ejemplo, a la aplicación de documentación:

instalacion y configuracion de tomcat 9 en rocky linux 8

En el caso de las aplicaciones de administración del servicio, como necesitan autenticación por usuario y contraseña, aún hay que hacer algún ajuste más.

Usuarios

Independientemente de si el acceso es local o desde red, las aplicaciones administrativas requieren acceso mediante usuario y contraseña. Inicialmente Tomcat 9 no dispone de usuarios, así que los crearemos editando el archivo tomcat-users.xml:

~$ sudo nano /opt/tomcat/apache-tomcat/conf/tomcat-users.xml

Dentro del bloque tomcat-users añadiremos una directiva user con el nombre del usuario administrador, su contraseña y los roles admin-gui y manager-gui, roles requeridos por las aplicaciones administrativas:

...
        <user username="instalador" password="XXXXXXXX" roles="admin-gui,manager-gui"/>
</tomcat-users>

Guardamos los cambios y ya tenemos todo listo para el acceso a las aplicaciones /manager y /host-manager.

Acceso a las aplicaciones administrativas

Desde la página principal del servicio podemos usar los distintos enlaces para acceder a las aplicaciones administrativas.

Por ejemplo, «Server Status» nos conducirá a la aplicación «Estado de Servidor» pero, como advertimos anteriormente, requerirá autenticación:

configuracion de tomcat 9 en rocky linux 8

Introducimos usuario y contraseña, tal como los creamos anteriormente y se concederá acceso a la aplicación:

Si volvemos al menú principal y seguimos el enlace «Manager App» se abrirá directamente la aplicación «Gestor de Aplicaciones Web de Tomcat«:

Esto ocurre porque en realidad forma parte de la aplicación anterior, por tanto el usuario ya está autenticado.

Finalmente, si desde el menú principal seguimos el enlace «Host Manager«, de nuevo tendremos que utilizar usuario y contraseña, ya que es una aplicación distinta. Una vez autenticados tenemos acceso a la aplicación «Gestor de Máquina Virtual de Tomcat«:

Cómo desplegar aplicaciones en Tomcat 9 para Rocky Linux 8

Si disponemos de una aplicación lista para desplegar en formato .war sobre nuestro servidor Rocky Linux 8, abriremos el gestor de aplicaciones o «Manager App» de Tomcat 9 y buscaremos la sección «Desplegar».

En «Archivo WAR a desplegar» usaremos el control de selección de archivo para cargar el archivo .war correspondiente.

Con el archivo ya seleccionado actuaremos sobre «Desplegar«, de modo que el archivo será cargado y en unos instantes volverá a aparecer la página del gestor de aplicaciones.

Si todo ha ido bien, en la sección «Mensaje» aparecerá «Ok» y se mostrará la nueva aplicación en la lista:

Podemos usar los distintos controles para gestionar la aplicación (parar, recargar, replegar, etc.) o seguir el enlace mostrado en la lista para abrir la aplicación:

Conclusión

Ahora que ya sabes cómo instalar Tomcat 9 en Rocky Linux 8 puedes desplegar potentes aplicaciones de servidor realizadas en Java, los famosos servlets, tanto aplicaciones de terceros como para probar tus propios desarrollos.

Si tienes alguna pregunta, duda, sugerencia, corrección, etc. puedes dejar un comentario que, aunque están moderados para evitar el maldito SPAM, se revisan prácticamente a diario.

¡Apoya comoinstalar.me!

¿Ya puedes desplegar servlets en tu propia máquina gracias a esta pequeña guía? Si es así y quieres agradecérnoslo, puedes hacerlo con una pequeña contribución al mantenimiento de este sitio y la creación de nuevos tutoriales y guías.

Puedes ayudarnos dejando 1 $ de propina desde PayPal:

O, si te sientes especialmente agradecido, puedes invitarnos a un café:

¡Gracias!

Valora esta entrada

5/5 - (6 votos)

9 comentarios en «Cómo instalar Tomcat 9 en Rocky Linux 8»

Deja un comentario