Linux27 de agosto de 2026 10 vistas

Alojar WordPress en un VPS Linux: guía completa (2026)

Alojar WordPress en un VPS Linux: guía completa (2026)

Esta guía cubre únicamente los pasos específicos de WordPress: base de datos MariaDB dedicada, configuración de Nginx para WordPress, instalación mediante WP-CLI, optimizaciones de PHP y seguridad de wp-admin. Los pasos previos están documentados por separado, consulte los enlaces al inicio de cada sección.

Requisitos previos

Antes de empezar, los siguientes elementos deben estar en su lugar en su VPS:

  • Nginx y PHP 8.4-FPM instalados → guía Nginx + PHP-FPM
  • Cortafuegos UFW configurado (puertos 80 y 443 abiertos) → guía UFW
  • Acceso SSH protegido mediante clave → guía clave SSH
  • Un nombre de dominio apuntando a la IP del VPS (registro A configurado)

Extensiones PHP requeridas para WordPress (fuente: wordpress.org/about/requirements/), verifique que están instaladas:

  • php8.4-mysql, php8.4-curl, php8.4-gd, php8.4-mbstring, php8.4-xml, php8.4-zip, php8.4-intl, php8.4-opcache

Si estas extensiones no están presentes, añádalas:

sudo apt install -y php8.4-mysql php8.4-curl php8.4-gd php8.4-mbstring php8.4-xml php8.4-zip php8.4-intl php8.4-opcache

¿Nginx y PHP-FPM aún no están instalados? Siga primero nuestra guía instalar Nginx y PHP-FPM en un VPS Linux. Y para un acceso seguro desde el principio, configure una clave SSH.

Paso 1 - Crear la base de datos MariaDB dedicada

WordPress necesita una base de datos y un usuario dedicados. No utilice root para las conexiones de la aplicación.

Conéctese a MariaDB:

sudo mariadb -u root

Cree la base de datos, el usuario y los privilegios (sustituya los valores de ejemplo):

CREATE DATABASE wordpress_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wordpress_user'@'localhost' IDENTIFIED BY 'contrasena_segura';
GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wordpress_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Nota: utf8mb4 es el juego de caracteres recomendado por WordPress para la compatibilidad completa con emojis y caracteres Unicode (fuente: developer.wordpress.org/advanced-administration/before-install/howto-install/).

Paso 2 - Instalar WP-CLI

WP-CLI es la herramienta oficial de línea de comandos para WordPress. Permite instalar, configurar y mantener WordPress sin interfaz gráfica.

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

Verifique la instalación:

wp --info

Fuente: wp-cli.org/docs/installing/

Paso 3 - Descargar y configurar WordPress

Descargar WordPress

sudo mkdir -p /var/www/misitio.es
sudo chown -R www-data:www-data /var/www/misitio.es
cd /var/www/misitio.es
sudo -u www-data wp core download --locale=es_ES

Crear wp-config.php

sudo -u www-data wp config create \
  --dbname=wordpress_db \
  --dbuser=wordpress_user \
  --dbpass=contrasena_segura \
  --dbhost=localhost \
  --dbcharset=utf8mb4 \
  --locale=es_ES

Ejecutar la instalación de WordPress

sudo -u www-data wp core install \
  --url=https://misitio.es \
  --title="Mi sitio" \
  --admin_user=admin \
  --admin_password=contrasena_admin \
  [email protected]

Nota: sustituya todos los valores de ejemplo por los suyos. Utilice una contraseña de administrador fuerte (16 caracteres como mínimo, mayúsculas, cifras, símbolos).

Paso 4 - Configurar el vhost de Nginx para WordPress

La configuración de Nginx para WordPress requiere directivas específicas para los enlaces permanentes y la seguridad. Cree un archivo de configuración dedicado:

sudo nano /etc/nginx/sites-available/misitio.es

Contenido del archivo (sustituya misitio.es por su dominio):

server {
    listen 80;
    listen [::]:80;
    server_name misitio.es www.misitio.es;
    root /var/www/misitio.es;
    index index.php;

    # Tamaño máximo de las subidas (alinear con PHP)
    client_max_body_size 64M;

    # Enlaces permanentes de WordPress
    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    # Procesamiento de PHP mediante PHP-FPM
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # Bloquear el acceso a los archivos sensibles
    location ~ /\.(ht|git|env) {
        deny all;
    }

    # Bloquear el acceso directo a xmlrpc.php si no se utiliza
    location = /xmlrpc.php {
        deny all;
    }

    # Caché del navegador para los recursos estáticos
    location ~* \.(css|js|jpg|jpeg|png|gif|ico|svg|woff|woff2)$ {
        expires 30d;
        add_header Cache-Control "public, no-transform";
    }
}

Active el sitio y recargue Nginx:

sudo ln -s /etc/nginx/sites-available/misitio.es /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Nota: la directiva try_files $uri $uri/ /index.php?$args; es indispensable para que los enlaces permanentes de WordPress funcionen correctamente (fuente: nginx.org/en/docs/http/ngx_http_core_module.html).

Paso 5 - Activar HTTPS con Certbot

Las opciones avanzadas de Certbot (renovación, wildcard, Apache) se detallan en nuestra guía dedicada a Certbot.

El certificado SSL es indispensable. Siga nuestra guía dedicada para obtenerlo y renovarlo automáticamente.

Tras la obtención del certificado, Certbot modifica automáticamente el vhost para redirigir HTTP hacia HTTPS y añadir las directivas SSL.

Paso 6 - Optimizaciones de PHP para WordPress

OPcache

OPcache almacena en caché el bytecode PHP compilado, lo que reduce el tiempo de procesamiento de cada petición. Verifique que está activado en /etc/php/8.4/fpm/conf.d/10-opcache.ini:

opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=2
opcache.fast_shutdown=1

Estos valores están adaptados a un VPS con 4 GB de RAM. Fuente: php.net/manual/es/opcache.configuration.php.

Tamaño máximo de las subidas

Alinee el límite de subida de PHP con la directiva de Nginx client_max_body_size:

sudo nano /etc/php/8.4/fpm/php.ini

Modifique o añada:

upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 120

Reinicie PHP-FPM:

sudo systemctl restart php8.4-fpm

Paso 7 - Proteger wp-admin

Como complemento, blinde el propio servidor: cortafuegos UFW y Fail2ban contra los ataques de fuerza bruta.

Proteger wp-admin por IP (opcional pero recomendado)

Si accede a la administración desde una IP fija, restrinja el acceso en el vhost de Nginx:

location /wp-admin {
    allow 203.0.113.10;  # Sustituir por su IP
    deny all;
}

Proteger wp-login.php contra la fuerza bruta

Añada en el vhost de Nginx para limitar los intentos de conexión:

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

Declare la zona de limitación en el bloque http de /etc/nginx/nginx.conf:

http {
    limit_req_zone $binary_remote_addr zone=login:10m rate=1r/m;
    ...
}

Fail2ban para WordPress

Para una protección complementaria contra los intentos de conexión repetidos, configure Fail2ban con un filtro de WordPress: consulte la guía Fail2ban.

¿Qué configuración de VPS para WordPress?

Tráfico mensual estimado RAM recomendada Oferta OuiHeberg
Hasta 10 000 visitas 4 GB VPS Linux 04G - 7,00 € IVA incl./mes
De 10 000 a 50 000 visitas 8 GB Ver la gama VPS Linux
Más de 50 000 visitas 16 GB+ Ver la gama VPS Linux

Estas estimaciones suponen un sitio WordPress estándar con caché activada (WP Super Cache o W3 Total Cache). Un sitio WooCommerce o con mucho tráfico simultáneo necesita más RAM.

Preguntas frecuentes

¿Se pueden alojar varios sitios WordPress en un solo VPS?

Sí. Cree un vhost de Nginx distinto y una base de datos MariaDB dedicada para cada sitio. Cada sitio dispone así de su propio espacio de aislamiento. La RAM del VPS es el factor limitante: cuente aproximadamente 256-512 MB por sitio WordPress activo con OPcache.

¿Es necesario un VPS gestionado para WordPress?

No. Esta guía cubre la instalación en un VPS no gestionado con acceso root completo. Un VPS gestionado delega el mantenimiento del sistema (actualizaciones del SO, copias de seguridad) pero reduce el control y aumenta el coste. Para la mayoría de los proyectos, un VPS no gestionado con las buenas prácticas de seguridad (SSH por clave, UFW, Fail2ban) es suficiente.

¿Es necesario WP-CLI o se puede instalar WordPress manualmente?

WP-CLI es opcional. La instalación manual consiste en descargar el archivo desde wordpress.org/download/, extraerlo en /var/www/misitio.es y luego rellenar wp-config.php a mano. WP-CLI automatiza estos pasos y facilita las actualizaciones futuras (wp core update).

¿Cómo actualizar WordPress mediante WP-CLI?

cd /var/www/misitio.es
sudo -u www-data wp core update
sudo -u www-data wp plugin update --all
sudo -u www-data wp theme update --all

¿Cómo hacer una copia de seguridad de WordPress en un VPS?

Dos elementos que respaldar: los archivos y la base de datos.

# Copia de seguridad de la base de datos
sudo -u www-data wp db export /var/www/misitio.es/backup-$(date +%F).sql

# Copia de seguridad de los archivos
tar -czf /root/backup-wordpress-$(date +%F).tar.gz /var/www/misitio.es

Automatice mediante cron o utilice las copias de seguridad automáticas incluidas en su oferta VPS OuiHeberg.

¿Aún no tiene un VPS? La oferta VPS Linux 04G (4 GB de RAM, NVMe, Anti-DDoS, soporte 24/7) es el punto de entrada recomendado para alojar WordPress.
Descubrir los VPS Linux de OuiHeberg

¿Tu sitio WordPress ya funciona en un alojamiento compartido? El procedimiento para trasladarlo a un VPS sin cortes (rsync, base de datos, cambio de DNS) se detalla en nuestra guía de migración.