Cómo Instalar Tomcat con Nginx como Reverse Proxy en Ubuntu 18.04

Apache Tomcat es un Servlet de Java gratuito y de código abierto que proporciona un entorno de servidor web HTTP HTTP para ejecutar aplicaciones Java. Es simple, fácil de usar y uno de los servidores web más utilizados en el mundo. Tomcat actúa como un servidor de desarrollo que se puede utilizar para probar y crear aplicaciones que utilizan JSF 2, servlets / JSP u otras tecnologías web dinámicas basadas en Java.

En este tutorial, explicaremos cómo instalar la última versión de Apache Tomcat en un servidor cloud Ubuntu 18.04.

Requisitos

  • Un servidor vps cloud corriendo con Ubuntu 18.04.
  • Una IP estática configurada en tu servidor.
  • Una contraseña root configurada en tu servidor vps en España.

Instala Java

Apache Tomcat requiere que instales la versión 8 de Java o una superior. Si no la tienes instalada, puedes hacerlo con el siguiente comando:

# apt-get install default-jdk -y

Una vez instalada, comprueba la versión de Java con el siguiente comando:

# java --version

Deberías ver el siguiente resultado:

openjdk 11.0.4 2019-07-16
OpenJDK Runtime Environment (build 11.0.4+11-post-Ubuntu-1ubuntu218.04.3)
OpenJDK 64-Bit Server VM (build 11.0.4+11-post-Ubuntu-1ubuntu218.04.3, mixed mode, sharing)

Descarga Tomcat

Antes de empezar, necesitarás crear un grupo y un usuario que correrán el servicio Tomcat.

Puedes hacerlo con el siguiente comando:

# groupadd tomcat
# useradd -s /bin/false -g tomcat -d /home/tomcat tomcat

A continuación, descárgate la última versión de Apache Tomcat con el siguiente comando:

# wget http://mirrors.estointernet.in/apache/tomcat/tomcat-9/v9.0.26/bin/apache-tomcat-9.0.26.zip

Una vez descargado, descomprime el archivo con el siguiente comando:

# unzip apache-tomcat-9.0.26.zip

Después mueve el directorio extraído a /home/ directory:

 mv apache-tomcat-9.0.26 /home/tomcat 

Después, cambia la propiedad de /home/tomcat directory a tomcat con el siguiente comando:

# chown -R tomcat:tomcat /home/tomcat
# chmod -R 755 /home/tomcat/

Configura la Interfaz de Gestión Web de Tomcat 

Para acceder a la interfaz de gestión web de Tomcat, necesitarás añadir un usuario y una contraseña para acceder a la manager-gui y a la admin-gui. Puedes hacer esto editando el fichero /home/tomcat/conf/tomcat-users.xml:

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

Añade las siguientes líneas sobre la línea </tomcat-users>:

&amp;amp;lt;role rolename=&amp;amp;quot;manager-gui&amp;amp;quot;/&amp;amp;gt;
&amp;amp;lt;role rolename=&amp;amp;quot;admin-gui&amp;amp;quot;/&amp;amp;gt;
&amp;amp;lt;user username=&amp;amp;quot;admin&amp;amp;quot; password=&amp;amp;quot;your-password&amp;amp;quot; roles=&amp;amp;quot;manager-gui,admin-gui&amp;amp;quot;/&amp;amp;gt;

Guarda y cierra el archivo cuando hayas terminado.

Después, necesitarás permitir el que el Gestor Tomcat y el Gestor Host sean accesibles desde tu dirección IP remota.

Next, you will need to allow Tomcat Manager and Host Manager to be accessible from your remote IP address.

For the host manage app, edit the following file:

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

Add your remote machine IP address from where you want to access the host manager app:

&amp;amp;lt;Context antiResourceLocking=&amp;amp;quot;false&amp;amp;quot; privileged=&amp;amp;quot;true&amp;amp;quot; &amp;amp;gt;
  &amp;amp;lt;Valve className=&amp;amp;quot;org.apache.catalina.valves.RemoteAddrValve&amp;amp;quot; allow=&amp;amp;quot;127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|your-remote-system-ip&amp;amp;quot; /&amp;amp;gt;

For manager app, edit the following file:

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

Add your remote machine IP address from where you want to access the manager app:

&amp;amp;lt;Context antiResourceLocking=&amp;amp;quot;false&amp;amp;quot; privileged=&amp;amp;quot;true&amp;amp;quot; &amp;amp;gt;
  &amp;amp;lt;Valve className=&amp;amp;quot;org.apache.catalina.valves.RemoteAddrValve&amp;amp;quot; allow=&amp;amp;quot;127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|your-remote-system-ip&amp;amp;quot; /&amp;amp;gt;

Crea el Servicio de Archivos Systemd para Tomcat

A continuación, necesitarás crear el servicio de archivos systemd para el gestionar el servicio de Tomcat. Puedes crearlo con el siguiente comando:

# nano /etc/systemd/system/tomcat.service

Añade las siguientes líneas:

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

[Service]
Type=forking

User=tomcat
Group=tomcat

Environment=&amp;amp;quot;JAVA_HOME=/usr/lib/jvm/default-java&amp;amp;quot;
Environment=&amp;amp;quot;JAVA_OPTS=-Djava.security.egd=file:///dev/urandom&amp;amp;quot;

Environment=&amp;amp;quot;CATALINA_BASE=/home/tomcat&amp;amp;quot;
Environment=&amp;amp;quot;CATALINA_HOME=/home/tomcat&amp;amp;quot;
Environment=&amp;amp;quot;CATALINA_PID=/home/tomcat/temp/tomcat.pid&amp;amp;quot;
Environment=&amp;amp;quot;CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC&amp;amp;quot;

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

[Install]
WantedBy=multi-user.target

Guarda y cierra el archivo. Después, recarga el daemon de systemd y arranca el servicio Tomcat con los siguientes comandos:

# systemctl daemon-reload
# systemctl start tomcat

También puedes verificar el servicio Tomcat con el siguiente comando:

# systemctl status tomcat

Deberías ver el siguiente resultado:

● tomcat.service - Tomcat servlet container
   Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: enabled)
   Active: active (running) since Sun 2019-10-06 06:57:39 UTC; 19s ago
  Process: 17893 ExecStart=/home/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 17903 (java)
    Tasks: 43 (limit: 1114)
   CGroup: /system.slice/tomcat.service
           └─17903 /usr/lib/jvm/default-java/bin/java -Djava.util.logging.config.file=/home/tomcat/conf/logging.properties -Djava.util.logging.

Oct 06 06:57:39 ubuntu1804 systemd[1]: Starting Tomcat servlet container...
Oct 06 06:57:39 ubuntu1804 startup.sh[17893]: Tomcat started.
Oct 06 06:57:39 ubuntu1804 systemd[1]: Started Tomcat servlet container.

Accede a la Interfaz Web de Tomcat

Ahora Tomcat está instlado y corriendo en el puerto 8080. Abre tu navegador web y ve a la URL http://your-server-ip:8080. Serás redirigido al panel de Tomcat como se muestra más abajo:

Ahora, haz clic en App Manager o Host Manager. Te pedirá que proporciones un nombre de usuario y una contraseña como se muestra en la siguiente pantalla:

Proporciona tu nombre de usuario admin y haz clic en el botón de Sign In. Serás redirigido al panel de Manager App o de Host Manager:

o

Configura Nginx como Reverse Proxy

También puedes configurar Nginx como Reverse Proxy para el servidor Tomcat. Así, Nginx aceptará las peticiones sobre el puerto 80 frente al servidor Tomcat.

Primero, instala el servidor web de Nginx con el siguiente comando:

# apt-get install nginx -y

Una vez instalado, crea un nuevo archivo de configuración virtual host para Tomcat.

 nano /etc/nginx/sites-available/tomcat.conf 

Añade las siguientes líneas:

upstream tomcat {
  server 127.0.0.1:8080 weight=100 max_fails=5 fail_timeout=5;
}

server {
  listen          80;
  server_name     your-domain.com;

  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://tomcat/;
  }
}

Guarda y cierra el archivo. Después, habilita el archivo virtual host del servidor web de Nginx para aplicar la configuración:

ln -s /etc/nginx/sites-available/tomcat.conf /etc/nginx/sites-enabled/
systemctl restart nginx

¡Enhorabuena! Ya puedes acceder al servidor Tomcat a través de la URL http://your-domain.com sin especificar el puerto Tomcat 8080.

To write a comment on this article, fill out the form below. Fields marked with an asterisk (*) are required.