Apache Tomcat es un servidor de aplicaciones de código abierto compatible con las tecnologías Java Servlet, JavaServer Pages, Java Expression Language y Java WebSocket. Es una de las aplicaciones y servidores web más utilizados en el mundo en la actualidad.
Este tutorial le mostrará cómo instalar Apache Tomcat 8.5 en Debian 9 y configurar la interfaz de administración web de Tomcat.
Requisitos previos #
Antes de continuar con este tutorial, asegúrese de haber iniciado sesión como usuario con privilegios de sudo.
Descargaremos el archivo zip de Tomcat usando wgetutility y extraeremos el archivo descargado con unzip.
Si no tiene estas utilidades instaladas en su sistema, puede hacerlo escribiendo:
sudo apt install unzip wget
Instalar OpenJDK #
Tomcat 8.5 requiere Java SE 7 o posterior. Para instalar el paquete OpenJDK predeterminado desde los repositorios de Debian 9, ejecute el siguiente comando:
sudo apt install default-jdk
Crear usuario de Tomcat #
Ejecutar Tomcat como usuario root es un riesgo de seguridad y no se recomienda.
Para crear un nuevo usuario y grupo del sistema para nuestra instancia de Tomcat con el directorio de inicio de /opt/tomcat
ejecuta el siguiente comando:
sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat
Descargar Tomcat #
Descargaremos la última versión de Tomcat 8.5.x desde la página de descargas de Tomcat. En el momento de escribir este artículo, la última versión es la 8.5.37. Antes de descargar el archivo zip, debe consultar la página de descarga para ver si hay una nueva versión.
Cambie a /tmp
directorio y descarga el archivo zip con wget
:
cd /tmp
wget http://www-us.apache.org/dist/tomcat/tomcat-8/v8.5.37/bin/apache-tomcat-8.5.37.zip
Cuando se complete la descarga, ejecute los siguientes comandos para extraer el archivo zip y muévalo a /opt/tomcat
directorio:
unzip apache-tomcat-*.zip
sudo mkdir -p /opt/tomcat
sudo mv apache-tomcat-8.5.37 /opt/tomcat/
Para tener más control sobre las versiones y actualizaciones de Tomcat, crearemos un enlace simbólico llamado latest
que apuntará al directorio de instalación de Tomcat:
sudo ln -s /opt/tomcat/apache-tomcat-8.5.37 /opt/tomcat/latest
Más adelante, cuando actualice la versión de Tomcat, simplemente puede desempaquetar la versión más nueva y cambiar 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 a la instalación de Tomcat:
sudo chown -R tomcat: /opt/tomcat
también haga los scripts dentro de bin
directorio ejecutable emitiendo el siguiente chmod
comando:
sudo sh -c 'chmod +x /opt/tomcat/latest/bin/*.sh'
Crea un archivo de unidad systemd #
Crear un nuevo tomcat.service
archivo de unidad en el /etc/systemd/system/
directorio con los siguientes contenidos:
[Unit]
Description=Tomcat 8.5 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 creamos un nuevo archivo de unidad e inicie el servicio Tomcat ejecutando:
sudo systemctl daemon-reload
sudo systemctl start tomcat
Verifique el estado del servicio Tomcat escribiendo:
sudo systemctl status tomcat
● tomcat.service
Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: enabled)
Active: active (running) since Wed 2018-06-06 10:51:36 UTC; 3s ago
Process: 21187 ExecStart=/opt/tomcat/latest/bin/startup.sh (code=exited, status=0/SUCCESS)
Main PID: 21195 (java)
Tasks: 44 (limit: 4915)
CGroup: /system.slice/tomcat.service
Si no hay errores, puede habilitar 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
Ajustar el cortafuegos #
Si su firewall se ejecuta en su sistema Debian y desea acceder a la interfaz 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. Configurar interfaz de administración web de Tomcat #
Ahora que Tomcat está instalado en su servidor Debian, 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 vim /opt/tomcat/latest/conf/tomcat-users.xml
Definiremos nuestro nuevo usuario con acceso a la interfaz web de Tomcat (manager-gui y admin-gui) en el tomcat-users.xml
archivo como se muestra a continuación. 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.