Hosting Equipo Avantys 9 min

VPS para E-commerce: Guía Completa

Configura un VPS optimizado para tu tienda online. WooCommerce, PrestaShop, Magento: requisitos, configuración, rendimiento y seguridad.

// Compartir

VPS para E-commerce: Guía Completa
VPS para E-commerce

Tu tienda online necesita más que un hosting compartido. Cada segundo de carga extra reduce conversiones un 7%. Un VPS bien configurado es la diferencia entre vender y perder clientes.

WooCommerce, PrestaShop, Magento… cada plataforma tiene requisitos específicos. Esta guía cubre todo: desde elegir el VPS correcto hasta optimizarlo para máximas conversiones.

Por qué un VPS para e-commerce

Hosting compartido vs VPS

AspectoCompartidoVPS
RecursosCompartidosDedicados
VelocidadVariableConsistente
EscalabilidadLimitadaFlexible
ControlMínimoTotal
SeguridadBásicaConfigurable
Picos de tráficoProblemasManejables

Cuándo necesitas un VPS

  • Más de 100 productos
  • Más de 1.000 visitas/día
  • Picos de tráfico (Black Friday, rebajas)
  • Múltiples plugins/extensiones
  • Necesitas personalización del servidor
  • Requisitos de seguridad PCI-DSS

Requisitos por plataforma

Requisitos VPS por plataforma e-commerce

WooCommerce

TiendaRAMCPUAlmacenamiento
Pequeña (<500 productos)2 GB2 cores40 GB SSD
Media (500-5.000)4 GB4 cores80 GB NVMe
Grande (5.000+)8+ GB6+ cores160+ GB NVMe

Stack recomendado: Nginx + PHP 8.2+ + MySQL 8 + Redis

PrestaShop

TiendaRAMCPUAlmacenamiento
Pequeña2 GB2 cores40 GB SSD
Media4 GB4 cores80 GB NVMe
Grande8+ GB6+ cores160+ GB NVMe

Stack recomendado: Apache/Nginx + PHP 8.1+ + MySQL 8 + Memcached

Magento 2

TiendaRAMCPUAlmacenamiento
Pequeña4 GB4 cores80 GB NVMe
Media8 GB6 cores160 GB NVMe
Grande16+ GB8+ cores320+ GB NVMe

Stack recomendado: Nginx + PHP 8.2 + MySQL 8 + Redis + Elasticsearch + Varnish

Magento es el más exigente. Para tiendas serias, considera VPS de gama alta.

Stack técnico óptimo

Stack técnico para e-commerce

Componentes esenciales

Capa 1: CDN (Cloudflare)

Capa 2: Nginx (proxy + caché estáticos)

Capa 3: PHP-FPM (procesa la aplicación)

Capa 4: Redis (caché de objetos/sesiones)

Capa 5: MySQL/MariaDB (base de datos)

Capa 6: NVMe (almacenamiento rápido)

Por qué cada componente

ComponenteFunciónImpacto
CDNCachea estáticos globalmente-50% tiempo carga
NginxSirve archivos, proxyMuy eficiente
PHP-FPMProcesa PHP en paralelo+200% requests/seg
RedisCaché en memoria-80% consultas BD
NVMeAlmacenamiento rápido5x más rápido que SSD

Instalación paso a paso (WooCommerce)

1. Preparar el servidor

# Actualizar sistema
sudo apt update && sudo apt upgrade -y

# Instalar dependencias
sudo apt install -y curl wget gnupg2 software-properties-common

2. Instalar Nginx

sudo apt install nginx -y
sudo systemctl enable nginx

3. Instalar PHP 8.2

sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
sudo apt install -y php8.2-fpm php8.2-mysql php8.2-curl php8.2-gd \
    php8.2-mbstring php8.2-xml php8.2-zip php8.2-intl php8.2-soap \
    php8.2-bcmath php8.2-redis php8.2-imagick

4. Instalar MySQL 8

sudo apt install mysql-server -y
sudo mysql_secure_installation

# Crear base de datos
sudo mysql -e "CREATE DATABASE woocommerce;"
sudo mysql -e "CREATE USER 'woo_user'@'localhost' IDENTIFIED BY 'password_seguro';"
sudo mysql -e "GRANT ALL ON woocommerce.* TO 'woo_user'@'localhost';"
sudo mysql -e "FLUSH PRIVILEGES;"

5. Instalar Redis

sudo apt install redis-server -y
sudo systemctl enable redis-server

6. Configurar Nginx para WooCommerce

sudo nano /etc/nginx/sites-available/tienda.com
server {
    listen 80;
    server_name tienda.com www.tienda.com;
    root /var/www/tienda.com;
    index index.php;

    # Logs
    access_log /var/log/nginx/tienda-access.log;
    error_log /var/log/nginx/tienda-error.log;

    # Gzip
    gzip on;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
    gzip_min_length 1000;

    # Cache de estáticos
    location ~* \.(jpg|jpeg|png|gif|ico|css|js|pdf|woff|woff2)$ {
        expires 30d;
        add_header Cache-Control "public, immutable";
    }

    # WordPress/WooCommerce
    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    # PHP
    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        
        # Timeouts para operaciones largas
        fastcgi_read_timeout 300;
    }

    # Seguridad
    location ~ /\.ht {
        deny all;
    }
    
    location = /wp-config.php {
        deny all;
    }

    # Bloquear xmlrpc
    location = /xmlrpc.php {
        deny all;
    }
}
sudo ln -s /etc/nginx/sites-available/tienda.com /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

7. Instalar WordPress + WooCommerce

cd /var/www
sudo wget https://wordpress.org/latest.tar.gz
sudo tar -xzf latest.tar.gz
sudo mv wordpress tienda.com
sudo chown -R www-data:www-data tienda.com
sudo chmod -R 755 tienda.com

Completa instalación vía web, luego instala WooCommerce desde plugins.

Optimización de rendimiento

PHP-FPM para e-commerce

sudo nano /etc/php/8.2/fpm/pool.d/www.conf
[www]
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.max_requests = 500

; Para tiendas con mucho tráfico
;pm = static
;pm.max_children = 30

php.ini optimizado

; /etc/php/8.2/fpm/php.ini

memory_limit = 512M
max_execution_time = 300
max_input_time = 300
post_max_size = 64M
upload_max_filesize = 64M

; OPcache (crítico para rendimiento)
opcache.enable = 1
opcache.memory_consumption = 256
opcache.interned_strings_buffer = 16
opcache.max_accelerated_files = 10000
opcache.revalidate_freq = 60
opcache.fast_shutdown = 1

MySQL optimizado

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
# InnoDB
innodb_buffer_pool_size = 1G  # 50-70% de RAM disponible
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT

# Query cache (MariaDB)
query_cache_type = 1
query_cache_size = 64M
query_cache_limit = 2M

# Conexiones
max_connections = 150
thread_cache_size = 8

# Logs lentos
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2

Redis para WooCommerce

Instala plugin “Redis Object Cache”:

// wp-config.php
define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
define('WP_REDIS_DATABASE', 0);
define('WP_CACHE', true);

Caché de página

Instala WP Super Cache o W3 Total Cache:

// wp-config.php (para W3TC)
define('WP_CACHE', true);

Seguridad para e-commerce

SSL obligatorio

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d tienda.com -d www.tienda.com

Guía completa: SSL con Let’s Encrypt

Firewall

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

Guía completa: Firewall en VPS

Proteger wp-admin

location /wp-admin {
    # Limitar por IP si es posible
    # allow 203.0.113.5;
    # deny all;
    
    # O al menos rate limiting
    limit_req zone=login burst=3 nodelay;
}

location = /wp-login.php {
    limit_req zone=login burst=3 nodelay;
    
    fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

Plugin de seguridad

Instala Wordfence o Sucuri:

  • 2FA para administradores
  • Firewall de aplicación
  • Escaneo de malware

Guía completa: Seguridad WordPress

PCI-DSS consideraciones

Si procesas tarjetas directamente (no vía Stripe/PayPal):

  • SSL obligatorio en todo el sitio
  • No almacenar datos de tarjetas
  • Logs de acceso
  • Actualizaciones regulares
  • Escaneo de vulnerabilidades

Recomendación: Usa pasarelas como Stripe que manejan PCI por ti.

Backups para e-commerce

Estrategia 3-2-1

  • 3 copias de datos
  • 2 tipos de almacenamiento
  • 1 copia offsite

Script de backup

#!/bin/bash
# /root/scripts/backup-tienda.sh

FECHA=$(date +%Y%m%d_%H%M)
BACKUP_DIR="/backups"
SITE_DIR="/var/www/tienda.com"
DB_NAME="woocommerce"
DB_USER="woo_user"
DB_PASS="password"

# Backup base de datos
mysqldump -u $DB_USER -p$DB_PASS $DB_NAME | gzip > $BACKUP_DIR/db-$FECHA.sql.gz

# Backup archivos (excluyendo caché)
tar -czf $BACKUP_DIR/files-$FECHA.tar.gz \
    --exclude='wp-content/cache' \
    --exclude='wp-content/uploads/wc-logs' \
    $SITE_DIR

# Eliminar backups > 7 días
find $BACKUP_DIR -mtime +7 -delete

# Sincronizar a cloud
rclone sync $BACKUP_DIR remote:backups/tienda
# Cron diario a las 3 AM
0 3 * * * /root/scripts/backup-tienda.sh

Gestión de picos de tráfico

Black Friday / Rebajas

  1. Antes del evento:

    • Escalar VPS temporalmente
    • Activar caché agresivo
    • Precargar páginas populares
    • Desactivar plugins innecesarios
  2. Durante el evento:

    • Monitorizar recursos en tiempo real
    • Cloudflare en modo “Under Attack” si necesario
    • Tener plan B (escalar más)
  3. Después:

    • Analizar métricas
    • Volver a configuración normal
    • Documentar lecciones

Escalado temporal

# Escalar VPS antes del evento
# (contacta a tu proveedor o usa panel)

# Aumentar workers PHP temporalmente
pm.max_children = 100
pm.start_servers = 20

Monitorización

Métricas clave

MétricaUmbral alertaAcción
CPU>80% sostenidoEscalar o optimizar
RAM>85%Aumentar o revisar
Disco>80%Limpiar o ampliar
Tiempo respuesta>2sOptimizar caché
Error rate>1%Investigar logs

Herramientas

  • Netdata: Monitorización en tiempo real
  • UptimeRobot: Alertas de caída (gratis)
  • Google Analytics: Rendimiento real de usuarios

Guía: Monitorizar VPS con Netdata

Checklist e-commerce

Pre-lanzamiento

Tarea
VPS dimensionado correctamente
SSL configurado
Caché activo (Redis + página)
Backups automatizados
CDN configurado
Seguridad básica

Post-lanzamiento

Tarea
Monitorización activa
Alertas configuradas
Test de carga realizado
Plan de escalado documentado
Recuperación de desastres probada

Errores comunes

Error 1: VPS subdimensionado

Síntomas: Lentitud, errores 503, caídas. Solución: Escalar recursos o optimizar.

Error 2: Sin caché

Síntomas: Cada visita golpea la BD. Solución: Redis + caché de página.

Error 3: Sin CDN

Síntomas: Imágenes lentas, alto consumo de ancho de banda. Solución: Cloudflare o similar.

Error 4: Backups no probados

Síntomas: Backup existe pero no restaura. Solución: Probar restauración regularmente.

Preguntas frecuentes

¿Cuánto VPS necesito para mi tienda?

Depende de productos, tráfico y plataforma. Empieza con 4GB RAM / 2 cores y escala según necesidad.

¿WooCommerce o PrestaShop?

WooCommerce si ya usas WordPress. PrestaShop si prefieres solución dedicada e-commerce.

¿Puedo empezar con hosting compartido?

Sí, para tiendas pequeñas. Migra a VPS cuando notes lentitud o necesites más control.

¿Magento vale la pena?

Para tiendas grandes con necesidades complejas. Para PYMEs, WooCommerce/PrestaShop son más eficientes.

Nuestra recomendación

Para empezar: VPS 4GB RAM con WooCommerce + Redis + Cloudflare.

Para crecer: Escala verticalmente primero, luego considera arquitectura distribuida.

¿No quieres gestionar el servidor? La administración gestionada de Avantys incluye optimización específica para e-commerce.


Conclusión

Un VPS bien configurado es la base de una tienda online exitosa. La combinación de recursos dedicados, caché inteligente y CDN puede transformar la experiencia de tus clientes.

No escatimes en hosting para tu e-commerce. Cada segundo de mejora en velocidad es dinero en conversiones.

¿Quieres un VPS optimizado para tu tienda? Explora los VPS de Avantys con configuración e-commerce incluida.


Guías relacionadas


¿Quieres la guía completa con todos los casos de uso?

→ Volver a la guía maestra: Mejor VPS en España 2026

¿Quieres que lo hagamos por ti?

En Avantys gestionamos tu web, hosting y crecimiento digital de punta a punta. Tú a lo importante.

Hablar con Avantys
// Boletín

Suscríbete al boletín

Guías nuevas, sin spam. Cancela cuando quieras.