Tomcat 9, instalación y configuración básica en Ubuntu 18.04

about Tomcat 9

En el siguiente artículo vamos a ver cómo podemos instalar Tomcat 9 en Ubuntu 18.04. Sobre la instalación de este contenedor con soporte para servlets y JSPs entre otros, ya nos habló un compañero hace unos años en un artículo.

Apache Tomcat es una implementación de código abierto de las tecnologías Java Servlet, JavaServer Pages, Java Expression Language y Java WebSocket. Ofrece una solución completa para quienes necesitan ejecutar ese tipo de contenidos, entre los que se encuentran las grandes organizaciones y corporaciones hasta las PyMES, porque si algo caracteriza a esta herramienta es su gran escalabilidad.

Antes de meternos en profundidad con la instalación de Tomcat 9, necesitamos instalar OpenJDK.

Instalar OpenJDK

La instalación del paquete OpenJDK en Ubuntu 18.04 es bastante sencilla:

install jdk default tomcat 9

sudo apt install default-jdk

Si prefieres instalar Oracle Java en lugar de OpenJDK, consulta las instrucciones que publicó un compañero tiempo atrás.

Crear usuario para Tomcat

Ahora vamos a crear un nuevo usuario y grupo de sistema con el directorio de inicio en /opt/tomcat, que ejecutará el servicio de Tomcat:

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

Descargar Tomcat 9

Utilizaremos wget y unzip para descargar y extraer el archivo de Tomcat 9. Los podemos instalar escribiendo:

sudo apt install unzip wget

Vamos a descargar la última versión de Tomcat 9.0.x desde su página de descargas. En el momento de escribir estas líneas, la última versión es la 9.0.10.

Cuando tengamos claro cual es el archivo a descargar, nos vamos a mover al directorio /tmp y descargar el archivo zip con wget.

descargar tomcat 9

cd /tmp

wget http://apache.rediris.es/tomcat/tomcat-9/v9.0.10/bin/apache-tomcat-9.0.10.zip

Una vez que se complete la descarga, extraeremos el archivo zip y lo vamos a mover al directorio /opt/tomcat:

unzip apache-tomcat-*.zip

sudo mv apache-tomcat-*/ /opt/tomcat/

Para tener más control sobre las versiones y actualizaciones, crearemos un enlace simbólico que apuntará al directorio de instalación:

sudo ln -s /opt/tomcat/apache-tomcat-* /opt/tomcat/latest

Más adelante, si deseas actualizar tu instalación de Tomcat, puedes desempaquetar la versión más reciente y cambiar el enlace simbólico para que apunte a la última versión.

El usuario de tomcat que configuramos anteriormente necesita tener acceso al directorio de Tomcat 9. Tendremos que cambiar la propiedad del directorio al usuario y grupo de tomcat:

sudo chown -R tomcat: /opt/tomcat

También haremos que los scripts dentro del directorio bin sean ejecutables:

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

Crear un archivo de unidad systemd

Para ejecutar Tomcat como un servicio, crearemos un nuevo archivo de unidad llamado tomcat.service. Este hay que guardarlo dentro del directorio /etc/systemd/system/ con el siguiente contenido:

archivo tomcat.service

[Unit]
Description=Tomcat 9 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

Verificar el estado del servicio

tomcat 9 status

Notificaremos a systemd que creamos un nuevo archivo de unidad e iniciaremos el servicio Tomcat ejecutando:

sudo systemctl daemon-reload

sudo systemctl start tomcat

Se puede verificar el estado del servicio con el siguiente comando:

sudo systemctl status tomcat

Si no hay errores, puedes habilitar el servicio Tomcat para que se inicie automáticamente en el momento del arranque:

sudo systemctl enable tomcat

Ajustar el Firewall

Si tu equipo o servidor está protegido por un firewall y quieres acceder a la interfaz de Tomcat desde el exterior de tu red local, deberás abrir el puerto 8080. Este paso es peligroso en algunas situaciones.

Para permitir el tráfico en el puerto 8080 escribe el siguiente comando:

abrir puerto 8080 ufw tomcat 9

sudo ufw allow 8080/tcp

Configurar Tomcat Web Manager Interface

Ahora que tenemos Tomcat 9 instalado en nuestro Ubuntu, el siguiente paso es crear un usuario que tenga acceso a la interfaz de administración web. Los usuarios de Tomcat y sus roles se definen en el archivo tomcat-users.xml.

Si abres el archivo, verás que está lleno de comentarios y ejemplos.

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

Para agregar un nuevo usuario que pueda acceder a la interfaz web de tomcat (manager-gui y admin-gui) necesitamos definir el usuario al final del archivo tomcat-users.xml como se muestra a continuación. Asegúrate de cambiar el nombre de usuario y la contraseña por algo más seguro:

archivo tomcat 9 users

<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="admin" password="admin123" roles="admin-gui,manager-gui"/>

De forma predeterminada, la interfaz de administración web de Tomcat está configurada para permitir el acceso solo desde el host local. Si necesitas acceder a la interfaz web desde una IP remota abre los siguientes archivos y comenta o elimina las líneas marcadas en las capturas:

sudo vim /opt/tomcat/latest/webapps/manager/META-INF/context.xml

archivo manager context tomcat

sudo vim /opt/tomcat/latest/webapps/host-manager/META-INF/context.xml

archivo host-manager context tomcat 9

Si necesitas acceder a la interfaz web solo desde una IP específica, en lugar de comentar los bloques, agrega tu IP pública a la lista. Las direcciones IP permitidas se añaden separándolas mediante una barra vertical |. Puedes agregar direcciones IP únicas o usar expresiones regulares.

Probar la instalación

Abre tu navegador y escribe: http://tu-dominio-o-ip:8080. Suponiendo que la instalación sea exitosa, aparecerá una pantalla como la siguiente:

pantalla de inicio de tomcat 9.0.10

El panel del administrador de aplicaciones web de Tomcat está disponible en http://tu-dominio-o-ip: 8080/manager/html. Aquí podrás gestionar tus aplicaciones.

administrador de aplicaciones de tomcat 9

El gestor de máquina virtual de Tomcat está disponible en http://tu-dominio-o-ip: 8080/host-manager/html. Desde aquí puedes gestionar los hosts virtuales de Tomcat.

gestor de máquina virtual tomcat 9

Puedes visitar la Documentación oficial de Tomcat 9  y obtener más información sobre sus características.


Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

      AstiVPL dijo

    Excelente tutorial!

      Sergio diaz dijo

    excelente tutorial claro y conciso

      Carlos dijo

    Impecable tutorial. Además de lo explicado, sólo tuve que dar permisos de ejecución al fichero creado tomcat.service y modificar la ruta de «JAVA_HOME» dentro del fichero tomcat.service y funcionó todo.

      jorge dijo

    Hola Es exelente, pero no pude continuar porque no se donde typear la parte

    [Unit]
    Description=Tomcat 9 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

    hay que hacerlo en la terminal.
    Saludos

         Damián Amoedo dijo

      Hola. El código al que haces referencia debes pegarlo en el archivo /etc/systemd/system/tomcat.service. Utiliza algún editor para crear o editar el archivo. Salu2.

      rafael dijo

    Hola, cuando intento obtener la página que te dice que instalaste tomcat exitosamente me marca diversos errores de red. He intentado con el localhost, borrando y poniendo lo que dice que comentemos para dejar otras ips, pero ni con el localhost me logro conectar, y siendo que sí puse el comando para permitir trafico en el puerto 8080

      D87 dijo

    No me ha servido

      Isabel dijo

    Muy bueno, gracias.

      Bernardino dijo

    Muy bueno. Muchas gracias.

      Angel dijo

    Tutorial PERFECTO!!!

    Miles de gracias!!!!!

      Jose dijo

    Excelente tutorial pero tengo un problema al crear al crear el archivo tomcat.service a si lo tengo configurado

    [Unit]
    Description=Tomcat 9 servlet container
    After=network.target

    [Service]
    Type=forking

    User=tomcat
    Group=tomcat

    Environment=»JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/jre»
    Environment=»JAVA_OPTS=-Djava.security.egd=file:///dev/urandom»

    Environment=»CATALINA_BASE=/opt/tomcat/»
    Environment=»CATALINA_HOME=/opt/tomcat/»
    Environment=»CATALINA_PID=/opt/tomcat/temp/tomcat.pid»
    Environment=»CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC»
    Environment=»CATALINA_OUT=/opt/tomcat/logs/catalina.out

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

    [Install]
    WantedBy=multi-user.target

    al ejecuar system start tomcat.service me da el siguiente error:

    Job for tomcat.service failed because the control process exited with error code.
    See «systemctl status tomcat.service» and «journalctl -xe» for details.

    al ejecutar el comando systemctl status tomcat.service muestra :
    tomcat.service – Tomcat 9 servlet container
    Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: enabled)
    Active: failed (Result: exit-code) since Thu 2020-07-09 13:14:25 CST; 2min 12s ago
    Process: 5851 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=2)

    jul 09 13:14:25 host-120901 systemd[1]: Starting Tomcat 9 servlet container…
    jul 09 13:14:25 host-120901 systemd[1]: tomcat.service: Control process exited, code=exited, status=2/INVALIDARGUMENT
    jul 09 13:14:25 host-120901 systemd[1]: tomcat.service: Failed with result ‘exit-code’.
    jul 09 13:14:25 host-120901 systemd[1]: Failed to start Tomcat 9 servlet container.

    y al ejecutar journalctl -xe

    jul 09 13:14:25 host-120901 startup.sh[5869]: touch: no se puede efectuar `touch’ sobre ‘/opt/tomcat//logs/catalina.out’: Permiso denegado
    jul 09 13:14:25 host-120901 startup.sh[5851]: /opt/tomcat/bin/catalina.sh: 505: cannot create /opt/tomcat//logs/catalina.out: Permission denied
    jul 09 13:15:01 host-120901 CRON[5879]: pam_unix(cron:session): session opened for user root by (uid=0)
    jul 09 13:15:01 host-120901 CRON[5880]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
    jul 09 13:15:01 host-120901 CRON[5879]: pam_unix(cron:session): session closed for user root
    jul 09 13:16:32 host-120901 wpa_supplicant[707]: wlp2s0: Reject scan trigger since one is already pending
    jul 09 13:17:01 host-120901 CRON[5905]: pam_unix(cron:session): session opened for user root by (uid=0)
    jul 09 13:17:01 host-120901 CRON[5906]: (root) CMD ( cd / && run-parts –report /etc/cron.hourly)
    jul 09 13:17:01 host120901 CRON[5905]: pam_unix(cron:session): session closed for user root

    me puede explicar que tengo al por favor

      Jose dijo

    Mae muchas gracias, el profe pidiendo estas pichas en 2020

      Torsten dijo

    Ganz tolles Tutorial. Hab das selbst mit meinem minimal Linux Kenntnissen hin bekommen. Probleme waren ehr «externer» Natur, wie das richtige Eintragen eine Proxys. Hab die Installation mit 10.0.6, ging ohne Probleme.
    Nur so, die Sache mit der context.xml steht zweimal drin.

    Vielen Dank.