Cómo instalar Tomcat en CentOS 8

En este artículo explicamos cómo instalar Tomcat en CentOS 8 paso a paso, de modo que al final del tutorial tendrás funcionando este servidor de aplicaciones Java en tu servidor o VPS CentOS.

Antes de instalar Tomcat en CentOS 8

Si quieres seguir paso a paso esta guía de instalación de Tomcat en CentOS 8 debes partir de los siguientes requisitos básicos:

  • Una máquina CentOS 8 actualizada.
  • Entorno de Java JRE o JDK.
  • Acceso a consola con root o un usuario con privilegios de sudo.
  • Conexión a Internet.

Si todavía no tienes el entorno necesario, puede interesarte consultar previamente la guía de instalación de Java en CentOS 8.

Además, necesitaremos algunas utilidades del sistema, que podemos obtener desde los repositorios de CentOS 8, por lo que actualizaremos la información de estos repositorios:

~$ sudo yum update

E instalaremos los paquetes necesarios:

~$ sudo yum install -y tar wget

Cómo descargar Tomcat para CentOS 8

Ya que no existen paquetes en los repositorios de la distribución, debemos descargar Tomcat para CentOS 8 desde la propia página web del proyecto.

como descargar tomcat para centos 8

En la sección de descargas de Tomcat 9 encontraremos paquetes de los binarios en distintos formatos y para distintos sistemas:

descargar tomcat para centos 8

Para este tutorial descargaremos el paquete en formato .tar.gz, copiando el enlace y realizando la descarga desde consola mediante el comando wget:

~$ wget http://ftp.cixug.es/apache/tomcat/tomcat-9/v9.0.40/bin/apache-tomcat-9.0.40.tar.gz

Cómo instalar Tomcat en CentOS 8

Como puedes imaginar, instalar Tomcat en CentOS 8 no consiste en descomprimir un simple paquete, ya que habrá que realizar algunas tareas adicionales más. Vamos a describir estas tareas en los siguientes pasos.

Usuario tomcat

Puesto que se trata de un servicio, Tomcat necesita correr bajo un nuevo usuario de CentOS 8 que crearemos especialmente para la ocasión:

~$ sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat

Archivos de Tomcat

Descomprimimos el paquete que acabamos de descargar en el directorio que establezcamos para la instalación, por ejemplo en /opt/tomcat/:

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

Dentro de /opt/tomcat/ se crea un nuevo subdirectorio en cuyo nombre aparece la versión de Tomcat que estamos instalando en CentOS 8, por lo que es interesante crear un enlace simbólico sin números de versión:

~$ sudo ln -s /opt/tomcat/apache-tomcat-9.0.40 /opt/tomcat/apache-tomcat

Y concederemos la propiedad de este directorio y su contenido al nuevo usuario tomcat:

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

Cómo crear el servicio Tomcat en CentOS 8

Una vez acomodada la aplicación en su directorio de instalación, tenemos que crear el servicio de Tomcat en CentOS 8 para poder administrarlo igual que el resto de servicios del sistema. Para ello creamos su archivo de configuración correspondiente:

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

Con el siguiente contenido:

[Unit]
Description=Tomcat 9.0 servlet container
After=network.target

[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/etc/alternatives/jre"
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

Guardados los cambios y cerrado el archivo, refrescamos los servicios del sistema para que systemd descubra el nuevo servicio tomcat.service:

~$ sudo systemctl daemon-reload

Ahora ya podemos iniciar Tomcat, mediante systemctl:

~$ sudo systemctl start tomcat

Podemos comprobar el estado el servicio en cualquier momento con el comando systemctl status tomcat:

como instalar tomcat en centos 8

En el caso de que necesites tener el servicio Tomcat siempre disponible, es interesante habilitarlo para que inicie automáticamente junto a CentOS 8, cosa que haremos también con systemctl:

~$ sudo systemctl enable tomcat

Cómo configurar el firewall de CentOS 8 para Tomcat

Ya que el firewall de CentOS 8 está activado por defecto, si queremos usar el servicio Tomcat en red debemos añadir necesariamente una excepción. Tomcat escucha peticiones HTTP estándar en el puerto 8080 TCP, así que podemos añadir la siguiente regla:

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

Si tienes planeado usar conexiones seguras HTTPS, el puerto por defecto de Tomcat suelse ser el 8443 TCP, así que deberías añadir la regla adecuada:

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

Obviamente si modificas la configuración de Tomcat para trabajar con otros puertos distintos, deberás indicarlo en las reglas del firewall.

Es necesario recargar la configuración del firewall para aplicar los cambios:

~$ sudo firewall-cmd --reload

Cómo acceder a Tomcat

Para acceder al servicio Tomcat funcionando en CentOS 8, desde un navegador usaremos como URL la dirección IP o dominio del servidor añadiendo el puerto 8080. Por ejemplo, en este tutorial trabajamos sobre un servidor cuyo dominio es centos8.local.lan, así que podemos usar http://centos8.local.lan:8080/ como URL:

instalar tomcat en centos 8

Cómo configurar Tomcat en CentOS 8

Vamos a configurar algunos ajustes de Tomcat para poder trabajar con las aplicaciones incluidas y poder instalar otras nuevas.

Cómo cambiar el puerto de conexión de Tomcat

El puerto en el que Tomcat espera recibir conexiones es por defecto el 8080 TCP, un puerto que es bastante usado por diversas aplicaciones, como por ejemplo servidores proxy. Podría darse el caso de que quieras cambiar el puesto de conexión de Tomcat en CentOS 8 porque otra aplicación lo está usando o por cualquier otro motivo. Para hacer esto, editaremos el archivo server.xml de Tomcat:

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

Y buscaremos el siguiente fragmento:

...
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
...

Cambiaremos el valor 8080 por el que nos interese, por ejemplo 9090:

...
    <Connector port="9090" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
...

Una vez guardados los cambios habrá que reiniciar el servicio tomcat. Si es necesario, recuerda reconfigurar el firewall con el nuevo puerto.

Configurar acceso seguro SSL/HTTPS para Tomcat en CentOS 8

Si quieres que las conexiones de Tomcat en CentOS 8 sean seguras y cifradas mediante SSL, algo que es importante especialmente en conexiones a través de Internet, es necesario realizar algunos ajustes.

Para cifrar las conexiones se necesitan certificados SSL que podemos obtener mediante servicios profesionales como Namecheap:

SSL Certificate for just $8.88 with Namecheap

Es importante utilizar certificados firmados por autoridades de certificación cuando ofrecemos el servicio desde Internet. Pero para pruebas locales podemos generar certificados autofirmados, para lo que crearemos un directorio donde almacenarlos:

~$ sudo mkdir /etc/keys

Y creamos el certificado con el comando keytool:

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

Este comando es interactiva y nos permitirá crear una clave para el certificado e introducir información identificativa del emisor:

Introduzca la contraseña del almacén de claves:
Volver a escribir la contraseña nueva:
¿Cuáles son su nombre y su apellido?
  [Unknown]:
¿Cuál es el nombre de su unidad de organización?
  [Unknown]:
¿Cuál es el nombre de su organización?
  [Unknown]:  centos8.local.lan
¿Cuál es el nombre de su ciudad o localidad?
  [Unknown]:
¿Cuál es el nombre de su estado o provincia?
  [Unknown]:
¿Cuál es el código de país de dos letras de la unidad?
  [Unknown]:  ES
¿Es correcto CN=Unknown, OU=Unknown, O=centos8.local.lan, L=Unknown, ST=Unknown, C=ES?
  [no]:  si

El certificado se guardará en la ruta indicada en el argumento -keystore del comando keytool.

Ahora editamos el archivo de configuración del servidor Tomcat, server.xml:

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

Dentro del bloque Service denominado «Catalina«, y justo a continuación del bloque Connector principal, añadimos un nuevo bloque Connector:

...
  <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" />
...

Guardamos los cambios y reiniciamos el servicio:

~$ sudo systemctl restart tomcat

Ahora para acceder a Tomcat con conexiones usaremos el protocolo HTTPS, en lugar de HTTP, y especificaremos el puerto seguro (8443 por defecto) en lugar del puerto estándar (8080 por defecto).

Por ejemplo, la máquina CentOS 8 de este ejemplo es accesible en el subdominio centos8.local.lan, por lo que emplearemos https://centos8.local.lan:8443 como URL.

Tras los correspondientes avisos del navegador en caso de usar certificados autofirmados podremos acceder de forma segura a Tomcat en CentOS 8:

configurar ssl en tomcat para centos 8

Permitir el acceso a las aplicaciones de Tomcat

Aunque no hay mayor problema para acceder a la página principal del servicio, si intentamos acceder desde la red a distintas aplicaciones como las indicadas en los botones «Server Status«, «Manager App» o «Host Manager» encontraremos que no es posible:

instalacion de tomcat en centos 8

Esto se debe a que Tomcat usa una configuración de acceso individualizada por aplicación y concretamente para acceder a cualquiera de estas aplicaciones debemos configurar su propio acceso en el archivo context.xml de cada aplicación. Por ejemplo, para la aplicación Manager lo haríamos así:

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

Buscaremos la directiva Valve dentro del bloque Context:

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

Y la encerramos en un bloque de comentarios, para que no tenga efecto:

...
<!--
  <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.

Deberíamos hacer otro tanto para otras aplicaciones, como Host-Manager:

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

Realizados estos cambios, hay que reiniciar Tomcat para que los tenga en cuenta:

~$ sudo systemctl restart tomcat

Y si volvemos a cargar «Server Status» (aplicación manager), encontraremos que ahora funciona, pero nos pide iniciar sesión:

como configurar tomcat en centos 8

Vamos a ver qué podemos hacer para acceder a la aplicación.

Crear usuarios de Tomcat en CentOS 8

Necesitamos crear usuarios de Tomcat para que puedan acceder a las aplicaciones que lo requieren. La configuración de usuarios de Tomcat en CentOS 8 se hace en el archivo tomcat-users.xml:

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

El funcionamiento de los usuarios en Tomcat es sencillo. Las aplicaciones requieren que los usuarios tengan ciertos roles para poder acceder, así que tendremos que definir los usuarios indicando qué roles pueden desempeñar (en este caso los roles necesarios para acceder a las aplicaciones administrativas).

En el archivo tomcat-users.xml especificaremos estas definiciones dentro del bloque tomcat-users:

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

Hemos declarado los roles admin-gui y manager-gui, que son los que necesita un usuario para poder acceder a las aplicaciones Manager y Host-Manager. Además hemos creado también un usuario con ambos roles.

Si el usuario no funciona al primer intento, recarga la aplicación o reinicia Tomcat para que tenga en cuenta los nuevos roles y usuarios.

Al introducir las credenciales necesarias, ya podemos acceder a la aplicación «Server Status«:

Tomcat en CentOS 8

Igualmente, es posible acceder a la aplicación «Manager App«:

Tomcat para CentOS 8

Y también a «Host Manager«, el gestor de máquinas virtuales de Tomcat (habrá que identificarse de nuevo, al ser una aplicación distinta):

tomcat 9 en centos 8

Cómo desplegar aplicaciones Java en Tomcat

Si ya tienes aplicaciones Java en formato .war listas para desplegar, accede a la aplicación «Manager App«, o gestor de apliaciones web de Tomcat, y desplázate a la sección «Desplegar«, en la que podrás seleccionar el archivo .war usando el botón «Seleccionar archivo«:

tomcat 9 para centos 8

Al pulsar el botón «Desplegar» se cargará la página y si todo ha ido bien en la sección «Mensaje» obtendremos un escueto «OK«. Además, en la sección «Aplicaciones» veremos la nueva aplicación junto con algunos detalles y los controles para administrarla:

instalar tomcat 9 en centos 8

Siguiendo el enlace con el nombre de la nueva aplicación, esta se abrirá y podremos comprobar que funciona:

Cómo cambiar el límite de tamaño de archivo en Tomcat

Si vas a desplegar aplicaciones a partir de archivos WAR de gran tamaño puede que el límite por defecto de 50 MB se quede corto. Para cambiar el límite de tamaño de archivo en Tomcat tendremos que editar el archivo de configuración web.xml de la aplicación manager:

~$ sudo nano /opt/tomcat/apache-tomcat/webapps/manager/WEB-INF/web.xml

Buscaremos el bloque multipart-config:

...
    <multipart-config>
      <!-- 50MB max -->
      <max-file-size>52428800</max-file-size>
      <max-request-size>52428800</max-request-size>
      <file-size-threshold>0</file-size-threshold>
    </multipart-config>
...

Podemos ver que por defecto se establece un tamaño máximo de 50 MB (expresado en bytes), así que calcularemos el nuevo tamaño en bytes y lo cambiaremos. Por ejemplo, para 150 MB:

...
    <multipart-config>
      <!-- 150MB max -->
      <max-file-size>157286400</max-file-size>
      <max-request-size>157286400</max-request-size>
      <file-size-threshold>0</file-size-threshold>
    </multipart-config>
...

Una vez guardados los cambios, el nuevo límite máximo para archivos WAR estará disponible automáticamente, sin necesidad de reiniciar Tomcat.

Conclusión

Así de fácil es instalar Tomcat en CentOS 8, en unos instantes tendrás instalado y funcionando este servicio, listo para ofrecer servlets de Java, tanto de terceros como de desarrollo propio.

Si tienes dudas, preguntas, comentarios, etc. puedes dejar un comentario.

¡Apoya este sitio!

¿Ya estás listo para desplegar Java servlets gracias a esta guía de instalación de Tomcat en CentOS 8? Si es así y te apetece agradecérnoslo, una mínima aportación ayudará al mantenimiento de este sitio y creación de nuevas guías de CentOS 8 y Tomcat, y puedes contribuir invitándonos a un café:

 

O dejando una propina de 1 $ desde PayPal:

¡Gracias!

Valora esta entrada

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (6 votos, promedio: 5,00 de 5)
Cargando...

1 comentario en «Cómo instalar Tomcat en CentOS 8»

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