Cómo instalar Apache Tomcat con Nginx Reverse Proxy en Ubuntu 22.04
Apache Tomcat es un servidor web Java de código abierto y un contenedor de Servlets utilizado para alojar aplicaciones web escritas en Java. Es la primera opción de los desarrolladores web para construir y mantener sitios web dinámicos y aplicaciones basadas en la plataforma de software Java. Es un proyecto de código abierto desarrollado por la Apache Software Foundation. Tomcat permite a un servidor web manejar contenido web dinámico basado en Java.
Este tutorial te mostrará cómo instalar Apache Tomcat en Ubuntu 22.04.
Requisitos previos
- Un servidor que ejecute Ubuntu 22.04.
- Un nombre de dominio válido apuntado con la IP de tu servidor.
- Una contraseña de root configurada en el servidor.
Instalar Java JDK
Apache Tomcat es una aplicación basada en Java, por lo que Java debe estar instalado en tu servidor. Si Java no está instalado, puedes instalarlo utilizando el siguiente comando:
apt install default-jdk -y
Una vez instalado Java, puedes verificar la versión de Java utilizando el siguiente comando:
java -version
Obtendrás la siguiente salida:
openjdk version "11.0.15" 2022-04-19 OpenJDK Runtime Environment (build 11.0.15+10-Ubuntu-0ubuntu0.22.04.1) OpenJDK 64-Bit Server VM (build 11.0.15+10-Ubuntu-0ubuntu0.22.04.1, mixed mode, sharing)
Instalar Apache Tomcat en Ubuntu 22.04
En primer lugar, es una buena idea ejecutar Tomcat como un usuario independiente. Puedes crear un usuario Tomcat con el siguiente comando:
useradd -m -d /opt/tomcat -U -s /bin/false tomcat
A continuación, descarga la última versión de Apache Tomcat con el siguiente comando:
wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.20/bin/apache-tomcat-10.0.20.tar.gz
Una vez descargado Apache Tomcat, extrae el archivo descargado dentro del directorio /opt:
tar xzvf apache-tomcat-10*tar.gz -C /opt/tomcat --strip-components=1
A continuación, establece la propiedad y el permiso adecuados para el directorio Tomcat:
chown -R tomcat:tomcat /opt/tomcat/ chmod -R u+x /opt/tomcat/bin
Una vez que hayas terminado, puedes continuar con el siguiente paso.
Crear usuario administrativo de Tomcat
Por defecto, se puede acceder a Tomcat sin ningún tipo de autenticación. Así que se recomienda habilitar la autenticación y crear un usuario administrativo para Tomcat. Puedes añadirlo editando el archivo de configuración de usuarios de Tomcat:
nano /opt/tomcat/conf/tomcat-users.xml
Añade las siguientes líneas encima de la línea </tomcat-users>:
<role rolename="admin-gui" /> <user username="admin" password="yourpassword" roles="manager-gui,admin-gui" />
Guarda y cierra el archivo cuando hayas terminado.
Habilitar el Acceso Remoto a Tomcat
Por defecto, Tomcat está configurado para acceder sólo desde el host local. Por tanto, se recomienda habilitar el acceso remoto a Tomcat para gestionar Tomcat desde el host remoto.
Para habilitar la aplicación de gestión desde un host remoto, edita el siguiente archivo:
nano /opt/tomcat/webapps/manager/META-INF/context.xml
Elimina la siguiente línea:
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
Para habilitar la app gestor de host desde un host remoto, edita el siguiente archivo:
nano /opt/tomcat/webapps/host-manager/META-INF/context.xml
Elimina la línea siguiente:
<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.
Crear un archivo de servicio para Apache Tomcat
A continuación, tendrás que crear un archivo de servicio para gestionar el servicio Tomcat a través de systemd. Puedes crearlo utilizando 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 habilítalo para que se inicie al reiniciar el sistema con el siguiente comando:
systemctl start tomcat systemctl enable tomcat
Puedes comprobar el estado de Apache Tomcat con el siguiente comando:
systemctl status tomcat
Obtendrás la siguiente salida:
? tomcat.service - Tomcat Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: enabled) Active: active (running) since Fri 2022-04-29 08:11:54 UTC; 6s ago Process: 18959 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS) Main PID: 18966 (java) Tasks: 29 (limit: 4630) Memory: 116.4M CPU: 5.312s CGroup: /system.slice/tomcat.service ??18966 /usr/lib/jvm/java-1.11.0-openjdk-amd64/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties -Dja> Apr 29 08:11:54 ubuntu systemd[1]: Starting Tomcat... Apr 29 08:11:54 ubuntu startup.sh[18959]: Tomcat started. Apr 29 08:11:54 ubuntu systemd[1]: Started Tomcat.
En este punto, Tomcat está iniciado y escucha en el puerto 8080. Puedes comprobarlo con el siguiente comando
ss -antpl | grep java
Obtendrás la siguiente salida:
LISTEN 0 1 [::ffff:127.0.0.1]:8005 *:* users:(("java",pid=18966,fd=53)) LISTEN 0 100 *:8080 *:* users:(("java",pid=18966,fd=43))
Una vez que hayas terminado, puedes continuar con el siguiente paso.
Configurar Nginx como Proxy Inverso para Tomcat
A continuación, tendrás que crear un Nginx como proxy inverso para Apache Tomcat. En primer lugar, instala el servidor web Nginx con el siguiente comando:
apt-get install nginx -y
Una vez instalado el servidor web Nginx, crea un archivo de configuración de host virtual Nginx con el siguiente comando:
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/tomcat-access.log; error_log /var/log/nginx/tomcat-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 y, a continuación, comprueba si Nginx tiene algún error de sintaxis utilizando el siguiente comando:
nginx -t
Obtendrás 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 servicio Nginx para aplicar los cambios:
systemctl restart nginx
También puedes comprobar el estado de Nginx utilizando el siguiente comando:
systemctl status nginx
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 Fri 2022-04-29 08:15:28 UTC; 8s ago Docs: man:nginx(8) Process: 19070 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 19071 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 19072 (nginx) Tasks: 3 (limit: 4630) Memory: 3.3M CPU: 63ms CGroup: /system.slice/nginx.service ??19072 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;" ??19073 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ??19074 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" Apr 29 08:15:28 ubuntu systemd[1]: Starting A high performance web server and a reverse proxy server... Apr 29 08:15:28 ubuntu systemd[1]: Started A high performance web server and a reverse proxy server.
Accede a Apache Tomcat
Ahora, abre tu navegador web y accede a la interfaz web de Apache Tomcat utilizando la URL http://tomcat.example.com. Deberías ver el panel de control de Tomcat en la siguiente pantalla:
Haz clic en la aplicación Administrador. Se te pedirá que te autentiques como se muestra a continuación:
Introduce tu nombre de usuario y contraseña de administrador, y haz clic en el botón Iniciar sesión. Deberías ver el salpicadero de la App Manager en la siguiente pantalla:
Para acceder a la app Gestor de Anfitriones, pulsa en Gestor de Anfitriones. Deberías ver la siguiente pantalla:
Pulsa sobre el Estado del Servidor. Deberías ver el estado de Apache Tomcat en la siguiente pantalla:
Conclusión
¡Enhorabuena! Has instalado correctamente Apache Tomcat con Nginx como proxy inverso en Ubuntu 22.04. Ahora puedes crear y alojar tu primera aplicación Java utilizando Apache Tomcat. No dudes en preguntarme si tienes alguna duda.