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.53/bin/apache-tomcat-9.0.53.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 -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.53.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.53 /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. Para servicios disponibles desde Internet es importante que estos archivos estén firmados por autoridades certificadoras, certificados que podemos obtener a través de servicios profesionales como Namecheap:

SSL Certificate for just $8.88 with Namecheap

Si se trata de un servicio local o en pruebas, podemos utilizar certificados autofirmados creados por nosotros mismos con la herramienta keytool. Para ello creamos una ruta donde guardar los certificados:

~$ sudo mkdir /etc/keys

Y creamos el certificado indicando un alias y la ruta del almacén (el que acabamos de crear):

~$ sudo keytool -genkey -alias tomcat9 -keyalg RSA -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 imporante que en el apartado del nombre de organización indiquemos el dominio con el que se accederá al servicio:

...
¿Cuál es el nombre de su organización?
  [Unknown]:  rocky8.local.lan
...

Creado el certificado, seguiremos la sugerencia de migración al formato PKCS12:

~$ sudo keytool -importkeystore -srckeystore /etc/keys/tomcat9.jks -destkeystore /etc/keys/tomcat9.jks -deststoretype pkcs12

Editamos el archivo de configuración 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 accecer 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 a las aplicaciones sin problemas, por ejemplo, a la aplicación de documentación local (aplicación /docs):

instalacion y configuracion de tomcat 9 en rocky linux 8

Sin embargo, por defecto no es posible acceder desde red a las aplicaciones administrativas (aplicaciones /manager y /host-manager), a través de los enlaces «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 aplicación administrativa, por ejemplo para la aplicación /manager:

~$ sudo nano /opt/tomcat/apache-tomcat/webapps/manager/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.

Otro tanto haríamos con la aplicación /host-manager:

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

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="chacho" 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

Deja un comentario

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies.

ACEPTAR
Aviso de cookies