Tutorial

Cómo instalar Apache Tomcat 9 en Ubuntu 18.04

Java

Introducción

Apache Tomcat es un servidor web y contenedor de servlets que se utiliza para presentar aplicaciones Java. Tomcat es una implementación de código abierto de las tecnologías Java Servlet y JavaServer Pages publicada por la Apache Software Foundation. En este tutorial se abordan la instalación básica y algunas configuraciones de la última versión de Tomcat 9 en su servidor Ubuntu 18.04.

Requisitos previos

Antes de comenzar con esta guía, debe disponer de un usuario no root con privilegios sudo configurado en su servidor. Puede aprender a hacer esto completando nuestra guía de configuración inicial para servidores de Ubuntu 16.04.

Paso 1: Instalar Java

Para que sea posible ejecutar cualquier código de aplicaciones web Java, es necesario que Tomcat esté instalado en el servidor. Podemos cumplir con ese requisito instalando OpenJDK con apt.

Primero, actualice su índice de paquetes de apt:

  • sudo apt update

A continuación, instale el paquete del Kit de desarrollo Jave con apt:

  • sudo apt install default-jdk

Ahora que Java está instalado, podremos crear un usuario tomcat, que usaremos para ejecutar el servicio de Tomcat.

Paso 2: Crear un usuario Tomcat

Por seguridad, Tomcat debería ejecutarse como un usuario sin privilegios (es decir, no root). Crearemos un nuevo usuario y grupo que ejecutarán el servicio de Tomcat.

Primero, cree un nuevo grupo tomcat:

  • sudo groupadd tomcat

A continuación, cree un nuevo usuario tomcat. Haremos que este usuario sea miembro del grupo tomcat, con un directorio de inicio /opt/tomcat (donde instalaremos Tomcat) y un shell de /bin/false (de modo que nadie pueda iniciar sesión en la cuenta):

  • sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat

Ahora que nuestro usuario tomcat está configurado, descargaremos e instalaremos Tomcat.

Paso 3: Instalar Tomcat

La mejor alternativa para instalar Tomcat 9 es descargar la última versión binaria y luego configurarla manualmente.

Busque la última versión de Tomcat 9 en la página de descargas de Tomcat 9. En el momento en que se redactó esta guía, la versión más reciente fue la 9.0.10, pero debería usar una versión estable posterior si se encuentra disponible. En la sección Binary Distributions, debajo de la lista de Core, copie el enlace a “tar.gz”. En la mayoría de los navegadores puede realizarlo haciendo clic con el botón secundario en el enlace y seleccionando Copiar la dirección del enlace o una opción similar.

A continuación, posiciónese en el directorio /tmp en su servidor. Este es un buen directorio para descargar los elementos ephemeral como el tarball de Tomcat, que no necesitaremos tras extraer el contenido de Tomcat:

  • cd /tmp

Utilice curl para descargar el enlace que copió desde el sitio web de Tomcat:

  • curl -O paste_the_copied_link_here

Instalaremos Tomcat en el directorio /opt/tomcat. Cree el directorio y luego extraiga el archivo con estos comandos:

  • sudo mkdir /opt/tomcat
  • sudo tar xzvf apache-tomcat-*tar.gz -C /opt/tomcat --strip-components=1

A continuación, podremos configurar los permisos de usuario adecuados para nuestra instalación.

Paso 4: Actualizar los permisos

El usuario tomcat que configuramos debe tener acceso a la instalación de Tomcat. Configuraremos esto ahora.

Posiciónese en el directorio en el que desempaquetamos la instalación de Tomcat:

  • cd /opt/tomcat

Otorgue la propiedad sobre todo el directorio de instalación al grupo tomcat:

  • sudo chgrp -R tomcat /opt/tomcat

A continuación, proporcione al grupo tomcat acceso de lectura al directorio conf y a todos sus contenidos, y acceso de ejecución al directorio:

  • sudo chmod -R g+r conf
  • sudo chmod g+x conf

Asegúrese de que el usuario tomcat sea el propietario de los directorios webapps, work, temp y logs:

  • sudo chown -R tomcat webapps/ work/ temp/ logs/

Ahora que están configurados los permisos adecuados, podemos crear un archivo de servicio systemd para gestionar el proceso de Tomcat.

Paso 5: Crear un archivo de servicio systemd

Nos convendrá poder ejecutar Tomcat como servicio; por ello, configuraremos el servicio systemd.

Tomcat necesita saber dónde está instalado Java. Esta ruta se denomina comúnmente “JAVA_HOME”. La alternativa más sencilla para revisar esa ubicación es ejecutar el siguiente comando:

  • sudo update-java-alternatives -l
Output
java-1.11.0-openjdk-amd64 1081 /usr/lib/jvm/java-1.11.0-openjdk-amd64

Su JAVA_HOME es el resultado de la última columna (resaltada en rojo). Considerando el ejemplo anterior, el JAVA_HOME correcto para este servidor sería el siguiente:

JAVA_HOME
/usr/lib/jvm/java-1.11.0-openjdk-amd64

Es posible que su JAVA_HOME sea diferente.

Con esta información, podemos crear el archivo de servicio systemd. Abra un archivo llamado tomcat.service en el directorio /etc/systemd/system escribiendo lo siguiente:

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

Pegue el siguiente contenido en su archivo de servicio. Modifique el valor de JAVA_HOME si es necesario para que coincida con el valor que encontró en su sistema. Es posible que también desee modificar los ajustes de asignación de memoria especificados en CATALINA_OPTS:

/etc/systemd/system/tomcat.service
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target

[Service]
Type=forking

Environment=JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'

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

User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target

Cuando termine, guarde y cierre el archivo.

A continuación, vuelva a cargar el demonio systemd para que reciba información sobre nuestro archivo de servicio:

  • sudo systemctl daemon-reload

Inicie el servicio Tomcat escribiendo lo siguiente:

  • sudo systemctl start tomcat

Compruebe que se inició sin errores escribiendo lo siguiente:

  • sudo systemctl status tomcat

Paso 6: Ajustar el firewall y probar el servidor de Tomcat

Ahora que se inició el servicio de Tomcat, podemos probarlo para garantizar que la página predeterminada está disponible.

Antes de hacer esto, debemos realizar ajustes en el firewall para permitir que nuestras solicitudes lleguen al servicio. Si cumplió con los requisitos previos, en este momento dispondrá de un firewall ufw habilitado.

Tomcat utiliza el puerto 8080 para aceptar solicitudes convencionales. Permita el tráfico hacia este puerto escribiendo lo siguiente:

  • sudo ufw allow 8080

Una vez modificado firewall, podrá acceder a la página de presentación predeterminada agregando a su dominio o dirección IP la terminación :8080 y visitándolos en un navegador web:

Open in web browser
http://server_domain_or_IP:8080

Verá la página de presentación de Tomcat predeterminada e información adicional. Sin embargo, si hace clic en los enlaces de de la aplicación de administración, por ejemplo, se denegará el acceso. Podemos configurar ese acceso a continuación.

Si pudo acceder correctamente a Tomcat, será un buen momento para habilitar el archivo de servicio a fin de que Tomcat se inicie automáticamente en el inicio:

  • sudo systemctl enable tomcat

Paso 7: Configurar la interfaz de administración web de Tomcat

Para usar la aplicación de administración web que viene con Tomcat, debemos añadir un inicio de sesión a nuestro servidor de Tomcat. Haremos esto editando el archivo tomcat-users.xml:

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

Le convendrá añadir un usuario que pueda acceder a manager-gui y admin-gui (aplicaciones web que vienen con Tomcat). Puede hacerlo definiendo un usuario, similar al ejemplo que se muestra a continuación, entre las etiquetas tomcat-users. Asegúrese de cambiar el nombre de usuario y la contraseña por opciones seguras.

tomcat-users.xml — Admin User
<tomcat-users . . .>
    <user username="admin" password="password" roles="manager-gui,admin-gui"/>
</tomcat-users>

Guarde y cierre el archivo cuando termine.

Por defecto, las versiones más recientes de Tomcat impiden que las aplicaciones provenientes del propio servidor accedan a las aplicaciones Manager y Host Manager. Debido a que la instalación se realizará en una máquina remota, probablemente le convenga eliminar o alterar esta restricción. Para cambiar las restricciones de direcciones IP en estas, abra los archivos context.xml correspondientes.

Para la aplicación Manager, escriba lo siguiente:

  • sudo nano /opt/tomcat/webapps/manager/META-INF/context.xml

Para la aplicación Host Manager, escriba esto:

  • sudo nano /opt/tomcat/webapps/host-manager/META-INF/context.xml

En el interior, elimine la restricción de direcciones IP para permitir las conexiones desde cualquier lugar. Además, si desea permitir el acceso únicamente a las conexiones que provienen de su propia dirección IP, puede añadir su dirección IP pública a la lista:

context.xml files for Tomcat webapps
<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 los archivos cuando termine.

Para implementar los cambios que realizamos, reinicie el servicio de Tomcat:

  • sudo systemctl restart tomcat

Paso 8: Acceder a la interfaz web

Ahora que creamos un usuario, podremos acceder a la interfaz de administración web en un navegador web. De nuevo, puede acceder a la interfaz correcta introduciendo el nombre de dominio o la dirección IP de su servidor seguido del puerto 8080 en su navegador:

Open in web browser
http://server_domain_or_IP:8080

La página que ve sería la misma que se cargó cuando realizó la prueba anteriormente:

root de Tomcat

Veamos Manager App. Se puede acceder a ella a través del enlace o con http://server_domain_or_IP:80/manager/html. Deberá introducir las credenciales de la cuenta que agregó al archivo tomcat-users.xml. Después de eso, debería ver una página similar a esta:

Administrador de aplicaciones web de Tomcat

El Administrador de aplicaciones web se utiliza para gestionar sus aplicaciones Java. En él puede concretar inicios, detenciones, recargas e implementaciones y detener estas últimas. También puede ejecutar algunos diagnósticos en sus aplicaciones (es decir, encontrar fugas de memoria). Por último, la información sobre su servidor está disponible en la parte inferior de esta página.

Ahora veremos Host Manager, al que se puede acceder a través del enlace o con http://server_domain_or_IP:80/host-manager/html/:

Host Manager virtual de Tomcat

Desde la página de Virtual Host Manager, puede añadir hosts virtuales desde los cuales proporcionará sus aplicaciones.

Conclusión

¡Completó la instalación de Tomcat! Ahora puede implementar sus propias aplicaciones web Java.

En este momento, su instalación de Tomcat funciona, pero no está completamente cifrada. Esto significa que todos los datos, incluidos los elementos confidenciales como las contraseñas, se envían en texto sin formato, que otros pueden interceptar y leer en Internet. Para evitar que esto suceda, se le recomienda encarecidamente cifrar sus conexiones con SSL. Puede obtener información sobre cómo cifrar su conexión con Tomcat siguiendo esta guía (tenga en cuenta que en ella se abarca el cifrado de Tomcat 8 en Ubuntu 16.04).

Creative Commons License