En esta ocasión vamos a ver cómo instalar Tomcat 10 en CentOS 9 paso a paso, de tal manera que puedas desplegar aplicaciones Java o servlets basados en Yakarta EE 9, tanto de terceros como tus propios desarrollos, sobre tu servidor o VPS CentOS.
Contenido
Antes de instalar Tomcat 10 en CentOS 9
Si quieres seguir los pasos de esta guía de instalación de Tomcat 10 en CentOS 9 será necesario partir del siguiente escenario:
- Un sistema CentOS 9 actualizado.
- El entorno de ejecución de Java 11, o JRE.
- Acceso a línea de comandos con un usuario con permisos de sudo.
- Conexión a Internet.
En caso de no disponer aún del entorno necesario puede ser útil consultar previamente nuestra guía de instalación de Java OpenJDK en CentOS 9.
También necesitaremos algunas herramientas que podremos obtener desde los repositorios del sistema, por lo que los actualizamos:
~$ sudo yum update
E instalamos dichas herramientas:
~$ sudo yum install -y tar wget
Cómo descargar Tomcat 10 para CentOS 9
Vamos a descargar Tomcat 10 para CentOS 9 desde la página de descargas del sitio oficial, donde encontraremos la última versión estable:
Tenemos varias opciones de descarga, siendo la que nos interesa en este caso el paquete .tar.gz de la sección «Core«.
Podemos realizar la descarga desde el navegador, pero si trabajamos remotamente desde consola podemos descargar el paquete utilizando alguna herramienta como 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 CentOS 9
A continuación describimos los pasos para instalar Tomcat 10 en CentOS 9, deteniéndonos en los detalles necesarios para que todo funcione a la primera.
Instalación de la aplicación
Creamos el usuario de CentOS 9 con el que correrá el servicio:
~$ sudo useradd -m -U -d /opt/tomcat -s /bin/false -k /dev/null tomcat
El directorio de usuario será la ruta donde instalemos Tomcat 10, es decir, donde descomprimiremos el paquete que acabamos de descargar:
~$ sudo tar xf apache-tomcat-10.1.24.tar.gz -C /opt/tomcat/
Se crea un nuevo subdirectorio en cuyo nombre aparece el nombre de versión, por lo que puede ser buena idea crear un enlace simbólico sin números, para facilitar la instalación, configuración y mantenimiento:
~$ sudo ln -s /opt/tomcat/apache-tomcat-10.1.24 /opt/tomcat/apache-tomcat
Como Tomcat 10 necesita escribir en su directorio de instalación, concedemos la propiedad del mismo y de su contenido al usuario de CentOS 9 con el que correrá el servicio:
~$ sudo chown -R tomcat: /opt/tomcat/apache-tomcat/
Configuración del servicio Tomcat 10
Para que Tomcat 10 pueda trabajar como un servicio más de CentOS 9 debemos crear un archivo de configuración de Systemd:
~$ sudo nano /etc/systemd/system/tomcat10.service
El contenido será similar al siguiente:
[Unit] Description=Tomcat 10.1 servlet container for CentOS 9 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
Observa que indicamos que el servicio debe correr con el usuario y grupo de CentOS 9 que creamos anteriormente.
Una vez guardado este archivo, iniciamos el servicio por primera vez:
~$ sudo systemctl start tomcat10
Y si necesitamos que Tomcat 10 inicie con cada arranque de CentOS 9, habilitaremos el servicio:
~$ sudo systemctl enable tomcat10
Podemos comprobar fácilmente el estado del servicio también con el comando systemctl:
~$ systemctl status tomcat10
Configuración del firewall
Si el firewall de CentOS 9 está activado, para poder acceder a Tomcat 10 desde red habrá que añadir la regla correspondiente, que incluirá el puerto 8080 para las conexiones estándar y el 8443 si deseamos conexiones seguras:
~$ sudo firewall-cmd --permanent --add-port={8080/tcp,8443/tcp}
Aplicamos los nuevos ajustes recargando la configuración del firewall:
~$ sudo firewall-cmd --reload
Acceder a Tomcat 10 en CentOS 9
Para acceder a Tomcat 10 en CentOS 9 desde un navegador indicaremos la dirección del servidor (IP, dominio, nombre DNS, localhost si conectamos localmente, etc.) indicando el puerto 8080 (inicialmente no están disponibles las conexiones seguras en el puerto 8443).
Por ejemplo, la máquina CentOS 9 sobre la que hemos desarrollado este tutorial es accesible en el subdominio centos9.local.lan, así que usaremos http://centos9.local.lan:8080 como URL.
El servicio funciona correctamente, pero aún debemos realizar algunos ajustes para poder utilizarlo a fondo.
Cómo configurar Tomcat 10 en CentOS 9
Seguridad SSL
Si deseas ofrecer conexiones seguras SSL a través del protocolo HTTPS para tus usuarios será necesario crear un archivo de clave para cifrar dichas conexiones.
Creamos un directorio donde guardaremos el almacén de claves:
~$ sudo mkdir /etc/keys
Y creamos la clave privada indicando su alias y el almacén de claves (ubicado en la ruta creada en el paso anterior):
~$ sudo keytool -genkey -alias tomcat10 -keyalg RSA -keystore /etc/keys/tomcat10.jks
Este comando es interactivo y solicitará la creación de una contraseña para acceder al almacén.
Además, solicitará información pública para incorporar al certificado, siendo la primera pregunta la más importante, puesto que debemos indicar el nombre DNS o dominio que se utilizará para acceder al servidor Tomcat 10:
... ¿Cuáles son su nombre y su apellido? [Unknown]: centos9.local.lan ...
Si se trata de un servidor en Internet necesitaremos además un certificado firmado por autoridades certificadoras, como los que ofrecen servicios profesionales como Namecheap.
Normalmente para solicitar un certificado necesitaremos un archivo de solicitud de certificado o CSR que obtendremos desde la clave privada que hemos creado:
~$ keytool -certreq -alias tomcat10 -file centos9.local.lan.csr -keystore /etc/keys/tomcat10.jks
Se nos pedirá la contraseña del almacén de claves y se creará el archivo .csr que contiene la información que necesitan los servicios de certificación,como Namecheap, para crear el certificado firmado.
Si se trata de un servicio en pruebas o local puedes continuar sin certificados firmados.
En cualquier caso, para activar las conexiones seguras, tendremos que realizar algunos ajustes en el archivo de configuración server.xml:
~$ sudo nano /opt/tomcat/apache-tomcat/conf/server.xml
Dentro del bloque Service añadimos un bloque Connector como el siguiente:
... <Service name="Catalina"> ... <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" compression="on" scheme="https" SSLEnabled="true" secure="true" defaultSSLHostConfigName="centos9.local.lan"> <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" /> <SSLHostConfig hostName="centos9.local.lan"> <Certificate certificateKeystoreFile="/etc/keys/tomcat10.jks" type="RSA" certificateKeystorePassword="XXXXXXXX" /> </SSLHostConfig> </Connector> ...
En este nuevo bloque indicamos el tipo de protocolo, almacén de claves y su contraseña, en su caso la ubicación del certificado firmado, etc.
Guardamos los cambios y reiniciamos el servicio:
~$ sudo systemctl restart tomcat10
Ahora podemos acceder de nuevo a Tomcat 10 en nuestro servidor CentOS 9 usando el protocolo seguro SSL, es decir, indicando el protocolo HTTPS y el puerto 8443.
Siguiendo con el ejemplo de este tutorial, ahora sería https://centos9.local.lan:8443 la nueva URL.
Si usamos certificados sin firmar, normalmente el navegador mostrará un aviso, ya que no puede comprobar la identidad y validez del certificado:
También se mostrará alguna opción para continuar con la conexión que implique el entendimiento de los riesgos.
Finalmente, se mostrará la versión segura del servicio Tomcat 10 en el servidor CentOS 9:
Acceso desde red a las aplicaciones administrativas
Desde la página principal del servicio Tomcat 10 se muestran enlaces a distintas aplicaciones preinstaladas.
Tanto la aplicación de documentación off-line, enlace «Documentation«, como las aplicaciones administrativas, accesibles en los enlaces «Server Status«, «Manager App» y «Host Manager» sólo son accesibles localmente. En caso de estar configurando Tomcat 10 en una máquina remota CentOS 9 será necesario configurar dicho acceso para estas aplicaciones a través de sus respectivos archivos context.xml.
En el caso de «Documentation«, aplicación (/docs) editamos su configuración:
~$ sudo nano /opt/tomcat/apache-tomcat/webapps/docs/META-INF/context.xml
Buscaremos la directiva «Valve«:
... <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> ...
Y la desactivaremos mediante 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" /> --> ...
Guardamos los cambios y la configuración queda aplicada.
En el caso de «Server Status» y «Manager App«, que en realidad son partes distintas de la misma aplicación (/manager), editamos su configuración:
~$ sudo nano /opt/tomcat/apache-tomcat/webapps/manager/META-INF/context.xml
E igual haríamos con la aplicación «Host Manager«, que tiene su propio archivo context.xml:
~$ sudo nano /opt/tomcat/apache-tomcat/webapps/host-manager/META-INF/context.xml
No es necesario reiniciar el servicio, ahora podemos acceder a la aplicación de documentación desde red:
Las aplicaciones administrativas también quedan accesibles, pero necesitan autenticación de usuario, por lo que queda algo más de configuración.
Usuarios de Tomcat 10
Independientemente de si se trata de acceso local o desde red, las aplicaciones administrativas requieren acceso mediante usuario y contraseña, usuario que debe tener determinados permisos asignados mediante roles. Para crear este usuario editaremos el archivo tomcat-users.xml de Tomcat 10:
~$ sudo nano /opt/tomcat/apache-tomcat/conf/tomcat-users.xml
Dentro del bloque tomcat-users incluiremos la definición del usuario con su nombre, contraseña y roles asociados:
... <user username="instalador" password="XXXXXXXX" roles="admin-gui,manager-gui"/> ...
El nuevo usuario debe tener los roles admin-gui y manager-gui, que ya incorpora Tomcat 10 por defecto. Nada impide crear dos usuarios distintos, cada uno de ellos con un solo rol administrativo.
Acceso a las aplicaciones administrativas
Hechos los ajustes necesarios, podemos acceder por fin a las aplicaciones administrativas desde la página principal de Tomcat 10, de modo que se nos pedirá el usuario y la contraseña que hemos creado en el paso anterior:
Una vez realizada la autenticación se mostrará la página de la aplicación, por ejemplo para «Server Status» o «Estado de Servidor«:
Si a continuación accedemos a «Manager App» o «Gestor de Aplicaciones Web de Tomcat» se abrirá directamente, porque el usuario ya está autenticado (es la misma aplicación):
Sin embargo, al acceder a «Host Manager» o «Gestor de Máquina Virtual de Tomcat» habrá que autenticarse de nuevo, aunque el usuario sea el mismo para todas las aplicaciones, porque se trata de una aplicación independiente de la anterior. Hecha la autenticación, se mostrará igualmente su página principal:
Cómo desplegar aplicaciones WAR en Tomcat 10 para CentOS 9
Si quieres desplegar alguna aplicación en formato WAR (archivos .war) sobre el servicio Tomcat 10 de tu máquina CentOS 9 habrá que visitar la sección «Manager App«, el gestor de aplicaciones, y buscar la sección «Desplegar«.
En «Archivo WAR a desplegar» podremos seleccionar el archivo .war en el sistema de archivos local mediante el control mostrado en el navegador:
Con el archivo .war seleccionado bastará utilizar el botón «Desplegar» y se cargará dicho archivo en el servidor.
En unos instantes aparecerá de nuevo la página del gestor de aplicaciones y, si todo ha ido bien, en la sección mensaje se mostrará «OK» y la aplicación aparecerá en la lista de aplicaciones:
La aplicación dispondrá de sus propios controles para administrarla (parar, recargar, replegar, etc.).
Podemos acceder a la aplicación usando el enlace mostrado en la primera columna de la fila:
¡Así de fácil!
Conclusión
Ahora que sabes cómo instalar y configurar Tomcat 10 en CentOS 9 ya puedes desplegar servlets y aplicaciones web realizadas en Java siguiendo el estándar Yakarta EE 9, tanto para proyectos locales como desde Internet usando tu servidor o VPS.
¡Apoya comoinstalar.me!
¿Ya puedes desplegar servlets desde tu propio sistema? Si es así y quieres agradecérnoslo, cualquier mínima contribución al mantenimiento de este sitio y la creación de nuevos tutoriales y guías es bienvenida.
Puedes ayudarnos dejando tan sólo 1 $ de propina desde PayPal:
O, si te sientes especialmente agradecido, puedes invitarnos a un café:
¡Gracias!
¿Dudas, preguntas, sugerencias?
Si te ha surgido alguna duda o pregunta siguiendo este tutorial, o tienes alguna sugerencia, corrección, etc. puedes dejar un comentario. Están moderados (ya sabes, el SPAM y tal) pero los revisamos diariamente.