Cómo instalar Apache Tomcat 9 con Nginx Proxy en Debian 10
Tomcat es un servidor de aplicaciones gratuito, de código abierto y ligero, utilizado para desplegar aplicaciones basadas en Java. Puede utilizarse como servidor independiente o combinado con otros servidores como Apache y Nginx. Proporciona la funcionalidad ampliada para interactuar con los Servlets Java y también implementa varias especificaciones técnicas de la plataforma Java. Actualmente, Tomcat es uno de los servidores de aplicaciones para Java más utilizados.
En este tutorial, te mostraré cómo instalar Tomcat 9 con Nginx en 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 tu servidor.
Cómo empezar
Antes de empezar, es una buena idea actualizar la caché de APT a la última versión. Puedes actualizarla ejecutando el siguiente comando:
apt-get update -y
Una vez que la caché de los paquetes de tu sistema esté actualizada, puedes pasar al siguiente paso.
Instalar Java
Tomcat es una aplicación basada en java, por lo que Java debe estar instalado en tu servidor. Si no está instalado, puedes instalarlo con el siguiente comando:
apt-get install default-jdk -y
Una vez instalado Java, puedes verificar la versión de Java con el siguiente comando:
java --version
Deberías obtener la siguiente salida:
openjdk 11.0.9.1 2020-11-04 OpenJDK Runtime Environment (build 11.0.9.1+1-post-Debian-1deb10u2) OpenJDK 64-Bit Server VM (build 11.0.9.1+1-post-Debian-1deb10u2, mixed mode, sharing)
Una vez que hayas terminado, puedes pasar al siguiente paso.
Instalar Tomcat
En primer lugar, tendrás que crear un usuario dedicado para ejecutar el servidor Tomcat. Puedes crearlo con el siguiente comando:
useradd -m -U -d /opt/tomcat -s /bin/false tomcat
A continuación, descarga la última versión de Tomcat con el siguiente comando:
wget https://www-eu.apache.org/dist/tomcat/tomcat-9/v9.0.45/bin/apache-tomcat-9.0.45.tar.gz
Una vez completada la descarga, extrae el archivo descargado con el siguiente comando:
tar -xvzf apache-tomcat-9.0.45.tar.gz
A continuación, mueve el directorio extraído al /opt con el siguiente comando:
mv apache-tomcat-9.0.45 /opt/tomcat/tomcat
A continuación, establece el permiso y la propiedad adecuados con el siguiente comando:
chown -R tomcat:tomcat /opt/tomcat/tomcat
chmod -R 755 /opt/tomcat/tomcat
Una vez que hayas terminado, puedes pasar al siguiente paso.
Crear un archivo de servicio Systemd para Tomcat
A continuación, tendrás que crear un archivo de servicio 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 9.0 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/tomcat" Environment="CATALINA_HOME=/opt/tomcat/tomcat" Environment="CATALINA_PID=/opt/tomcat/tomcat/temp/tomcat.pid" Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC" ExecStart=/opt/tomcat/tomcat/bin/startup.sh ExecStop=/opt/tomcat/tomcat/bin/shutdown.sh [Install] WantedBy=multi-user.target
Guarda y cierra el archivo y luego recarga el demonio systemd con el siguiente comando:
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
También puedes verificar el estado de Tomcat con el siguiente comando:
systemctl status tomcat
Deberías obtener la siguiente salida:
? tomcat.service - Tomcat 9.0 servlet container Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: enabled) Active: active (running) since Wed 2021-04-14 05:41:21 UTC; 42s ago Process: 5784 ExecStart=/opt/tomcat/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS) Main PID: 5791 (java) Tasks: 30 (limit: 4701) Memory: 159.1M CGroup: /system.slice/tomcat.service ??5791 /usr/lib/jvm/default-java/bin/java -Djava.util.logging.config.file=/opt/tomcat/tomcat/conf/logging.properties -Djava.util.log Apr 14 05:41:21 debian systemd[1]: Starting Tomcat 9.0 servlet container... Apr 14 05:41:21 debian startup.sh[5784]: Tomcat started. Apr 14 05:41:21 debian systemd[1]: Started Tomcat 9.0 servlet container.
Una vez que hayas terminado, puedes pasar al siguiente paso.
Configurar la interfaz web de Tomcat
A continuación, tendrás que definir un usuario para acceder a la interfaz web de Tomcat. Puedes definirlo utilizando el archivo tomcat-users.xml:
nano /opt/tomcat/tomcat/conf/tomcat-users.xml
Busca la
<role rolename="admin-gui"/> <role rolename="manager-gui"/> <user username="tomcatadmin" password="password" roles="admin-gui,manager-gui"/>
Guarda y cierra el archivo cuando hayas terminado.
Por defecto, la interfaz web de Tomcat está configurada para acceder sólo desde el localhost. Así que tendrás que configurarla para el acceso externo.
Para la app Gestor, edita la siguiente línea:
nano /opt/tomcat/tomcat/webapps/manager/META-INF/context.xml
Para la app Gestor de Anfitriones, edita el siguiente archivo:
nano /opt/tomcat/tomcat/webapps/host-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" />
Guarda y cierra el archivo y reinicia el servicio Tomcat para aplicar los cambios:
systemctl restart tomcat
Una vez que hayas terminado, puedes pasar al siguiente paso.
Configurar Nginx para Tomcat
A continuación, tendrás que instalar y configurar Nginx como proxy inverso para Tomcat. Primero, instala el paquete Nginx con el siguiente comando:
apt-get install nginx -y
Una vez instalado el Nginx, tendrás que crear un nuevo archivo de configuración del host virtual Nginx para Tomcat. Puedes crearlo 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; root /opt/tomcat/tomcat/webapps/; 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 luego verifica que el Nginx no tenga ningún error de sintaxis:
nginx -t
Deberías ver 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
A continuación, verifica el estado del servicio Nginx con 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 Wed 2021-04-14 05:57:03 UTC; 1min 38s ago Docs: man:nginx(8) Process: 6852 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 6853 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 6854 (nginx) Tasks: 3 (limit: 4701) Memory: 4.0M CGroup: /system.slice/nginx.service ??6854 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ??6855 nginx: worker process ??6856 nginx: worker process Apr 14 05:57:03 debian systemd[1]: Starting A high performance web server and a reverse proxy server... Apr 14 05:57:03 debian systemd[1]: Started A high performance web server and a reverse proxy server.
En este punto, Nginx está configurado para acceder al Tomcat. Ahora puedes pasar al siguiente paso.
Acceder a la interfaz web de Tomcat
Ahora, abre tu navegador web y accede a la interfaz web de Tomcat utilizando la URL http://tomcat.example.com. Deberías ver la siguiente página:
Haz clic en la App Manager, deberías ver la siguiente página:
Proporciona tu nombre de usuario y contraseña de administrador de la App Manager y haz clic en el botón Iniciar sesión. Deberías ver la siguiente página:
También puedes hacer clic en el Gestor de Anfitriones para acceder a la App Gestor de Anfitriones como se muestra a continuación:
Conclusión
Enhorabuena! has instalado con éxito Tomcat con Nginx como proxy inverso en Debian 10. Ahora puedes desplegar tu aplicación Java fácilmente con Tomcat. No dudes en preguntarme si tienes alguna duda.