Publicar una aplicación web Java con Spring Boot en Windows Server

Poner en producción una aplicación web Java con Spring Boot en Windows Server puede hacerse de varias formas, pero la más práctica y profesional es ejecutarla como servicio usando Java + MySQL + Nginx o IIS como proxy.

Arquitectura recomendada

Internet
   ↓
Nginx o IIS
   ↓
Spring Boot (.jar)
   ↓
MySQL

1. Requisitos del servidor

Instala en el servidor:

  • Java JDK 17 o superior

  • MySQL Server

  • Maven (opcional)

  • Nginx para Windows o IIS

  • Tu aplicación .jar


2. Generar el archivo JAR

Desde tu proyecto Maven:

mvn clean package

Se generará:

target/miapp-0.0.1-SNAPSHOT.jar

3. Probar la aplicación localmente

En el servidor:

java -jar miapp-0.0.1-SNAPSHOT.jar

Si todo está bien:

Tomcat started on port(s): 8080

Abrir:

http://localhost:8080

4. Configurar el puerto

En application.properties:

server.port=8080

También puedes usar:

server.address=0.0.0.0

5. Configurar base de datos MySQL

Ejemplo:

spring.datasource.url=jdbc:mysql://localhost:3306/sistema
spring.datasource.username=root
spring.datasource.password=1234

spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true

6. Abrir el puerto en Firewall de Windows

Abrir:

  • 8080 (Spring Boot)

  • 80 (HTTP)

  • 443 (HTTPS)

Ruta:

Panel de control → Firewall → Configuración avanzada

7. Ejecutar Spring Boot como servicio de Windows

La mejor opción es usar:

NSSM (Non-Sucking Service Manager)

Sitio oficial:

NSSM

Instalar servicio

Abrir CMD como administrador:

nssm install MiSistemaSpring

Configurar:

Application Path

C:\Program Files\Java\jdk-17\bin\java.exe

Arguments

-jar C:\apps\miapp.jar

Startup directory

C:\apps

Luego:

nssm start MiSistemaSpring

Ahora tu aplicación iniciará automáticamente con Windows.


8. Configurar dominio

Apuntar dominio:

midominio.com

hacia la IP pública del servidor.

En DNS:

A Record → IP del servidor

9. Configurar Nginx como proxy reverso

Descargar:

Nginx for Windows

Editar:

conf/nginx.conf

Ejemplo:

server {
    listen 80;
    server_name midominio.com;

    location / {
        proxy_pass http://localhost:8080;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Iniciar:

start nginx

Ahora:

http://midominio.com

redirige a Spring Boot.


10. Configurar HTTPS (SSL)

La mejor opción gratuita:

Let's Encrypt

En Windows puedes usar:

Win-ACME

Esto genera certificados SSL automáticos.


11. Logs en producción

Guardar logs:

logging.file.name=logs/app.log

o:

logging.file.path=logs

12. Variables importantes para producción

spring.jpa.show-sql=false
server.error.whitelabel.enabled=false

spring.thymeleaf.cache=true

13. Crear archivo .bat para iniciar

Ejemplo:

@echo off
java -jar C:\apps\miapp.jar
pause

14. Verificar memoria JVM

Ejemplo profesional:

java -Xms512m -Xmx2048m -jar miapp.jar

15. Producción profesional recomendada

Opción básica

  • Windows Server

  • Java 17

  • MySQL

  • Spring Boot

  • NSSM

Opción profesional

  • Nginx

  • SSL

  • Dominio

  • Backups automáticos

  • Logs

  • Monitoreo


16. Alternativas modernas de despliegue

También puedes usar:

  • Render

  • Railway

  • DigitalOcean

  • AWS

  • Azure


17. Estructura recomendada del servidor

C:\
 └── apps\
      └── miapp.jar

C:\
 └── logs\

18. Verificar si la app está corriendo

CMD:

netstat -ano | findstr :8080

19. Reiniciar servicio

nssm restart MiSistemaSpring

20. Flujo completo resumido

1. Compilar proyecto
2. Subir JAR
3. Instalar Java
4. Configurar MySQL
5. Ejecutar app
6. Crear servicio NSSM
7. Configurar Nginx
8. Configurar dominio
9. Activar SSL
10. Monitorear logs

Comentarios

Entradas populares de este blog

Aprende a Armar tu PC con el Simulador de Cisco 🖥️ Guía Paso a Paso

¿Qué es XAMPP y cómo descargarlo e instalarlo en Windows?

🗄️ Cómo Instalar y usar SQLite en Windows [Guía Paso a Paso]