5 min read

Guía Completa para Desplegar una Aplicación Web en un VPS con Dominio Personalizado

Aprende a desplegar una aplicación web en un VPS y configurarla con un dominio personalizado. Sigue esta guía paso a paso para asegurar un despliegue exitoso y resolver posibles problemas.
Guía Completa para Desplegar una Aplicación Web en un VPS con Dominio Personalizado

Cómo Configurar y Desplegar tu Aplicación Web Usando un VPS y Nginx

Esta guía explica cómo desplegar una aplicación web en un servidor VPS y configurarla para que esté accesible a través de un dominio personalizado (tuwebdev.es). Se utilizará una aplicación Spring Boot empaquetada como un archivo .jar.


Requisitos Previos

  • Un servidor VPS con Ubuntu (o cualquier distribución de Linux).
  • Acceso SSH al servidor.
  • Un dominio registrado (tuwebdev.es en este caso).
  • La aplicación web empaquetada como un archivo .jar.
  • Instalación de los siguientes paquetes en el VPS:
    • OpenJDK 17
    • Nginx
    • Certbot (para HTTPS opcional)
  • Conocimiento básico de SSH, SCP, y configuración de DNS.

Paso 1: Configurar el VPS

1.1 Acceder al Servidor VPS

ssh usuario@tu_vps_ip

1.2 Actualizar el Servidor

sudo apt update && sudo apt upgrade -y

1.3 Instalar Java

En este caso estamos usando la versión 17 en nuestra aplicación, por lo tanto descargamos y comprobamos que las versiones coinciden.

sudo apt install openjdk-17-jdk -y
java -version

Paso 2: Transferir la Aplicación al VPS

2.1 Crear un Directorio para la Aplicación

mkdir -p /home/usuario/tuwebdevweb

2.2 Transferir el Archivo .jar

Otra forma de transferir el archivo es abriendo sesión por FPT si no te aclaras para transferir el .jar desde tu ordenador al vps.

scp /path/to/your/tuwebdev-0.0.1.jar usuario@tu_vps_ip:/home/usuario/tuwebdevweb/

Paso 3: Configurar un Servicio Systemd

3.1 Crear el Archivo de Servicio

sudo nano /etc/systemd/system/tuwebdevweb.service

Añade:

*Como 'User=usuario', en este caso es 'usuario' aunque aquí debemos especificar el username de la sesión a la máquina linux. Puede ser 'ubuntu', o el que sea...

La ruta '/home/usuario/tuwebdevweb/tuwebdev-0.0.1.jar' al archivo la tendremos que definir de acuerdo de la localización del mismo en el vps.

[Unit]
Description=Aplicación Web de tuwebdev
After=syslog.target

[Service]
User=usuario
ExecStart=/usr/bin/java -jar /home/usuario/tuwebdevweb/tuwebdev-0.0.1.jar
SuccessExitStatus=143
Restart=always
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=tuwebdevweb

[Install]
WantedBy=multi-user.target

3.2 Recargar y Iniciar el Servicio

sudo systemctl daemon-reload
sudo systemctl start tuwebdevweb
sudo systemctl enable tuwebdevweb
sudo systemctl status tuwebdevweb

Paso 4: Configurar Nginx como Proxy Reverso

4.1 Instalar Nginx

sudo apt install nginx -y

4.2 Configurar Nginx

sudo nano /etc/nginx/sites-available/default

Añade:

server {
    listen 80;
    server_name tuwebdev.es www.tuwebdev.es;

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

4.3 Probar y Reiniciar Nginx

sudo nginx -t
sudo systemctl restart nginx

Paso 5: Configurar el Dominio

5.1 Configurar los Registros DNS

En el panel de control de tu registrador de dominios, crea registros A para tu dominio:

  • A record para tuwebdev.es apuntando a tu_vps_ip
  • A record para www.tuwebdev.es apuntando a tu_vps_ip

5.2 Esperar la Propagación de DNS

La propagación de DNS puede tardar desde unos minutos hasta 24-48 horas. Aquí algunos consejos para manejar este tiempo de espera:

  1. Verificar Configuración: Asegúrate de que los registros DNS están correctamente configurados.
  2. Usar Herramientas: Utiliza herramientas como whatsmydns.net para verificar la propagación.
  3. TTL (Time to Live): Si es posible, reduce el TTL de los registros DNS antes de hacer cambios para acelerar la propagación.
  4. Cache DNS: Limpia la caché DNS en tu computadora para ver los cambios más rápidamente (ipconfig /flushdns en Windows, sudo killall -HUP mDNSResponder en macOS).
  5. Paciencia: A veces, solo se necesita esperar el tiempo necesario para que los cambios se reflejen globalmente.

Estos pasos te ayudarán a gestionar el tiempo de espera y asegurar que tu configuración DNS se propague correctamente.


Paso 6: Configurar HTTPS (Opcional pero Recomendado)

6.1 Instalar Certbot

sudo apt install certbot python3-certbot-nginx -y

6.2 Obtener el Certificado SSL

sudo certbot --nginx -d tuwebdev.es -d www.tuwebdev.es

6.3 Automatizar la Renovación del Certificado

Certbot se encargará automáticamente de renovar el certificado:

sudo certbot renew --dry-run

Paso 7: Verificar el Despliegue

Visita tu dominio en un navegador web:

http://tuwebdev.es
https://tuwebdev.es

Actualización del Proyecto

Para actualizar la aplicación:

  1. Subir el nuevo archivo .jar: Utiliza SCP para transferir el archivo al servidor.
  2. Detener el servicio existente: sudo systemctl stop tuwebdevweb
  3. Reemplazar el archivo .jar: Renombra el archivo antiguo y mueve el nuevo archivo.
  4. Iniciar el servicio: sudo systemctl start tuwebdevweb
  5. Verificar el estado: sudo systemctl status tuwebdevweb

Siguiendo esta guía, podrás desplegar tu aplicación web en un servidor VPS y configurarla para que esté accesible a través de un dominio personalizado.

Solución de Problemas

Cuando surgen problemas durante el despliegue de tu aplicación, es esencial saber cómo identificar y solucionar los errores. Aquí se detallan algunos pasos y herramientas útiles para la resolución de problemas.

Verificar los Registros de Errores

Registros de Systemd
Para ver los registros del servicio tuwebdevweb, utiliza:

journalctl -u tuwebdevweb.service

Esto te proporcionará información detallada sobre los eventos y errores relacionados con tu servicio.

Registros de Nginx
Para ver los registros de Nginx, revisa:

sudo tail -f /var/log/nginx/error.log

Este comando muestra los últimos errores registrados por Nginx en tiempo real.

Verificar el Estado del Servicio

Para asegurarte de que el servicio está funcionando correctamente:

sudo systemctl status tuwebdevweb

Este comando muestra el estado actual del servicio, incluyendo cualquier error.

Probar la Configuración de Nginx

Si Nginx no se reinicia correctamente, verifica su configuración:

sudo nginx -t

Este comando prueba la configuración de Nginx y te informa de cualquier error de sintaxis.

Revisar la Configuración del Dominio

Asegúrate de que los registros DNS estén configurados correctamente y que hayan propagado completamente. Utiliza herramientas como dig o nslookup para verificar:

dig tuwebdev.es
nslookup tuwebdev.es

Gestionar Procesos Java

Si tu archivo .jar está corriendo y necesitas detenerlo, puedes matar el proceso. Primero, encuentra el ID del proceso (PID):

ps aux | grep tuwebdev-0.0.1.jar

Este comando lista todos los procesos relacionados con tu aplicación. Luego, mata el proceso:

kill -9 <PID>

Reemplaza <PID> con el ID del proceso encontrado.

Uso de Top y HTOP

Para monitorear el uso de recursos y procesos en tu servidor, puedes utilizar top o htop:

top

o, si htop está instalado:

htop

Estas herramientas te permiten ver el uso de CPU, memoria y otros recursos en tiempo real, y te permiten gestionar procesos directamente desde la interfaz.

Reiniciar Servicios

En algunos casos, reiniciar servicios puede solucionar problemas temporales. Para reiniciar Nginx y tu servicio web:

sudo systemctl restart nginx
sudo systemctl restart tuwebdevweb

Asegúrate de verificar el estado después de reiniciar para confirmar que todo está funcionando correctamente.

Conclusión

Siguiendo estos pasos, deberías poder identificar y solucionar la mayoría de los problemas que pueden surgir durante el despliegue de tu aplicación web en un VPS. Si continúas experimentando problemas, considera buscar ayuda adicional en foros técnicos o documentación específica de las herramientas que estás utilizando.

Un saludo.