Cómo instalar Apache Tomcat 10 en Debian 10

Apache Tomcat es de código abierto y el servidor de aplicaciones web más popular utilizado para alojar aplicaciones basadas en Java. Viene con Java Servlet, JavaServer Pages (JSP), Java EL, y proporciona un entorno para ejecutar códigos Java. Tomcat ofrece un rico conjunto de características que incluyen, peso ligero, alta flexibilidad, bien documentado, ofrece un nivel extra de seguridad, madurez y más.

En este tutorial, explicaremos cómo instalar Apache Tomcat 10 en un servidor Debian 10.

Requisitos previos

  • Un servidor con Debian 10.
  • Un nombre de dominio válido apuntado con la IP de tu servidor.
  • Una contraseña de root configurada en el servidor.

Cómo empezar

Antes de empezar, actualiza los paquetes de tu sistema a la última versión con el siguiente comando:

apt-get update -y

Una vez actualizados todos los paquetes, puedes pasar al siguiente paso.

Instalar Java

Apache Tomcat es una aplicación basada en Java. Por tanto, necesitarás instalar Java en tu servidor. Puedes instalar Java con el siguiente comando:

apt-get install default-jdk -y

Tras la instalación, verifica la versión de Java con el siguiente comando:

java --version

La siguiente salida te mostrará la versión de Java instalada en tu servidor.

openjdk 11.0.11 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9-post-Debian-1deb10u1)
OpenJDK 64-Bit Server VM (build 11.0.11+9-post-Debian-1deb10u1, mixed mode, sharing)

Una vez que hayas terminado, puedes pasar al siguiente paso.

Instalar Apache Tomcat

En el momento de escribir este tutorial, la última versión disponible de Apache Tomcat es la 10.0.7.

En primer lugar, añade el usuario para ejecutar Apache Tomcat mediante el siguiente comando:

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

A continuación, descarga el Apache Tomcat 10 utilizando el siguiente comando:

wget https://mirrors.estointernet.in/apache/tomcat/tomcat-10/v10.0.7/bin/apache-tomcat-10.0.7.tar.gz

Una vez completada la descarga, extrae el archivo descargado al directorio /opt/tomcat utilizando el siguiente comando:

tar -xzvf apache-tomcat-10.0.7.tar.gz -C /opt/tomcat --strip-components=1

A continuación, establece la propiedad adecuada en el directorio /opt/tomcat utilizando el siguiente comando:

chown -R tomcat:tomcat /opt/tomcat/

Una vez que hayas terminado, puedes pasar al siguiente paso.

Crear un usuario administrador web de Tomcat

A continuación, tendrás que crear un usuario administrador para acceder a la interfaz de administración de Tomcat. Puedes crearlo editando el archivo tomcat-users.xml:

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

Añade las siguientes líneas antes de la última línea:

<role rolename="manager-gui" />
<user username="manager" password="pasword" roles="manager-gui" />

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

Guarda y cierra el archivo cuando hayas terminado. Ahora puedes pasar al siguiente paso.

Permitir el acceso remoto a Tomcat

Por defecto, Tomcat está configurado para acceder sólo desde el sistema local. Así que tendrás que configurar Tomcat para que se pueda acceder a él desde el sistema remoto.

En primer lugar, edita el archivo context.xml para permitir el acceso remoto a la aplicación gestora de Tomcat:

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

Elimina o comenta las siguientes líneas:

  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />

Guarda y cierra el archivo y, a continuación, edita el archivo context. xml para permitir el acceso remoto a la aplicación gestora de Tomcat:

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

Elimina las siguientes líneas:

  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />

Guarda y cierra el archivo cuando hayas terminado. Ahora puedes pasar al siguiente paso.

Crear un archivo de unidad Systemd para Tomcat

A continuación, tendrás que crear un archivo de unidad systemd para gestionar el servicio Tomcat. Puedes crearlo con el siguiente comando:

nano /etc/systemd/system/tomcat.service

Añade las siguientes líneas:

[Unit]
Description=Tomcat
After=network.target

[Service]
Type=forking

User=tomcat
Group=tomcat

Environment="JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64"
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"

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

[Install]
WantedBy=multi-user.target

Guarda y cierra el archivo y vuelve a cargar el demonio systemd para aplicar los cambios:

systemctl daemon-reload

A continuación, inicia el servicio Tomcat y permite que se inicie al reiniciar el sistema con el siguiente comando:

systemctl start tomcat
systemctl enable tomcat

Ahora puedes comprobar el estado del servicio Tomcat con el siguiente comando:

systemctl status tomcat

Deberías obtener la siguiente salida:

? tomcat.service - Tomcat
   Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: enabled)
   Active: active (running) since Thu 2021-07-01 04:58:39 UTC; 15s ago
  Process: 5706 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 5713 (java)
    Tasks: 29 (limit: 2359)
   Memory: 154.7M
   CGroup: /system.slice/tomcat.service
           ??5713 /usr/lib/jvm/java-1.11.0-openjdk-amd64/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties -Djava.ut

Jul 01 04:58:39 tomcat systemd[1]: Starting Tomcat...
Jul 01 04:58:39 tomcat startup.sh[5706]: Tomcat started.
Jul 01 04:58:39 tomcat systemd[1]: Started Tomcat.

En este punto, Tomcat está iniciado y escuchando en el puerto 8080. Puedes comprobarlo con el siguiente comando:

ss -antpl | grep 8080

Deberías obtener la siguiente salida:

LISTEN   0        100                          *:8080                  *:*       users:(("java",pid=5713,fd=43))

Una vez que hayas terminado, puedes pasar al siguiente paso.

Configurar Nginx para Tomcat

A continuación, se recomienda utilizar Nginx como proxy inverso para acceder a la aplicación Tomcat.

En primer lugar, instala el servidor web Nginx con el siguiente comando:

apt-get install nginx -y

Una vez instalado Nginx, crea un nuevo archivo de configuración del host virtual Nginx:

nano /etc/nginx/conf.d/tomcat.conf

Añade las siguientes líneas:

server {
  listen 80;

  server_name    tomcat.example.com;
  access_log /var/log/nginx/access.log;
  error_log /var/log/nginx/error.log;

  location / {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8080/;
  }
}

Guarda y cierra el archivo cuando hayas terminado y luego verifica que el Nginx no tenga ningún error de sintaxis con el siguiente comando:

nginx -t

Deberías obtener la siguiente salida:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

A continuación, reinicia el Nginx para aplicar los cambios:

systemctl restart nginx

También puedes comprobar el estado del servicio Nginx con el siguiente comando:

systemctl status nginx

Si todo está bien, deberías ver la siguiente salida:

? nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2021-07-01 05:00:32 UTC; 6s ago
     Docs: man:nginx(8)
  Process: 6322 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
  Process: 6323 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
 Main PID: 6324 (nginx)
    Tasks: 2 (limit: 2359)
   Memory: 2.7M
   CGroup: /system.slice/nginx.service
           ??6324 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           ??6325 nginx: worker process

Jul 01 05:00:32 tomcat systemd[1]: Starting A high performance web server and a reverse proxy server...
Jul 01 05:00:32 tomcat systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument
Jul 01 05:00:32 tomcat systemd[1]: Started A high performance web server and a reverse proxy server.

Una vez que hayas terminado, puedes pasar al siguiente paso.

Accede a la aplicación Tomcat

Ahora, abre tu navegador web y accede a la aplicación Tomcat utilizando la URL http://tomcat.example.com. Serás redirigido a la siguiente página:

Apache Tomcat

Haz clic en la App Gestora. Deberías ver la página de inicio de sesión de la App Manager:

Inicio de sesión en Tomcat

Proporciona tu nombre de usuario y contraseña de administrador y haz clic en el botón Iniciar sesión. Deberías ver el panel de control de la App Manager en la siguiente página:

Administrador de aplicaciones web Tomcat

Para acceder al Gestor de Anfitriones, haz clic en el Gestor de Anfitriones desde la página de inicio de Tomcat. Deberías ver la página de inicio de sesión del Gestor de Anfitriones de Tomcat:

Inicio de sesión de Tomcat Host Manager

Proporciona tu nombre de usuario y contraseña de administrador y haz clic en el botón Iniciar sesión. Deberías ver el panel de control del Administrador de Anfitriones Tomcat en la siguiente página:

Administrador de host virtual Tomcat

Conclusión

Enhorabuena! has instalado con éxito Apache Tomcat 10 en el servidor Debian 10. Ahora puedes crear una aplicación Java y alojarla utilizando el Apache Tomcat. No dudes en preguntarme si tienes alguna duda.

Scroll al inicio