Apache Tomcat es un servidor de aplicaciones basado en JAVA de código abierto que implementa las tecnologías Java Servlet, JavaServer Pages, Java Expression Language y Java WebSocket. Es uno de los servidores web y de aplicaciones más utilizados en el mundo en la actualidad.
Este tutorial explica cómo instalar Apache Tomcat 9.0 en Debian 10 Buster y configurar la interfaz de administración web de Tomcat.
Requisitos previos #
Las instrucciones asumen que ha iniciado sesión como raíz o usuario con privilegios sudo.
Instalando OpenJDK #
Tomcat 9.0 requiere la instalación de Java SE 8 o posterior en el servidor.
Ejecute el siguiente comando para instalar el paquete OpenJDK:
sudo apt install default-jdk
Creación de un usuario de Tomcat #
Ejecutar Tomcat como usuario root es un riesgo de seguridad y no se recomienda. Crearemos un nuevo usuario que se usará para ejecutar el servicio Tomcat.
Ejecute el siguiente comando para crear un nuevo usuario y grupo del sistema con un directorio de inicio de /opt/tomcat
:
sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat
Descargando Tomcat #
Al momento de escribir, la última versión de Tomcat es 9.0.27
. Antes de continuar con el siguiente paso, debe consultar la página de descarga de Tomcat 9 para ver si hay una versión más nueva disponible.
Cambie a /tmp
y descargue la última versión binaria de Tomcat:
cd /tmp
wget https://www-eu.apache.org/dist/tomcat/tomcat-9/v9.0.27/bin/apache-tomcat-9.0.27.tar.gz
Cuando se complete la descarga, extraiga el archivo comprimido con gzip:
tar -xf apache-tomcat-9.0.27.tar.gz
Mueva los archivos de origen de Tomcat a /opt/tomcat
directorio:
sudo mv apache-tomcat-9.0.27 /opt/tomcat/
Tomcat 9 se actualiza periódicamente. Para tener más control sobre las versiones y actualizaciones, cree un enlace simbólico llamado latest
que apunta al directorio de instalación de Tomcat:
sudo ln -s /opt/tomcat/apache-tomcat-9.0.27 /opt/tomcat/latest
Más tarde, cuando actualice Tomcat, simplemente descomprima la versión más nueva y cambie el enlace simbólico para que apunte a la última versión.
Cambiar la propiedad del /opt/tomcat
directorio al usuario y grupo tomcat
, para que el usuario pueda tener acceso al directorio de instalación:
sudo chown -R tomcat: /opt/tomcat
Haz los scripts dentro del bin
directorio ejecutable:
sudo sh -c 'chmod +x /opt/tomcat/latest/bin/*.sh'
Creando archivo de unidad SystemD #
Abra su editor de texto y cree un nuevo archivo llamado tomcat.service
con los siguientes contenidos:
sudo nano /etc/systemd/system/tomcat.service
/etc/systemd/system/tomcat.service[Unit]
Description=Tomcat 9.0 servlet container
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/usr/lib/jvm/default-java"
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
Notifique a systemd que existe un nuevo archivo de unidad e inicie el servicio Tomcat escribiendo:
sudo systemctl daemon-reload
sudo systemctl start tomcat
Verifique el estado del servicio Tomcat escribiendo:
sudo systemctl status tomcat
● tomcat.service - Tomcat 9.0 servlet container
Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset:
Active: active (running) since Sat 2019-11-09 13:53:51 PST; 5s ago
Process: 5752 ExecStart=/opt/tomcat/latest/bin/startup.sh (code=exited, status
Main PID: 5759 (java)
Si no hay errores, habilite el servicio Tomcat para que se inicie automáticamente en el momento del arranque:
sudo systemctl enable tomcat
Puede iniciar, detener y reiniciar Tomcat igual que cualquier otro servicio de unidad systemd:
sudo systemctl start tomcat
sudo systemctl stop tomcat
sudo systemctl restart tomcat
Ajuste del cortafuegos #
Si tiene un firewall ejecutándose en su sistema Debian y desea acceder a la interfaz de Tomcat desde el exterior de su red local, deberá abrir el puerto 8080
:
sudo ufw allow 8080/tcp
Al ejecutar una aplicación Tomcat en un entorno de producción, lo más probable es que tenga un equilibrador de carga o un proxy inverso, y es una buena práctica restringir el acceso al puerto 8080 solo a su red interna.
Configuración de la interfaz de administración web de Tomcat #
Ahora que Tomcat está instalado, el siguiente paso es crear un usuario con acceso a la interfaz de administración web.
Los usuarios de Tomcat y sus funciones se definen en tomcat-users.xml
archivo.
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
Definiremos el nuevo usuario en el tomcat-users.xml
archivo, como se muestra a continuación. El usuario tendrá acceso a la interfaz web de Tomcat (manager-gui y admin-gui). Asegúrese de cambiar el nombre de usuario y la contraseña por algo más seguro:
<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 manera predeterminada, la interfaz de administración web de Tomcat permite el acceso solo desde el servidor local. Si desea acceder a la interfaz web desde una IP remota o desde cualquier lugar que no se recomienda porque es un riesgo de seguridad, puede abrir los siguientes archivos y realizar los siguientes cambios.
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>
Si necesita 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 32.32.32.32
y quieres permitir el acceso solo desde esa IP:
<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|32.32.32.32" />
</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|32.32.32.32" />
</Context>
La lista de direcciones IP permitidas es una lista separada por una barra vertical |
. Puede agregar direcciones IP individuales o usar expresiones regulares.
Reinicie el servicio Tomcat para que los cambios surtan efecto:
sudo systemctl restart tomcat
Probar la instalación #
Abra su navegador y escriba:http://<your_domain_or_IP_address>:8080
Si la instalación es exitosa, aparecerá una pantalla similar a la siguiente:
El panel del administrador de aplicaciones web de Tomcat está disponible en http://<your_domain_or_IP_address>:8080/manager/html
. Desde aquí, puede implementar, anular la implementación, iniciar, detener y recargar sus aplicaciones.
El panel del administrador de host virtual de Tomcat está disponible en http://<your_domain_or_IP_address>:8080/host-manager/html
. Desde aquí, puede crear, eliminar y administrar hosts virtuales de Tomcat.