Desplegar Servlets de Java en tu Servidor VPS

Avanzado

Hoy te mostraremos un ejemplo de cómo implementar Servlets en tu servidor para que puedas crear tus propias aplicaciones Java (o sitios web) en tu propio servidor. Los Servlets son una de las tecnologías más importantes en el arsenal de cualquier desarrollador de Java, ya que te permiten ampliar la funcionalidad de tus aplicaciones del lado del servidor para entregar contenido dinámico a tus usuarios. Seguramente este artículo te será muy útil.

¿Qué es un Servlet?

Java Servlets son programas que se ejecutan en un servidor Web y actúa como una capa intermedia entre una solicitud proveniente de un navegador Web u otro cliente HTTP y bases de datos o aplicaciones en el servidor HTTP.

Con el uso de Servlets, puedes recoger las aportaciones de los usuarios a través de formularios de páginas web, presentar los registros de una base de datos u otra fuente, y crear páginas web de forma dinámica.

Servlets en la práctica
Servlets en la práctica

Así que…

Supongamos que ya has descargado un ejemplo de maven en algún lugar y has conseguido meter tu código en Tomcat (este es normalmente el punto de partida para el aprendizaje de servlets) de cualquier manera (archivo de WAR o directamente desde el entorno de desarrollo). Tienes la estructura de tu aplicación y tienes un archivo web.xml. A partir de ahí empiezas a crear tus páginas.

En primer lugar, no puedes ver un vínculo directo entre un “trozo” de la barra de direcciones y una página del mismo nombre en tu proyecto. localhost:8080/nombre_WAR/test y test.jsp no son lo mismo. /test es un servlet “url-tag”. Se usa para encontrar un archivo Java y apunta a test.jsp.

El camino desde la lectura del código por la máquina hasta la visualización de la página en el navegador se ve así:

webapp/WEB-INF/web.xml -> servlet
---> es.user.project/web/NombreClase -> request
---> page.jsp

Sí, nada está claro todavía. Si lo describimos con palabras humanas sencillas, se verá así:

Desde el archivo web.xml a través de un servlet, la máquina obtiene la ruta de la clase Java, que a su vez dirige la máquina a la página deseada.

Ahora demostraremos como desplegar un proyecto en Tomcat, cuya página principal se mostrará algo similar a: midominio/nombre_WAR (si desplegamos el archivo WAR).

Eligiendo un Servidor: Clouding.io

Elegir el VPS adecuado puede ser una tarea difícil. ¿Buscas un host VPS barato? ¡Clouding.io ofrece 5€ en crédito gratis a nuevos usuarios! Es una buena elección para comenzar y probar. Además, es un servidor cloud que se adapta a tus necesidades y lo mejor es que la facturación es por horas.

Por supuesto, si ya tienes un servidor propio o vas a utilizar uno alternativo, no hay problema. Los pasos deberían dar con éxito el mismo resultado.

Esto es lo que configuro generalmente: (puedes modificar las opciones para ajustar tu prueba al saldo de 5€)

  • Sistema: Ubuntu 20.04
  • RAM: 4GB
  • vCores 2x
  • Disco SSD: 20GB
  • Activar backups: Activado (opcional)
  • Activar red privada: Activado (opcional)
Configuración del servidor en Clouding
Configuración del servidor en Clouding

Configurando Servidor

Tan pronto como tu nuevo servidor privado virtual (VPS) esté particionado/seleccionado, es momento de iniciar sesión y comenzar. Secure Shell, más comúnmente conocido como SSH, es tu opción preferida para iniciar sesión en tu servidor.

Ahora, ¿Qué cliente SSH debo elegir? Hay muchos programas SSH disponibles, la mayoría de ellos son gratuitos. Para este ejemplo utilizaré MobaXterm.

Una vez instalada la herramienta en tu ordenador, necesitarás la siguiente información para iniciar sesión en su servidor a través de SSH:

  • La dirección IP de tu servidor
  • Tus credenciales de inicio de sesión / contraseña
Mis llaves SSH
Mis llaves SSH

Ahora, utiliza el comando ssh utilizando el usuario root y la dirección IP:

ssh root@dirección_IP

En caso utilices MobaXterm, puedes hacerlo a través de una interfaz, como se muestra en la siguiente captura:

SSH a través de MobaXterm
SSH a través de MobaXterm

Ahora pasemos a instalar los requerimientos necesarios para desplegar nuestros servlets.

Instalar Servidor Web Tomcat

Apache Tomcat es una implementación de código abierto de las tecnologías Java Servlet y JSP que se puede utilizar para implementar aplicaciones basadas en Java. Si estás buscando ejecutar aplicaciones basadas en Java que funcionen sin problemas y rápido, Apache Tomcat es la mejor opción.

  • Estos son los pasos para instalar Tomcat 9 en Ubuntu 20.04 LTS desde los repositorios de la misma distribución:
sudo apt update
sudo apt install -y tomcat9 tomcat9-admin
Instalar Tomcat en Ubuntu
Instalar Tomcat en Ubuntu
  • Ahora comprobamos el estado del servicio Tomcat 9:
systemctl status tomcat9
Estado del servicio Tomcat 9
Estado del servicio Tomcat 9

La instalación de Tomcat crea los siguientes directorios:

  • /bin: contiene los scripts para ejecutar Tomcat.
  • /webapps: es la ubicación donde implementarás tus aplicaciones.
  • /logs: es donde Tomcat genera sus registros.
  • /lib: es donde Tomcat busca los archivos JAR. Aquí es donde almacenará paquetes adicionales no incluidos con Tomcat, como JPA.
  • /conf: es el XML de configuración para Tomcat, donde puedes hacer cosas como agregar usuarios y roles para Tomcat.

Ahora, como el firewall UFW se está ejecutando en Ubuntu, debemos permitir el tráfico TCP entrante desde cualquier fuente al puerto 8080 (por defecto):

sudo ufw allow 8080/tcp
Permitir tráfico TCP puerto 8080
Permitir tráfico TCP puerto 8080

Por último, para usar el Gestor de Aplicaciones Web de Tomcat, debemos crear un usuario. Para ello ejecuta lo siguiente:

sudo nano /etc/tomcat9/tomcat-users.xml

Y entonces, agrega un usuario y contraseña: (como ejemplo: tomcat/tomcat)

...
<user username="tomcat" password="tomcat" roles="admin-gui,manager-gui"/>
</tomcat-users>

Implementar Aplicaciones en Tomcat

Si instalaste Tomcat como servicio, ya se está ejecutando y podemos navegar a la pantalla de bienvenida de Tomcat en un navegador.

Pantalla de bienvenida de Tomcat
Pantalla de bienvenida de Tomcat
Utilicé un proxy inverso en nginx:

server{
listen 80 default_server;
listen [::]:80 default_server;
server_name servlet.growuz.com

root /usr/share/nginx/html;

index index.php index.html index.htm;
location / {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}

Por otra parte, también es posible ir al Gestor de Aplicaciones Web, DirecciónIP:8080/manager/html, o tudominio.com/manager/html; según hayas apuntado la IP en tu dominio con un registro A en el gesto DNS.

Ingresar al Gestor de Aplicaciones Web
Ingresar al Gestor de Aplicaciones Web

E ingresaremos con las credenciales configuradas en el paso anterior.

Interfaz manager webapp
Interfaz manager webapp

El directorio /webapps de Tomcat es donde implementas una aplicación. Puede colocar un archivo .war allí y Tomcat lo ejecutará. Un archivo WAR es el paquete estándar para un recurso de aplicación web: un archivo JAR con algunos archivos adicionales que le indican al contenedor (en este caso Tomcat) cómo ejecutarlo.

Además del paquete estándar, hay tres formas adicionales de implementar contenido en Tomcat.

  • Despliegue explotado

Una aplicación web “explosionada” es una aplicación que no está comprimida en un archivo WAR, lo que significa que aún contiene todos los elementos dispuestos en directorios y archivos. El archivo Tomcat que desempaquetaste se envió con varios ejemplos implementados de esta manera, que encontrarás en el directorio /examples.

Si navega hasta http://direcciónIP:8080/examples/, encontrarás una lista de enlaces. Tomcat representa esta página a partir del archivo /webapps/examples/index.html.

  • Sirviendo contenido estático

Es posible servir archivos desde el sistema de archivos o reenviarlos desde Tomcat a otro servidor HTTP como Apache. Otra configuración común es colocar un servidor de archivos como Apache o Nginx frente a Tomcat y luego reenviar sus solicitudes de API a Tomcat.

  • Tomcat integrado

Durante mucho tiempo, Jetty fue el único servidor capaz de funcionar como servidor integrado. Eso ha cambiado y ahora Tomcat también puede ejecutarse integrado. La idea de usar un servidor integrado es que en lugar de que el servidor contenga los archivos de la aplicación, como ha visto hasta ahora, tenga una aplicación con una clase principal (es decir, una aplicación Java independiente), que invoca las capacidades del servidor desde dentro de su base de código. En general, esto ofrece un modelo de desarrollo más simple y portátil, y rápidamente se ha convertido en la norma. Spring Boot, por ejemplo, usa una instancia de Tomcat incrustada que se ejecuta en modo dev.

Desplegar Servlets

Es momento de desplegar nuestros servlets. Utilizaré un mensaje de bienvenida, pero tú puedes desplegar tu propia aplicación. Por ejemplo, asumamos que esta es mi aplicación de desarrollo:

Servlet en Java
Servlet en Java

El siguiente paso es construir el artefacto y obtener el archivo .WAR.

A continuación, Desplegamos nuestra aplicación a través del Gestor de Aplicaciones Web. En la sección Archivo WAR a desplegar, seleccionamos nuestro archivo .WAR y hacemos clic en botón Desplegar.

Desplegar archivo WAR
Desplegar archivo WAR

Lo anterior te redirigirá a una URL similar a: midominio.com/NombreArchivoWAR/. Entonces, si lo queremos por ejemplo en /home hacemos lo siguiente:

cd /home

Además, esta vez elegiremos la opción Desplegar directorio o archivo WAR localizado en servidor (ver imagen arriba). Con las siguientes opciones similares:

  • Trayectoria de Contexto: /home
  • URL de WAR o directorio: /home/miarchivo.war
Desplegar Servlets
Desplegar Servlets

¡Voila!

Resumen

Recuerda que un Servlet Java es una pieza de la tecnología JavaServer Pages, es decir, una aplicación Java del lado del servidor que recibe solicitudes del cliente y genera contenido dinámico para el cliente, generalmente HTML.

Al final del día, hay dos formas viables de implementar servlets en tu servidor: la API de Java EE 8 y un contenedor de servlets. La primera opción proporciona una API más simple y es la forma preferida de implementar servlets en aplicaciones de nivel empresarial, mientras que la segunda opción es más liviana y es una buena opción para proyectos más pequeños.

Entonces, quieres implementar servlets en tu servidor VPS y el manual te dice lo que necesitas, pero asume que sabes cómo configurar el servidor. Te hemos mostrado cómo hacerlo con un ejemplo. Hay muchos servidores VPS y todos tienen diferentes formas de configurarlos. Este no es el lugar para profundizar en los pros/contras de cada uno, pero podemos decirte por qué elegimos el que elegimos (Clouding.io): Los servidores en la nube comienzan en $0.004 por hora, por lo que solo pagas lo que necesitas, cuando lo necesitas. Además, tiene la flexibilidad de escalar rápidamente los recursos hacia arriba y hacia abajo a medida que cambian tus necesidades. Sin duda, una solución ideal para desplegar nuestros proyectos en Java.

Sobre el Autor:

Hey hola! Yo soy Alex Walton y tengo el placer de compartir conocimientos hacía ti sobre el tema de Programación en Java, desde cero, Online y Gratis.

Deja una Respuesta

*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.