Apache Tomcat es una implementación de código abierto de las tecnologías Java Servlet, JavaServer Pages, Java Expression Language y Java WebSocket. Es uno de los servidores web y de aplicaciones más adoptados en el mundo actual. Tomcat es fácil de usar y tiene un sólido ecosistema de complementos.

Este tutorial explica cómo instalar Tomcat 9.0 en CentOS 8.

Instalación de Java

Tomcat 9 requiere Java SE 8 o posterior. Instalaremos OpenJDK 11 , la implementación de código abierto de la plataforma Java.

Ejecute el siguiente comando como root o usuario con privilegios sudo para instalar Java:

sudo dnf install java-11-openjdk-devel

Una vez completada la instalación, verifíquela comprobando la versión de Java:

java -version

La salida debería ser algo como esto:

openjdk version "11.0.5" 2019-10-15 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.5+10-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.5+10-LTS, mixed mode, sharing)

Creación de un usuario del sistema

Ejecutar Tomcat con el usuario raíz es un riesgo de seguridad. Crearemos un nuevo usuario y grupo del sistema con el directorio de inicio /opt/tomcatque ejecutará el servicio Tomcat. Para hacerlo, ingrese el siguiente comando:

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

Descargando Tomcat

La distribución binaria de Tomcat está disponible para su descarga desde la página de descargas de Tomcat .

En el momento de escribir este artículo, la última versión de Tomcat es 9.0.30Antes de continuar con el siguiente paso, consulte la página de descarga de Tomcat 9 para ver si hay una versión más reciente disponible.

Descargue el archivo zip de Tomcat wget en el /tmpdirectorio:

VERSION=9.0.30wget https://www-eu.apache.org/dist/tomcat/tomcat-9/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz -P /tmp

Una vez que se complete la descarga, extraiga el archivo tar en el /opt/tomcatdirectorio::

sudo tar -xf /tmp/apache-tomcat-${VERSION}.tar.gz -C /opt/tomcat/

Tomcat se actualiza periódicamente. Para tener más control sobre las versiones y actualizaciones, crearemos un enlace simbólico llamado latest, que apunta al directorio de instalación de Tomcat:

sudo ln -s /opt/tomcat/apache-tomcat-${VERSION} /opt/tomcat/latest

El usuario del sistema que se creó previamente debe tener acceso al directorio de instalación de tomcat. Cambie la propiedad del directorio a usuario y grupo tomcat:

sudo chown -R tomcat: /opt/tomcat

Haga que los scripts de shell dentro del bindirectorio sean ejecutables :

sudo sh -c 'chmod +x /opt/tomcat/latest/bin/*.sh'

Estos scripts se utilizan para iniciar y detener Tomcat.

Creación de un archivo de unidad Systemd

En lugar de iniciar y detener manualmente el servidor Tomcat, lo configuraremos para que se ejecute como un servicio. Abra su editor de texto y cree un tomcat.servicearchivo de unidad en el /etc/systemd/system/directorio:

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

Pegue el siguiente contenido:

/etc/systemd/system/tomcat.servicio
[Unit]
Description=Tomcat 9 servlet container
After=network.target

[Service]
Type=forking

User=tomcat
Group=tomcat

Environment="JAVA_HOME=/usr/lib/jvm/jre"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom"

Environment="CATALINA_BASE=/opt/tomcat/latest"
Environment="CATALINA_HOME=/opt/tomcat/latest"
Environment="CATALINA_PID=/opt/tomcat/latest/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"

ExecStart=/opt/tomcat/latest/bin/startup.sh
ExecStop=/opt/tomcat/latest/bin/shutdown.sh

[Install]
WantedBy=multi-user.target

Guarde y cierre el archivo.

Notifique a systemd que existe un nuevo archivo de servicio escribiendo:

sudo systemctl daemon-reload

Habilite e inicie el servicio Tomcat:

sudo systemctl enable --now tomcat

Consulta el estado del servicio:

sudo systemctl status tomcat

El resultado debe mostrar que el servidor Tomcat está habilitado y ejecutándose:

● tomcat.service - Tomcat 9 servlet container
   Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2020-01-15 20:38:07 UTC; 30s ago
  Process: 3957 ExecStart=/opt/tomcat/latest/bin/startup.sh (code=exited, status=0/SUCCESS)
  ...

Configuración del cortafuegos

Si su servidor está protegido por un firewall y desea acceder a la interfaz Tomcat desde el exterior de la red local, debe abrir el puerto 8080.

Use los siguientes comandos para abrir el puerto necesario:

sudo firewall-cmd --permanent --zone=public --add-port=8080/tcpsudo firewall-cmd --reload
Por lo general, cuando ejecuta Tomcat en un entorno de producción, debe usar un equilibrador de carga o un proxy inverso . Es una buena práctica permitir el acceso al puerto 8080solo desde su red interna.

Configuración de la interfaz de administración web de Tomcat

En este punto, debería poder acceder a Tomcat con un navegador web en el puerto 8080No se puede acceder a la interfaz de administración web porque aún no hemos creado un usuario.

Los usuarios y roles de Tomcat se definen en el tomcat-users.xmlarchivo.

Si abre el archivo, notará que está lleno de comentarios y ejemplos que describen cómo configurar el archivo.

sudo nano /opt/tomcat/latest/conf/tomcat-users.xml

Para crear un nuevo usuario que pueda acceder a la interfaz web de Tomcat (manager-gui y admin-gui), edite el archivo como se muestra a continuación. Asegúrese de cambiar el nombre de usuario y la contraseña a algo más seguro:

/opt/tomcat/latest/conf/tomcat-users.xml
<tomcat-users>
<!--
    Comments
-->
   <role rolename="admin-gui"/>
   <role rolename="manager-gui"/>
   <user username="admin" password="admin_password" roles="admin-gui,manager-gui"/>
</tomcat-users>

De forma predeterminada, la interfaz de administración web de Tomcat está configurada para permitir el acceso solo desde el host local.

Si necesita acceder a la interfaz web desde cualquier lugar, abra los siguientes archivos y comente o elimine las líneas resaltadas en amarillo:

/opt/tomcat/latest/webapps/manager/META-INF/context.xml
<Context antiResourceLocking="false" privileged="true" >
<!--
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->
</Context>
/opt/tomcat/latest/webapps/host-manager/META-INF/context.xml
<Context antiResourceLocking="false" privileged="true" >
<!--
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->
</Context>

Tenga en cuenta que no se recomienda permitir el acceso desde cualquier lugar porque es un riesgo de seguridad.

Si desea acceder a la interfaz web solo desde una IP específica, en lugar de comentar los bloques, agregue su IP pública a la lista.

Digamos que su IP pública es 41.41.41.41y desea permitir el acceso solo desde esa IP:

/opt/tomcat/latest/webapps/manager/META-INF/context.xml
<Context antiResourceLocking="false" privileged="true" >
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|41.41.41.41" />
</Context>
/opt/tomcat/latest/webapps/host-manager/META-INF/context.xml
<Context antiResourceLocking="false" privileged="true" >
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|41.41.41.41" />
</Context>

La lista de direcciones IP permitidas es una lista separada por una barra vertical |Puede agregar direcciones IP individuales o usar expresiones regulares.

Una vez hecho esto, reinicie el servicio Tomcat para que los cambios surtan efecto:

sudo systemctl restart tomcat

Instalación de prueba

Abre tu navegador y escribe:http://<your_domain_or_IP_address>:8080

Luego de una instalación exitosa, debería aparecer una pantalla similar a la siguiente:

El panel del administrador de aplicaciones web de Tomcat le permite implementar, anular la implementación, iniciar, detener y recargar sus aplicaciones. Está disponible en: http://<your_domain_or_IP_address>:8080/manager/html.

El panel del administrador de host virtual de Tomcat le permite crear, eliminar y administrar hosts virtuales de Tomcat. Está disponible en: http://<your_domain_or_IP_address>:8080/host-manager/html

Conclusión

Le mostramos cómo instalar Tomcat 9.0 en CentOS 8 y cómo acceder a la interfaz de administración de Tomcat.

Para obtener más información sobre Apache Tomcat, visite la página de documentación oficial .

Si encuentra un problema o tiene comentarios, deje un comentario a continuación.