Cómo desplegar una aplicación Symfony en un VPS (paso a paso)
Del servidor a producción: hardening, PHP/NGINX, HTTPS y despliegue con Git (incluye CI/CD).
Guía paso a paso para desplegar Symfony 6.4 en un VPS (Ubuntu/Debian o Rocky/Alma/RHEL): NGINX/Apache + PHP‑FPM, TLS con Let’s Encrypt, configuración y secretos, migraciones de base de datos, flujos de despliegue (git pull, releases sin interrupciones, Docker), recomendaciones de infraestructura, rendimiento, monitorización/logging y CI/CD. SO objetivo: «todos los candidatos habituales».
Requisitos previos
- VPS con SSH y usuario sudo no‑root; dominio apuntando a la IP pública (A/AAAA).
- Git local y en el servidor; acceso al repo (clave SSH o token).
- Proyecto Symfony 6.4 con Composer y Doctrine Migrations.
Consejo: Dimensiona CPU/RAM/disco/IOPS/swap según « los requisitos de tu aplicación ». Empieza pequeño, monitoriza y escala.
Preparación del servidor
Usuario de despliegue y endurecimiento SSH
Actualizaciones, firewall, utilidades
Instalar PHP, Composer, NGINX/Apache
Preparar la aplicación
Configurar NGINX (recomendado)
HTTPS (Let’s Encrypt)
Recomendaciones de infraestructura
Comparativa de proveedores Proveedor Opciones disponibles Funcionalidades clave Ventajas Inconvenientes DigitalOcean
- Droplets (VPS)
- DB/Redis gestionados
- Spaces/CDN
- Imágenes 1‑Click
- Snapshots/Backups
- Monitoring/Alerts
- UX sencilla
- Docs claras
- Buena red
- Menos opciones HF
- Precio medio
- Linodes (VPS)
- DB/K8s gestionados
- Object Storage
- IPv6 nativo
- StackScripts
- Soporte valorado
- Buena rel. precio/rend.
- Red fiable
- Facturación simple
- Menos regiones
- Menos add‑ons
- Cloud Compute
- High Frequency
- Bare Metal
- Muchas regiones
- ISO personalizado
- Snapshots
- Buenas perfs CPU
- Planes diversos
- Despliegue rápido
- Soporte variable
- Backups opcionales
Dimensionamiento (según « los requisitos de tu aplicación »)
Criterio Valor recomendado Justificación Pequeño 1–2 vCPU, 1–2 GB RAM, 25–40 GB SSD, 1–2 GB swap Punto de partida frugal; monitoriza la carga y escala gradualmente. Medio 2–4 vCPU, 4–8 GB RAM Activar OPcache, caché HTTP y posiblemente CDN para absorber el tráfico. Alto 4–8 vCPU, 8–16 GB RAM BD gestionada, Redis y workers dedicados para escalar.
Flujos de despliegue
- git pull en el servidor (simple).
- Releases sin interrupciones (symlink current → release).
- Docker/docker‑compose (imágenes construidas en CI).
CI/CD (GitHub Actions — ejemplo)
Rendimiento
- OPcache activado (validate_timestamps=0); recargar FPM en cada release.
- Caché HTTP y CDN; minificación/bundling; gzip/brotli en NGINX.
- Doctrine: evitar N+1, índices, profiling; Redis para caché/sesiones si es necesario.
Monitorización y logging
- APM (Datadog/New Relic) o Prometheus/Grafana; alertas de uptime/latencia y 5xx.
- Logs centralizados (journald, Loki, ELK); Sentry para errores de aplicación.
Recursos
- Symfony 6.4 — Deployment
- Configuración de servidor web
- Certbot / Let’s Encrypt
Sobre el autor
The Online Toolset editorial team produces practical guides on web development, image optimization, productivity, and digital tools.