En esta entrada vamos a ver cómo instalar Tomcat 10 en Debian 11 Bullseye paso a paso, de forma que podrás desplegar aplicaciones de servidor basadas en la plataforma Jakarta EE 9 sobre tu máquina o VPS Debian.
Tabla de contenidos
Antes de instalar Tomcat 10 en Debian 11 Bullseye
Para poder seguir los pasos de esta guía de instalación de Tomcat 10 en Debian 11 Bullseye es importante partir de los siguientes requerimientos mínimos:
- Un sistema Debian 11 Bullseye actualizado.
- Entorno de ejecución de Java (JRE), versión 11 ó superior.
- Un usuario con privilegios de sudo.
- Acceso a Internet.
Si todavía no dispones del entorno mínimo necesario, es posible que te resulte útil consultar antes nuestra guía de instalación de Java en Debian 11 Bullseye.
También necesitaremos algunas herramientas del sistema que obtendremos de los repositorios de Debian 11, para lo que actualizamos las listas de paquetes:
~$ sudo apt update
E instalamos los paquetes necesarios:
~$ sudo apt install -y tar wget
Cómo descargar Tomcat 10 en Debian 11 Bullseye
Vamos a descargar Tomcat 10 para Debian 11 Bullseye desde la página de descargas del sitio oficial, ya que los repositorios del sistema no ofrecen paquetes para esta versión:
Encontraremos paquetes en los formatos .zip y .tar.gz, siendo más interesante este último. Podemos realizar la descarga directamente desde el navegador o, si trabajamos remotamente, desde consola con la herramienta wget:
~$ wget https://downloads.apache.org/tomcat/tomcat-10/v10.1.24/bin/apache-tomcat-10.1.24.tar.gz
Cómo instalar Tomcat 10 en Debian 11 Bullseye
Para instalar Tomcat 10 en Debian 11 tendremos que realizar una serie de tareas que nos permitan tratar esta plataforma como un servicio más del sistema.
Empezaremos creando el usuario y grupo con el que Tomcat 10 correrá como servicio:
~$ sudo useradd -U -m -d /opt/tomcat -k /dev/null -s /bin/false tomcat
Descomprimimos el paquete que acabamos de descargar en la ruta que hemos establecido como directorio personal del usuario tomcat:
~$ sudo -u tomcat tar xf apache-tomcat-10.1.24.tar.gz -C /opt/tomcat/
Como el subdirectorio que se acaba de crear contiene números de versión en su nombre, podemos renombrarlo o crear un enlace simbólico sin números de versión, para facilitar la instalación y mantenimiento:
~$ sudo ln -s /opt/tomcat/apache-tomcat-10.1.24/ /opt/tomcat/apache-tomcat
Crearemos el archivo de unidad para Systemd:
~$ sudo nano /etc/systemd/system/tomcat10.service
Con el contenido siguiente:
[Unit] Description=Tomcat 10.1 servlet container para Debian 11 Bullseye After=network.target [Service] Type=forking User=tomcat Group=tomcat 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
Una vez guardado el archivo, Tomcat 10 puede ser tratado ya como servicio.
Iniciamos el servicio con el comando systemctl:
~$ sudo systemctl start tomcat10
Podemos comprobar en cualquier momento el estado del servicio con el comando systemctl status tomcat10
:
Si necesitamos que Tomcat 10 inicie automáticamente en cada arranque de Debian 11, debemos habilitar el servicio:
~$ sudo systemctl enable tomcat10
Firewall
En caso de tener activado el firewall UFW en el sistema, para poder acceder desde red al servicio Tomcat 10 habrá que añadir una regla para el puerto 8080/TCP:
~$ sudo ufw allow 8080/tcp
Y queremos ofrecer conexiones seguras a nuestros visitantes será necesario añadir la regla para el puerto seguro, el 8443/TCP:
~$ sudo ufw allow 8443/tcp
Acceso
Para acceder a Tomcat 10 desde un navegador indicaremos la dirección de la máquina Debian 11 (IP, nombre DNS, dominio, localhost si accedemos localmente, etc.) indicando el puerto de conexión 8080.
Por ejemplo, la máquina Debian 11 Bullseye sobre la que hemos preparado este tutorial es accesible en el subdominio debian11.local.lan, de modo que podremos acceder utilizando http://debian11.local.lan:8080 como URL:
Se mostrará la página principal de la plataforma, donde encontraremos enlaces a las aplicaciones administrativas y a la documentación local (que es también una aplicación, la aplicación /docs). En las últimas versiones la aplicación de documentación local funciona directamente sólo si accedemos desde la máquina Debian 11 Bullseye donde está instalado Tomcat 10 (localhost). Si accedemos remotamente habrá que permitir el acceso editando su archivo de configuración:
~$ sudo nano /opt/tomcat/apache-tomcat/webapps/docs/META-INF/context.xml
Localizamos este bloque Valve:
... <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> ...
Y lo anulamos encerrándolo entre comentarios XML:
... <!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> --> ...
Guardamos los cambios y cerramos el archivo, y accedemos a la aplicación de documentación:
En cuanto a las aplicaciones administrativas ocurre otro tanto, igualmente sólo son accesibles localmente, para acceder desde red tendremos que realizar ajustes similares.
Cómo configurar Tomcat 10 en Debian 11 Bullseye
Acceso desde red a las aplicaciones administrativas
Las aplicaciones administrativas, /manager y /host-manager, también tienen restringido el acceso permitiendo únicamente conexiones locales. Para permitir acceso desde red, útil si trabajamos remotamente, editaremos el archivo context.xml de cada una de ellas.
En el caso de la aplicación /manager:
~$ sudo nano /opt/tomcat/apache-tomcat/webapps/manager/META-INF/context.xml
Buscaremos la directiva Valve dentro del bloque Context principal:
... <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> ...
Y la encerraremos en 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" /> --> ...
Ya podemos guardar los cambios.
En el caso de la aplicación /host-manager haremos lo propio con su archivo context.xml:
~$ sudo nano /opt/tomcat/apache-tomcat/webapps/host-manager/META-INF/context.xml
Cómo crear usuarios de Tomcat 10 en Debian 11
Algunas aplicaciones requieren autenticación básica de usuario, mediante usuarios definidos con ciertos roles. Es el caso de las aplicaciones administrativas, que exigirán el acceso con un usuario que tenga los roles admin-gui y manager-gui.
Para crear usuarios en Tomcat 10 editaremos el archivo tomcat-users.xml:
~$ sudo nano /opt/tomcat/apache-tomcat/conf/tomcat-users.xml
Antes de la etiqueta de cierre del bloque tomcat-users añadiremos una directiva user similar a esta:
... <user username="chacho" password="XXXXXXXX" roles="admin-gui,manager-gui"/> </tomcat-users>
Obviamente puedes utilizar el nombre de usuario que quieras con su propia contraseña.
Guardados los cambios, los usuarios quedarán disponibles.
Acceso a las aplicaciones administrativas
Una vez realizadas las configuraciones anteriores será posible acceder a las aplicaciones administrativas de Tomcat 10 en Debian 11 Bullseye, directamente o desde la página principal de la plataforma. La primera vez que accedamos se nos solicitará las credenciales de usuario.
Por ejemplo, para acceder a la aplicación «Server Status» (/manager/status):
Accedemos con el usuario y contraseña que definimos anteriormente y se mostrará la página de la aplicación.
Si a continuación accedemos al gestor de aplicaciones o «Manager App» (/manager/hml) no necesitaremos autenticar el acceso, ya que esta aplicación y la anterior en realidad forman parte de la misma (/manager).
Pero si accedemos a la aplicación «Host Manager» (/host-manager/html) sí habrá que introducir usuario y contraseña, tras lo que se permitirá también el acceso.
Cómo desplegar aplicaciones en Tomcat 10 desde archivos WAR
Si disponemos de alguna aplicación en formato WAR (archivos con extensión .war) lista para desplegar, accederemos al gestor de aplicaciones o «Manager App«. Buscaremos la sección «Desplegar«, dentro de esta «Archivo WAR a desplegar» y, mediante «Seleccionar archivo«, localizaremos el archivo .war.
Con el archivo .war seleccionado, usaremos «Desplegar«, de modo que ser cargará dicho archivo en la plataforma y en unos instantes se recargará el gestor de aplicaciones.
Si todo ha ido bien, en la sección «Mensaje» aparecerá el texto «OK» y en la lista de aplicaciones aparecerá la sección correspondiente a la nueva aplicación, con los controles correspondientes para gestionarla:
Podemos lanzar la aplicación desde el enlace correspondiente que aparece en la columna «Ruta«:
¡Así de sencillo!
Conexiones SSL en Tomcat 10 sobre Debian 11
En el caso de querer trabajar con conexiones seguras SSL mediante protocolo HTTPS es necesario disponer de archivos de clave de cifrado y certificado.
SSL para Tomcat 10 en sitios de Internet
Si sirves tus aplicaciones desde Internet es conveniente que utilices certificados firmados por autoridades certificadoras como Namecheap para ofrecer la máxima confiabilidad a tus visitantes.
Estos servicios suelen requerir un archivo de solicitud de firma de certificado o CSR, obtenido a partir del archivo de clave.
Empezaremos creando un directorio para guardar el almacén de claves:
~$ sudo mkdir /etc/keys
Creamos la clave de cifrado con el comando keytool, indicando el almacén de claves donde la guardaremos (ubicado en la ruta que acabamos de crear):
~$ sudo keytool -genkey -keysize 2048 -keyalg RSA -alias tomcat10 -keystore /etc/keys/tomcat10.jks
Este comando es interactivo y solicitará cierta información, como la creación de una contraseña para el nuevo almacén de claves (o su clave de acceso, si has utilizado un almacén ya existente).
También se solicitará información pública que se incorporará al certificado, donde es muy importante que en el primer dato solicitado («¿Cuáles son su nombre y su apellido?«) indiquemos el dominio con el que se accede al servidor Debian 11.
Por ejemplo, en este tutorial el servidor Debian 11 es accesible en el subdominio debian11.local.lan, así que ese será el dato que introduzcamos en la pregunta mencionada:
... ¿Cuáles son su nombre y su apellido? [Unknown]: debian11.local.lan ...
Con la clave ya creada e instalada, crearemos el archivo CSR que necesitamos para solicitar el certificado firmado:
~$ keytool -certreq -alias tomcat10 -keystore /etc/keys/tomcat10.jks -file tomcat10.csr
Se nos solicitará la clave de acceso al almacén de claves y obtendremos el archivo .csr en la ruta especificada en el parámetro -file. Podemos examinar el contenido de este archivo con el comando cat:
~$ cat tomcat10.csr -----BEGIN NEW CERTIFICATE REQUEST----- MIIC5zCCAc8CAQAwcjELMAkGA1UEBhMCRVMxEDAOBgNVBAgTB1Vua25vd24xEDAO ... y0ZR2tB2NayYNQ8kM0GZAd+Boh5aVQczChdt -----END NEW CERTIFICATE REQUEST-----
Normalmente los servicios como Namecheap no requieren el archivo en sí, sino su contenido, que será pegado en un formulario de solicitud.
SSL para Tomcat 10 en servidores locales o en pruebas
Si estás configurando un servicio para usar localmente, en pruebas, etc. bastará con disponer del certificado autofirmado que se crea junto con la clave de cifrado. En este caso, realiza los pasos del apartado anterior sin necesidad de crear el archivo CSR.
Configuración SSL
Para activar las conexiones SSL en Tomcat 10 editaremos el archivo server.xml:
~$ sudo nano /opt/tomcat/apache-tomcat/conf/server.xml
Dentro del bloque Service Catalina añadiremos un nuevo bloque Connector para manejar las conexiones SSL:
... <Service name="Catalina"> ... <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxthreads="150" SSLEnabled="true"> <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" /> <SSLHostConfig> <Certificate certificateKeystoreFile="/etc/keys/tomcat10.jks" certificateKeystorePassword="XXXXXXXX" /> </SSLHostConfig> </Connector> ...
Guardamos el archivo y reiniciamos el servicio:
~$ sudo systemctl restart tomcat10
Ya podemos acceder al servicio utilizando el protocolo HTTPS ofrecido en el puerto 8443.
Por ejemplo, siguiendo con la máquina Debian 11 de este tutorial, ahora podríamos acceder a Tomcat 10 utilizando https://debian11.local.lan:8443 como URL.
En caso de usar certificados autofirmados, el navegador mostrará una alerta:
Esto es normal, ya que el navegador no puede comprobar la validez del certificado al no existir firmas de autoridades certificadoras. Sin embargo, de alguna forma podremos continuar con la conexión y se mostrará la versión segura del sitio:
Obviamente, en caso de disponer de certificados firmados por autoridades certificadoras no se producirán molestos avisos.
Conclusión
Ahora que sabes cómo instalar Tomcat 10 en tu sistema Debian 11 Bullseye ya puedes desplegar aplicaciones basadas en Java, tanto de terceros como tus propios desarrollos, de manera sencilla y rápida.
Y si esta guía rápida te ha servido para instalar tu propia plataforma Tomcat 10 y quieres agradecérnoslo, puedes hacerlo dejando una propina a partir de 1 $ desde PayPal:
¡Gracias!