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 atu_vps_ip
- A record para
www.tuwebdev.es
apuntando atu_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:
- Verificar Configuración: Asegúrate de que los registros DNS están correctamente configurados.
- Usar Herramientas: Utiliza herramientas como
whatsmydns.net
para verificar la propagación. - TTL (Time to Live): Si es posible, reduce el TTL de los registros DNS antes de hacer cambios para acelerar la propagación.
- 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). - 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:
- Subir el nuevo archivo .jar: Utiliza SCP para transferir el archivo al servidor.
- Detener el servicio existente:
sudo systemctl stop tuwebdevweb
- Reemplazar el archivo .jar: Renombra el archivo antiguo y mueve el nuevo archivo.
- Iniciar el servicio:
sudo systemctl start tuwebdevweb
- 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.