Introducción
Apache Tomcat es una implementación de código abierto de las tecnologías Java Servlet, JavaServer Pages, Java Expression Language y Java WebSocket. Hoy en día es una de las aplicaciones y servidores web más utilizados del mundo. 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.
Si desea instalar Tomcat en un servidor remoto, continúe leyendo; de lo contrario, omita el primer párrafo "Conexión al servidor" y lea el siguiente.
Conexión al servidor
Para acceder al servidor, necesita conocer la dirección IP. También necesitará su nombre de usuario y contraseña para la autenticación. Para conectarse al servidor como root, escriba el siguiente comando:
ssh root@IP_DEL_SERVER
A continuación, deberá ingresar la contraseña del usuario root.
Si no está utilizando el usuario root, puede iniciar sesión con otro nombre de usuario utilizando el mismo comando, luego cambie root a su nombre de usuario:
ssh nome_utente@IP_DEL_SERVER
Luego se le pedirá que ingrese su contraseña de usuario.
El puerto estándar para conectarse a través de ssh es 22, si su servidor usa un puerto diferente, deberá especificarlo usando el parámetro -p, luego escriba el siguiente comando:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Instalar Java
Tomcat 9 requiere Java SE 8 o posterior. Instale OpenJDK 11, la implementación de código abierto de la plataforma Java.
Antes de continuar, instale las siguientes herramientas útiles para continuar correctamente con el tutorial:
sudo dnf install wget nano tar
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 verse así:
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)
Crea un usuario del sistema
Ejecutar Tomcat con el usuario root es un riesgo de seguridad. Crearemos un nuevo usuario y grupo del sistema con el directorio de inicio /opt/tomcat
que ejecutará el servicio Tomcat. Para hacer esto, ingrese el siguiente comando:
sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat
Descarga Tomcat
La distribución binaria de Tomcat está disponible para descargar desde la página de descargas de Tomcat.
En el momento de escribir este artículo, es la última versión de Tomcat 9.0.30
. Antes de continuar con el siguiente paso, consulte la página de descarga de Tomcat 9 para ver si hay una versión más nueva disponible.
Descargue el archivo zip de Tomcat con wget
en el directorio /tmp
VERSION=9.0.30
wget 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/tomcat
:
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 creado previamente debe tener acceso al directorio de instalación de Tomcat. Cambie la propiedad del directorio a usuario y grupo de tomcat:
sudo chown -R tomcat: /opt/tomcat
Haga que los scripts de shell sean ejecutables bin
directorio bin:
sudo sh -c 'chmod +x /opt/tomcat/latest/bin/*.sh'
Estos scripts se utilizan para iniciar y detener Tomcat.
Cree un archivo de unidad Systemd
En lugar de iniciar y detener el servidor Tomcat manualmente, lo configuraremos como un servicio. Abra su editor de texto y cree un tomcat.service
en el /etc/systemd/system/
:
sudo nano /etc/systemd/system/tomcat.service
Pega el siguiente contenido:
[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 presionando CTRL + X, seguido de Y para guardar los cambios y luego ENTER si está usando nano.
Reinicie el servicio systemd escribiendo:
sudo systemctl daemon-reload
Habilite e inicie el servicio Tomcat:
sudo systemctl enable --now tomcat
Verifique el estado del servicio:
sudo systemctl status tomcat
La salida debe mostrar que el servidor Tomcat está habilitado y en ejecución:
● tomcat.service - Tomcat 9 servlet container
Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2020-01-18 17:05:05 CET; 3s ago
Process: 3192 ExecStart=/opt/tomcat/latest/bin/startup.sh (code=exited, status=0/SUCC>
Main PID: 3199 (java)
Tasks: 15 (limit: 12251)
Memory: 60.2M
CGroup: /system.slice/tomcat.service
└─3199 /usr/lib/jvm/jre/bin/java -Djava.util.logging.config.file=/opt/tomcat>
Configurar el firewall
Si el servidor está detrás de un firewall y desea acceder a la interfaz de Tomcat desde fuera de la red local, debe abrir el puerto 8080
.
Utilice los siguientes comandos para abrir la puerta requerida:
sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp
sudo firewall-cmd --reload
Normalmente, al ejecutar Tomcat en un entorno de producción, debe utilizar un equilibrador de carga o un proxy inverso. Se recomienda que el 8080
se otorgue solo a la red interna.
Configurar la interfaz de gestión web de Tomcat
En este punto, debería poder acceder a Tomcat con un navegador web en el puerto 8080
. No 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 archivo tomcat-users.xml
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
Los usuarios de Tomcat se definen como el usuario en el archivo tomcat-users.xml
Para crear un nuevo usuario capaz de 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 su nombre de usuario y contraseña por algo más seguro.
Descomente y edite las siguientes líneas:
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="admin" password="admin_password" roles="admin-gui,manager-gui"/>
Entonces:
<tomcat-users>
<!--
Comments
-->
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="admin" password="admin_password" roles="admin-gui,manager-gui"/>
</tomcat-users>
Guarde y cierre el archivo.
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 el siguiente archivo:
sudo nano /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>
Comente o elimine la siguiente línea:
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
Entonces:
<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>
Guarde y cierre el archivo.
Abra el siguiente archivo:
sudo nano /opt/tomcat/latest/webapps/host-manager/META-INF/context.xml
Comente o elimine la siguiente línea:
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
Entonces:
<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>
Guarde y cierre el archivo.
No se recomienda permitir el acceso desde cualquier lugar, ya que representa un riesgo para la 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 42.42.42.42
y desea permitir el acceso solo desde esa IP.
Abra los archivos anteriores nuevamente:
sudo nano /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|42.42.42.42" />
</Context>
Guarde y cierre el archivo, abra el siguiente:
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|42.42.42.42" />
</Context>
Guarde y cierre el archivo.
La lista de direcciones IP permitidas es una lista separada por una barra vertical |
. Puede agregar direcciones IP individuales o usar expresiones regulares.
Cuando termine, reinicie el servicio Tomcat para que los cambios surtan efecto:
sudo systemctl restart tomcat
Prueba la instalación
Abra su navegador y escriba su dirección IP o nombre de dominio especificando 8080
como el puerto, luego: http://TUO_IP_O_DOMINIO:8080
Cuando se complete la instalación, debería aparecer una pantalla principal de Tomcat.
El panel de Tomcat Web Application Manager le permite implementar, http://TUO_IP_O_DOMINIO: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://TUO_IP_O_DOMINIO: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.