En esta página: [esconder]
Diez minutos es honesto sólo si su VPS ya está aprovisionado, el DNS de tu dominio ya apunta a él, y puedes copiar y pegar limpiamente. Más cerca de los cuarenta si estás aprendiendo. Albricias: la 2026 La instalación es más corta que la 2018 versión porque Ubuntu 24.04 envía PHP 8.3 en sus repositorios predeterminados. Sin PPA de terceros, sin compilación, sin versión de malabarismo.
respuesta rapida: Crea un nuevo Ubuntu 24.04 VPS, Instalar en pc Nginx, MariaDB 10.11, PHP 8.3-FPM con un comando apto por paquete, crear una base de datos, colocar WordPress en /var/www/yoursite.com, apuntar un bloque de servidor Nginx a /run/php/php8.3-fpm.sock, y terminar en el navegador. SSL a través de Let's Encrypt añade otros cinco minutos. La secuencia completa a continuación es aproximadamente 30 comandos.
Última revisión: abril 2026. Comandos verificados en Ubuntu 24.04.2 LTS con WordPress 6.7.

La mayoría de los tutoriales de LEMP para WordPress aún flotan en CentOS de referencia de Google 7, que llegó al final de su vida útil en junio 2024 y dejó de recibir parches de seguridad. Algunos usan el socket TCP estilo Apache para PHP-FPM cuando ambos servicios se ejecutan en el mismo equipo., lo que agrega latencia sin motivo alguno. Esta guía utiliza los valores predeterminados modernos.: Ubuntu 24.04 LTS, Zócalo Unix, y un diseño de bloque de servidor que cae limpiamente en el caché FastCGI más adelante.
The LEMP Stack on Ubuntu 24.04, Component by Component
LEMP es un acrónimo, no es un producto. Cada letra es una pieza separada de software que usted instala y conecta.
L es Linux. Ubuntu 24.04 LTS es el camino de menor resistencia en 2026. Es compatible hasta abril. 2029, el repositorio de paquetes está actualizado, y la mayoría de los proveedores de VPS lo ofrecen como imagen con un solo clic. Debian 12 Funciona también si lo prefieres.; Los comandos a continuación solo necesitan ajustes menores..
E es Nginx (pronunciado “motor-x”, de donde viene la E). Nginx es un servidor web controlado por eventos. Apache genera un proceso o hilo por conexión, que funciona bien hasta que el tráfico aumenta. Nginx maneja miles de conexiones simultáneas en un solo trabajador, es por eso que la mayoría de los hosts modernos de WordPress lo utilizan por defecto.
M es MariaDB o MySQL. A WordPress no le importa cuál uses siempre que la versión sea lo suficientemente alta. WordPress 6.7 necesidades MariaDB 10.6+ o MySQL 8.0+. Ubuntu 24.04 barcos MariaDB 10.11 LTS, que es compatible hasta 2028. Usaremos MariaDB en todo momento.
P es PHP. WordPress 6.7 soporta PHP 8.1 a través de 8.4. Ubuntu 24.04 barcos PHP 8.3 como predeterminado, la versión de soporte activo hasta finales 2026. PHP-FPM (Administrador de procesos FastCGI) es la pieza que realmente ejecuta tu código PHP; Nginx le entrega solicitudes a través de un socket Unix.
Si eres nuevo en toda esta capa de la pila, nuestra visión general de Proveedores de alojamiento NGINX cubre las diferencias entre Apache y Nginx con más profundidad, además, qué hosts económicos te permiten ejecutar una configuración Nginx real vs.. simplemente cambiando el nombre de Apache.
Before You Run a Single Command
Necesitas cuatro cosas en su lugar. Omitir cualquiera de ellos convierte una instalación de 10 minutos en una sesión de depuración de 2 horas.
- Un nuevo Ubuntu 24.04 VPS. Mínimo 1 CPU virtual y 1 GB de RAM para un sitio de pasatiempos, 2 GB si ejecutarás WooCommerce o un creador de páginas pesado. Cualquier cosa, desde un Hetzner CX22 de USD 4 al mes hasta un KVM de Hostinger 2 servirá. Nuestro Guía de alojamiento VPS de WordPress compara las opciones prácticas.
- Acceso SSH como usuario root o sudo. La mayoría de los proveedores le envían por correo electrónico las credenciales de root después del aprovisionamiento.. Si compraste VPS administrado, vea nuestra pieza en gestionado vs.. VPS no administrado antes de continuar; un plan administrado a menudo realiza toda esta instalación por usted.
- Un nombre de dominio que apunta a la IP de su servidor. Agregue un registro A en su registrador, entonces espera 5 a 15 minutos para que DNS se propague. SSL no se emitirá hasta que esto se resuelva.
- Puertos 22, 80, y 443 abierto. Si su proveedor de VPS ofrece un firewall en la nube (Hetzner, Vultr, DigitalOcean todos lo hacen), abre esos tres puertos ahí también, no solo en UFW.
Tengo esos cuatro? Abre tu terminal, SSH en, y comencemos.
Paso 1: Update Ubuntu and Lock Down SSH
Parche siempre antes de instalar cualquier cosa.. La imagen predeterminada de Ubuntu suele tener un retraso de algunas semanas en las actualizaciones de seguridad..
sudo apt update && sudo apt upgrade -ysudo apt install -y ufw fail2ban unattended-upgrades
UFW (Cortafuegos sin complicaciones) es el contenedor de Ubuntu para iptables. Habilítelo con el puerto SSH abierto primero, de lo contrario te bloquearás.
sudo ufw allow OpenSSHsudo ufw enable
Si está utilizando un puerto SSH no estándar, reemplazar OpenSSH con 2222/tcp o lo que tu establezcas. No reinicies ni cierres tu terminal hasta que hayas confirmado que SSH aún funciona en una segunda ventana.
Paso 2: Install Nginx and Open the Firewall
Nginx está en el repositorio predeterminado de Ubuntu. un comando:
sudo apt install -y nginxsudo ufw allow 'Nginx Full'
Ese Nginx Full el perfil abre ambos 80 y 443. Visite la IP de su servidor en un navegador y debería ver la predeterminada Bienvenido a nginx! página. Si no carga, verifique el firewall en la nube de su proveedor de VPS (una capa diferente a UFW).
Asegúrese de que Nginx esté activo ahora y permanezca activo después de reiniciar:
sudo systemctl status nginxsudo systemctl enable nginx
Paso 3: Install MariaDB and Secure It
MariaDB 10.11 LTS está en Ubuntu 24.04 repositorios. El mínimo de WordPress 6.7 es 10.6, así que estamos muy por encima del suelo.
sudo apt install -y mariadb-serversudo mysql_secure_installation
El interactivo mysql_secure_installation El guión hace una serie de preguntas.. Las respuestas correctas para una instalación nueva:
- Ingrese la contraseña de root actual: solo presione Entrar (no hay uno todavía).
- Cambiar a autenticación unix_socket: Y.
- Cambiar contraseña de root: Y, y elige uno fuerte.
- Eliminar usuarios anónimos: Y.
- No permitir el inicio de sesión de root de forma remota: Y.
- Eliminar base de datos de prueba: Y.
- Recargar tablas de privilegios: Y.
Omitir cualquiera de estos deja abiertos los vectores de ataque reales. El inicio de sesión remoto como root es el más importante: si su puerto MariaDB alguna vez queda expuesto por accidente, un inicio de sesión de root abierto se convierte en la base de datos de otra persona en minutos.
Paso 4: Instalar PHP 8.3 y PHP-FPM
WordPress necesita PHP más un puñado de extensiones. Instálalos de una sola vez:
sudo apt install -y php8.3-fpm php8.3-mysql php8.3-curl php8.3-gd php8.3-mbstring php8.3-xml php8.3-zip php8.3-imagick php8.3-intl php8.3-bcmath php8.3-opcache
Ese paquete cubre el núcleo de WordPress., procesamiento de imágenes para la biblioteca multimedia (imaginario + gd), Las funciones de i18n para sitios que no están en inglés. (internacional + mbstring), y OPcache para almacenamiento en caché de código de bytes compilado. Saltar php8.3-imagick solo si estás seguro de que nunca subirás una imagen.
Comprobación de cordura PHP-FPM:
sudo systemctl status php8.3-fpm
Por defecto escucha /run/php/php8.3-fpm.sock. Esa es la ruta a la que Nginx hará referencia en el paso 7. No se necesitan cambios a menos que esté ejecutando varias versiones de PHP una al lado de la otra.
Paso 5: Create the WordPress Database
WordPress necesita su propia base de datos y un usuario dedicado. No utilices la cuenta raíz de MariaDB; un complemento comprometido no debería equivaler a la raíz completa de la base de datos.
sudo mariadb
Ahora estás en el shell de MariaDB. Ejecute estas líneas, reemplazando strongpasswordhere con algo generado por un administrador de contraseñas:
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'strongpasswordhere';GRANT ALL ON wordpress.* TO 'wpuser'@'localhost';FLUSH PRIVILEGES;EXIT;
los utf8mb4 el juego de caracteres importa. Soporte de emojis de WordPress, caracteres completos en idiomas asiáticos, y cualquier manejo de texto moderno asume utf8mb4. el mayor utf8 charset en MySQL es una trampa de 3 bytes que divide emoji silenciosamente.
Paso 6: Descargar WordPress
Dos opciones aquí. Elige lo que te parezca más fácil.
Opción A: rizo + alquitrán. Lo más rápido, no extra software:
cd /tmp && curl -O https://wordpress.org/latest.tar.gztar -xzf latest.tar.gzsudo mv wordpress /var/www/yoursite.comsudo chown -R www-data:www-data /var/www/yoursite.comsudo find /var/www/yoursite.com -type d -exec chmod 755 {} \;sudo find /var/www/yoursite.com -type f -exec chmod 644 {} \;
Opción B: WP-CLI. Un poco más de configuración, pero cada tarea de WordPress se vuelve más rápida después (instalaciones de temas, actualizaciones de complementos, rotaciones de sal, búsqueda y reemplazo de bases de datos).
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.pharchmod +x wp-cli.phar && sudo mv wp-cli.phar /usr/local/bin/wpsudo -u www-data wp core download --path=/var/www/yoursite.com
Por qué www-data? Así es como se ejecutan Nginx y PHP-FPM en Ubuntu de forma predeterminada. Archivos propiedad de ese usuario, con directorios en 755 y archivos en 644, es el patrón seguro estándar. Evitar 777, alguna vez, en cualquier lugar; es un hábito clásico de alojamiento compartido que no tiene cabida en un VPS.
Paso 7: Configure the Nginx Server Block
Crear un nuevo archivo de bloque de servidor:
sudo nano /etc/nginx/sites-available/yoursite.com
Pega esto en, reemplazando yoursite.com con tu dominio real:
server {listen 80;server_name yoursite.com www.yoursite.com;root /var/www/yoursite.com;index index.php index.html;location / { try_files $uri $uri/ /index.php?$args; }location ~ \.php$ {include snippets/fastcgi-php.conf;fastcgi_pass unix:/run/php/php8.3-fpm.sock;}location ~ /\.ht { deny all; }location = /xmlrpc.php { deny all; }}
Dos piezas merecen atención.. los try_files La directiva es lo que hace que los enlaces permanentes de WordPress funcionen.; sin eso, cualquier cosa que no sea la página de inicio devuelve un 404. los xmlrpc.php deny all line bloquea un notorio vector de ataque de fuerza bruta que ya casi ningún sitio de WordPress utiliza (Jetpack y algunas aplicaciones móviles heredadas todavía lo necesitan; si dependes de cualquiera de los dos, comenta esa línea).
Habilitar el sitio, desactivar el valor predeterminado, y recargar:
sudo ln -s /etc/nginx/sites-available/yoursite.com /etc/nginx/sites-enabled/sudo rm /etc/nginx/sites-enabled/defaultsudo nginx -tsudo systemctl reload nginx
los nginx -t el paso importa. Valida su configuración antes de recargar., lo que le impide dañar el servidor en ejecución con un error tipográfico.
Paso 8: Edit wp-config.php
WordPress envía un archivo de configuración de muestra que usted copia y edita:
cd /var/www/yoursite.comsudo cp wp-config-sample.php wp-config.phpsudo nano wp-config.php
Busque la sección de la base de datos cerca de la parte superior y complete lo que configuró en el Paso 5:
define( 'DB_NAME', 'wordpress' );define( 'DB_USER', 'wpuser' );define( 'DB_PASSWORD', 'strongpasswordhere' );define( 'DB_HOST', 'localhost' );
ahora las sales. Visita https://api.wordpress.org/secret-key/1.1/salt/ en un navegador. La página devuelve ocho líneas generadas aleatoriamente. (AUTH_KEY, SECURE_AUTH_KEY, LOGGED_IN_KEY, NONCE_KEY, más sales a juego). Reemplace el bloque de marcador de posición en wp-config.php con lo que generó la página. Nuevos valores aleatorios en cada instalación., sin excepciones.
Guarda el archivo. Si usó WP-CLI en el paso 6, puedes omitir la edición manual por completo con sudo -u www-data wp config create --dbname=wordpress --dbuser=wpuser --dbpass=strongpasswordhere; extrae sales frescas automáticamente.
Paso 9: Run the Browser Installer
Abra su dominio en un navegador. WordPress detecta una instalación no configurada y muestra el selector de idioma. Desde allí:
- Elige tu idioma. Haga clic en Continuar.
- Título del sitio, nombre de usuario de administrador (no escojas “administración”; los robots lo apuntan), contraseña segura, Tu correo electrónico.
- Garrapata Desalentar los motores de búsqueda si el sitio aún no está listo para el tráfico.
- Haga clic en Instalar WordPress.
Deberías ver un “Éxito!” pantalla en 5 a 10 segundos. Iniciar sesión. Estás en una instalación de WordPress autohospedada en tu propia pila LEMP. Todo el proceso de cara al usuario desde este punto es idéntico a cualquier otra instalación de WordPress..
Add HTTPS with Let’s Encrypt (Five More Minutes)
WordPress solo HTTP en 2026 esta roto. Los navegadores advierten a los visitantes, el formulario de inicio de sesión de WordPress filtra credenciales en texto sin formato, y Google desclasifica el sitio. Certbot repara los tres gratis.
sudo apt install -y certbot python3-certbot-nginxsudo certbot --nginx -d yoursite.com -d www.yoursite.com
Certbot reescribe el bloque de su servidor Nginx en su lugar, añadiendo el 443 oyente y las rutas de certificado. También ofrece redirigir todo el tráfico HTTP a HTTPS.; di si. Las renovaciones se ejecutan automáticamente dos veces al día mediante un temporizador systemd. Recibirás un correo electrónico si algo falla.
Confirmar con:
sudo certbot renew --dry-run
Speed Tier: FastCGI Cache, OPcache, Redis
Una instalación básica de LEMP ya es más rápida que 90% de alojamiento compartido. Si desea los tiempos de respuesta de los que se jactan los hosts administrados de WordPress (tiempo inferior a 100 ms hasta el primer byte), tres capas más te llevan allí.
OPcache compila tus archivos PHP en código de bytes y mantiene el resultado en la memoria. ya esta instalado (agregamos php8.3-opcache al paso 4). La configuración predeterminada funciona bien; levantamiento opcache.memory_consumption a 256 en /etc/php/8.3/fpm/php.ini ayuda si ejecutas muchos complementos.
Caché Nginx FastCGI almacena toda la página HTML renderizada en la memoria de Nginx y atiende solicitudes repetidas sin siquiera tocar PHP o MariaDB. Los puntos de referencia independientes muestran que los tiempos de respuesta caen de 200 a 500 ms en cachés de complementos hasta aproximadamente 40 ms en caché FastCGI. La desventaja es la complejidad de la configuración y la necesidad de omitir el caché para los usuarios que han iniciado sesión., wp-admin, y cualquier página de carrito/pago. Combínalo con el gratuito Ayudante de Nginx complemento de WordPress.org para que las purgas de caché se realicen automáticamente cuando publicas una publicación.
Caché de objetos de Redis maneja la capa de consulta de la base de datos. Repetir consultas (búsquedas de opciones, transitorios, metadatos de usuario) obtener caché en la RAM en lugar de acceder a MariaDB. Esta es la capa que más importa para WooCommerce, BuddyPress, and any membership site where pages can’t be statically cached.
If managing all three feels like too much, nuestro resumen de alojamiento en la nube de WordPress options covers managed providers that ship these layers preconfigured.
Hardening Beyond the Defaults
Your install is now safer than most shared hosting, but it isn’t done. A short list of high-impact additions:
- Configure fail2ban for WordPress. You installed fail2ban back in Step 1. Add a jail that watches Nginx access logs for repeated 401s on
wp-login.phpand bans the offending IP for 24 horas. - Disable file editing in admin. Añadir
define( 'DISALLOW_FILE_EDIT', true );awp-config.php. This stops a compromised admin account from editing PHP files through the dashboard. - Move wp-config.php one level up. WordPress automatically looks one directory above the install root for
wp-config.php. Moving it to/var/www/en lugar de/var/www/yoursite.com/coloca las credenciales de la base de datos fuera de la raíz del documento por completo. - Limitar la superficie de inicio de sesión del administrador. Cambie la URL con un complemento como WPS Ocultar inicio de sesión, o restringir
wp-admina la IP de su oficina a través de Nginx (allow x.x.x.x; deny all;dentro de unlocation /wp-adminbloquear). - Autenticación de dos factores para cada administrador. Tanto el complemento Wordfence como el Two-Factor funcionan. Los ataques de fuerza bruta se vuelven irrelevantes contra un código TOTP.
Automate Backups Before You Forget
Su pila LEMP es exactamente dos cosas en un sentido de respaldo: la /var/www/yoursite.com directorio y el wordpress base de datos. hacer una copia de seguridad de ambos, en un horario, a algún lugar que no esté en este servidor.
Camino más simple: El libre UpdraftPlus complemento apuntado a S3, Google Drive, o Backblaze B2. Establezca el horario en diario para la base de datos y semanal para archivos, retener 14 a 30 dias, hecho.
Si prefieres seguir siendo nativo de la línea de comandos, un trabajo cron de cinco líneas usando mysqldump + tar + rclone es más o menos equivalente y no utiliza ningún complemento. De cualquier manera, restaurar-probar la copia de seguridad una vez por trimestre; una copia de seguridad no verificada es solo optimismo.
Troubleshooting Common Errors
502 Bad Gateway
Nginx no puede alcanzar PHP-FPM. Generalmente significa que PHP-FPM no se está ejecutando, la ruta del socket en el bloque de su servidor es incorrecta, o los permisos en el archivo socket están desactivados. Consulte con sudo systemctl status php8.3-fpm primero. si esta funcionando, verificar que la ruta del socket coincida con lo que Nginx espera (el valor predeterminado es /run/php/php8.3-fpm.sock).
Error al establecer una conexión de base de datos
Tu wp-config.php Las credenciales no coinciden con lo que configuró en MariaDB. Vuelva a comprobar DB_NAME, DB_USER, DB_PASSWORD. Pruebe las credenciales directamente: mariadb -u wpuser -p wordpress. Si eso falla con un error de autenticación, la contraseña en wp-config.php esta mal, o al usuario no se le otorgaron privilegios en esa base de datos.
WordPress permalinks return 404
Desaparecido try_files $uri $uri/ /index.php?$args; en tu Nginx location / bloquear. Agrégalo, correr sudo nginx -t, luego recarga Nginx. Los enlaces permanentes funcionan inmediatamente después; no es necesario restablecer el complemento.
White screen of death after a plugin install
Se registra un error fatal de PHP pero no se muestra. Cola /var/log/nginx/error.log y /var/log/php8.3-fpm.log. Si no puedes acceder al panel, cambiar el nombre de la carpeta del complemento infractor a través de SSH (mv plugin-name plugin-name-disabled) y el sitio vuelve. Desde allí, verifique el requisito de versión PHP del complemento; muchos complementos antiguos fallan en PHP 8.3.
Permission denied when uploading media
los wp-content/uploads el directorio no se puede escribir por www-data. Correr sudo chown -R www-data:www-data /var/www/yoursite.com/wp-content y el asunto se aclara. Si tiene un alojamiento compartido que requiere un usuario diferente, consulte los documentos de su proveedor; el usuario difiere según el host.
Preguntas frecuentes
¿Por qué utilizar Nginx en lugar de Apache para WordPress??
Nginx maneja conexiones simultáneas de manera más eficiente y sirve archivos estáticos (CSS, JS, imágenes) más rápido con menos RAM. en un 1 GB VPS, Apache normalmente se satura alrededor 50 usuarios concurrentes; Nginx maneja varios cientos en el mismo hardware. Apache todavía tiene su lugar cuando dependes de .htaccess anulaciones o módulos específicos de Apache. Para la mayoría de las instalaciones modernas de WordPress, Nginx es el valor predeterminado correcto.
¿Puedo instalar WordPress en una pila LEMP sin acceso de root??
No. Instalación de Nginx, PHP-FPM, y MariaDB requiere sudo como mínimo. Si tu plan de hosting solo te ofrece cPanel y FTP, estás en alojamiento compartido y la instalación LEMP no es tuya para ejecutarla. Necesitaría un VPS o un servidor en la nube con acceso root, o pasar a un host de WordPress administrado que ya ejecute Nginx debajo.
¿Se mantiene realmente el tiempo de 10 minutos??
De modo realista, diez minutos es la palabra, no el promedio. Con un Ubuntu nuevo 24.04 imagen, un dominio ya apuntado, y los comandos precopiados en un editor de texto, la instalación se ejecuta en 8 a 12 minutos. Los principiantes que leen y verifican cada paso están más cerca de 30 a 45 minutos. La mayor pérdida de tiempo es la propagación de DNS y la solicitud de certificado SSL., que juntos pueden extenderse hasta 20 minutos en un mal día.
¿MariaDB o MySQL son mejores para WordPress??
Cualquiera funciona bien; WordPress no se da cuenta. MariaDB tiene la ventaja en la comunidad de código abierto, se envía en el repositorio predeterminado de Ubuntu, y nunca tuve los signos de interrogación sobre la propiedad de Oracle. MySQL 8.0 es más rápido para algunas cargas de trabajo específicas con mucho JSON, que rara vez importan para WordPress. Elija MariaDB a menos que tenga una razón real para usar MySQL.
¿Necesito una CDN si ejecuto el caché FastCGI??
Diferentes capas, diferentes trabajos. El caché FastCGI acelera su servidor de origen; una CDN coloca copias en caché 200+ ciudades para que los visitantes en Sydney no busquen en su servidor de Frankfurt. Ejecute ambos en cualquier sitio con visitantes internacionales.. El plan gratuito de Cloudflare más coberturas de caché FastCGI 95% de pequeños sitios WordPress sin coste mensual.
¿Puedo alojar varios sitios de WordPress en la misma pila LEMP??
si. Cada sitio tiene su propio bloque de servidor Nginx (un archivo por dominio en /etc/nginx/sites-available/), su propia base de datos en MariaDB, y su propia carpeta bajo /var/www/. PHP-FPM los sirve a todos a través del mismo socket. El único límite práctico es la RAM; presupuesto 200 a 400 MB por sitio para tráfico moderado, más para WooCommerce.
Palabra final
La instalación LEMP es la parte fácil. Mantenerlo en funcionamiento es el juego más largo: actualizaciones mensuales de Ubuntu, comprobaciones trimestrales de la versión de PHP, rotación de registros que no llena el disco, renovaciones de certificados que usted realmente verifica. Nada de eso es dificil, pero tampoco es gratis. Si la parte de mantenimiento le parece un trabajo que no quiere hacer, nuestra visión general de proveedores de alojamiento en la nube cubre opciones administradas donde otra persona se encarga completamente de la capa del sistema operativo. El alojamiento propio de WordPress en LEMP es una opción de control, no es una elección de costo. Si vale la pena mantener el control depende de lo que esté construyendo y de lo cómodo que se sienta en la línea de comando..
