WordPress en VPS con Ubuntu Server 24.04 LTS
WordPress es uno de los sistemas de gestión de contenidos (CMS) más utilizados de Internet. En esta guía vamos a instalarlo desde cero en un VPS con Ubuntu Server 24.04 LTS, usando Apache, MySQL, PHP 8.3 y certificados HTTPS gratuitos de Let’s Encrypt.
Actualización de octubre de 2026: la primera versión de este artículo estaba basada en Ubuntu 20.04 y utilizaba un PPA externo para instalar PHP 8.2. El procedimiento se ha actualizado completamente para Ubuntu 24.04 LTS. También se han eliminado las capturas y pasos que ya no corresponden al proceso actual.
WordPress recomienda actualmente PHP 8.3 o superior, MySQL 8.0 o superior —o MariaDB 10.11 o superior— y HTTPS. Ubuntu 24.04 ofrece PHP 8.3 y MySQL 8.0 desde sus repositorios oficiales, por lo que no necesitamos repositorios de terceros.
sudo.Conéctate mediante SSH y actualiza primero el sistema:
sudo apt update
sudo apt full-upgrade Si se actualizó el kernel o algún componente fundamental, reinicia el servidor:
sudo reboot Después de reconectar puedes verificar la versión instalada:
lsb_release -a Si vas a utilizar UFW, permite SSH antes de activarlo para no bloquear tu acceso remoto. Después habilita el perfil completo de Apache:
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status Si el proveedor del VPS utiliza además un firewall o security group externo, abre también allí los puertos 80 y 443.
Ubuntu 24.04 proporciona MySQL 8.0 desde sus repositorios oficiales:
sudo apt install mysql-server
sudo systemctl enable --now mysql
sudo systemctl status mysql --no-pager En Ubuntu el usuario administrativo local de MySQL se autentica normalmente mediante auth_socket, así que podemos entrar como administrador con:
sudo mysql Dentro de MySQL crea una base de datos y un usuario exclusivo. Sustituye la contraseña del ejemplo por una realmente larga y única:
CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'UnaClaveMuyLargaYUnica';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost';
FLUSH PRIVILEGES;
EXIT; No utilices el usuario root de MySQL en WordPress. El usuario wordpress solo necesita permisos sobre su propia base de datos.
sudo apt install apache2
sudo systemctl enable --now apache2
sudo systemctl status apache2 --no-pager Al visitar temporalmente la IP pública del servidor por HTTP deberías ver la página predeterminada de Apache:
WordPress utiliza reglas de reescritura para los enlaces permanentes. Activa mod_rewrite:
sudo a2enmod rewrite
sudo systemctl reload apache2 No es necesario añadir ppa:ondrej/php. Ubuntu 24.04 ya proporciona PHP 8.3 y cumple los requisitos actuales de WordPress.
Instala PHP, su módulo para Apache y las extensiones habituales:
sudo apt install php libapache2-mod-php php-cli php-mysql php-curl php-gd php-mbstring php-xml php-zip php-intl php-imagick php-opcache php-bcmath curl Comprueba la versión y los módulos principales:
php -v
php -m | grep -E 'bcmath|curl|dom|exif|fileinfo|gd|imagick|intl|mbstring|mysqli|openssl|xml|zip|Zend OPcache' Con Apache y libapache2-mod-php, el archivo principal es /etc/php/8.3/apache2/php.ini:
sudo nano /etc/php/8.3/apache2/php.ini Para un sitio general puedes comenzar con estos límites y ajustarlos luego según la carga real:
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 120
max_input_time = 120 sudo apache2ctl configtest
sudo systemctl restart apache2 Para servidores con carga alta puede ser preferible utilizar PHP-FPM con el MPM event de Apache, pero para esta instalación inicial el módulo de Apache simplifica el procedimiento.
Usaremos un directorio independiente para el sitio. Sustituye misitio.com por tu dominio real:
sudo mkdir -p /var/www/misitio.com/public_html
sudo nano /etc/apache2/sites-available/misitio.com.conf <VirtualHost *:80>
ServerName misitio.com
ServerAlias www.misitio.com
DocumentRoot /var/www/misitio.com/public_html
<Directory /var/www/misitio.com/public_html>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/misitio.com-error.log
CustomLog ${APACHE_LOG_DIR}/misitio.com-access.log combined
</VirtualHost> Activa el sitio y valida la sintaxis antes de recargar Apache:
sudo a2ensite misitio.com.conf
sudo apache2ctl configtest
sudo systemctl reload apache2 Si este será el único sitio alojado en el VPS puedes desactivar el VirtualHost predeterminado:
sudo a2dissite 000-default.conf
sudo systemctl reload apache2 Descarga siempre la versión estable actual directamente desde WordPress.org. El asistente permite seleccionar el idioma, así que no hace falta descargar un paquete distinto para español:
cd /tmp
curl -LO https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz
sudo cp -a wordpress/. /var/www/misitio.com/public_html/ Para esta instalación sencilla de un único sitio asignaremos los archivos a www-data para permitir actualizaciones desde el panel:
sudo chown -R www-data:www-data /var/www/misitio.com/public_html
sudo find /var/www/misitio.com/public_html -type d -exec chmod 755 {} \;
sudo find /var/www/misitio.com/public_html -type f -exec chmod 644 {} \; En servidores con varios usuarios o requisitos de seguridad más estrictos conviene separar el propietario de despliegue del usuario del servidor web y usar permisos más granulares.
Antes de pedir el certificado HTTPS, el dominio debe resolver hacia el VPS:
sudo apt install dnsutils
dig +short misitio.com
dig +short www.misitio.com Si existe un registro AAAA, debe apuntar a una IPv6 realmente configurada en el servidor. Un AAAA incorrecto puede provocar que Let’s Encrypt falle durante la validación.
Para una instalación actual utilizaremos Certbot mediante Snap, siguiendo el método recomendado por el proyecto Certbot.
Si el servidor tenía una instalación antigua de Certbot desde APT, elimínala primero. Si no estaba instalada, APT simplemente lo indicará:
sudo apt remove certbot python3-certbot-apache sudo apt install snapd
sudo snap install --classic certbot
sudo ln -sf /snap/bin/certbot /usr/local/bin/certbot Solicita el certificado y permite que Certbot configure Apache automáticamente:
sudo certbot --apache -d misitio.com -d www.misitio.com Comprueba el mecanismo de renovación:
sudo certbot renew --dry-run No es necesario crear el antiguo cron manual de la versión original del artículo. La instalación actual de Certbot configura su propio mecanismo de renovación automática.
Entra en https://misitio.com/. WordPress debería mostrar su asistente web. Las siguientes capturas siguen siendo útiles para reconocer las distintas pantallas del proceso:
Cuando el instalador solicite la conexión a MySQL utiliza:
wordpress.wordpress.localhost.wp_; cambiarlo no sustituye otras medidas de seguridad.Para la cuenta administradora evita nombres previsibles como admin, usa una contraseña única y activa autenticación de dos factores cuando el sitio esté funcionando.
Después de que WordPress cree su archivo de configuración restringe sus permisos:
sudo chmod 600 /var/www/misitio.com/public_html/wp-config.php Con el esquema de propiedad utilizado en esta guía Apache seguirá pudiendo leerlo porque pertenece a www-data. Si posteriormente cambias usuarios o grupos, comprueba siempre que PHP conserve acceso de lectura.
systemctl status apache2 --no-pager
systemctl status mysql --no-pager
php -v
mysql --version
apache2ctl -v
sudo apache2ctl configtest
sudo certbot certificates Dentro de WordPress abre Herramientas → Salud del sitio y revisa HTTPS, REST API, tareas programadas y extensiones PHP.
Ubuntu Server 24.04 LTS proporciona desde sus repositorios oficiales todo lo necesario para una instalación moderna de WordPress: Apache, MySQL 8.0 y PHP 8.3. Esto elimina varios pasos de la antigua guía y reduce dependencias externas. Con HTTPS, copias de seguridad y actualizaciones periódicas, esta configuración constituye una base sólida para un WordPress autogestionado.
Guía completa de PHP 8.5: fundamentos, instalación, Composer, PSR, Laravel, Symfony, APIs, seguridad, rendimiento y…
Guía actualizada para instalar y diagnosticar Oracle VirtualBox Guest Additions 7.2.20 en GNU/Linux: headers, módulos,…
Guía de introducción a Kali Linux 2026.2: historia, rolling release, usos legítimos, herramientas, metapaquetes, VMs,…
Guía práctica para elegir herramientas de automatización de pruebas: unitarias, integración, API, contratos, Selenium, Playwright,…
Roadmap completo para aprender redes desde cero y prepararse como sysadmin: Ethernet, IPv4/IPv6, subnetting, VLAN,…
Historia y arquitectura del sistema de reservas de United Airlines diseñado por Evelyn Berezin, diferenciándolo…