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.
Contenido
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 8 (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.
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.89/bin/apache-tomcat-9.0.89.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.89.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.89 /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
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:
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:
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.
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.
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:
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:
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!
Actualizado a la versión 9.0.89.
Actualizado a la versión 9.0.88.
Actualizado a la versión 9.0.68.
Actualizado a la versión 9.0.65.
Actualizado a la versión 9.0.64.
Actualizado a la versión 9.0.62.
Actualizado a la versión 9.0.59.
Actualizado a la versión 9.0.58.
Actualizado a la versión 9.0.56.
Actualizado a la versión 9.0.54.