Instalar y configurar wordpress en Ubuntu 22.04 en 2026

Spread the love

Vamos paso a paso para que quede todo bien hecho. Usaremos Nginx + PHP-FPM + MariaDB (LEMP stack), que es más ligero y rápido que Apache para la mayoría de casos.

1. Actualiza todo y asegúrate de tener los paquetes necesarios

sudo apt update && sudo apt upgrade -y
sudo apt install nginx mariadb-server php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip php-imagick unzip wget -y

2. Configura MariaDB (base de datos para WordPress)

sudo mysql_secure_installation
  • Responde sí a todo (cambia contraseña root si no lo hiciste, elimina usuarios anónimos, etc.).

Crea la base de datos y usuario para WordPress:

sudo mysql -u root -p

Dentro de MySQL:

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

3. Descarga e instala WordPress

Ve al directorio web estándar:

cd /var/www/
sudo mkdir html
cd html
sudo wget https://wordpress.org/latest.zip
sudo unzip latest.zip
sudo mv wordpress/* .
sudo rm -rf wordpress latest.zip

Da permisos correctos (muy importante para seguridad):

sudo chown -R www-data:www-data /var/www/html/
sudo chmod -R 755 /var/www/html/

4. Configura Nginx para WordPress

Crea un archivo de configuración específico:

sudo nano /etc/nginx/sites-available/wordpress

Pega este contenido (ajusta server_name si ya tienes dominio; por ahora usa _ para cualquier host):

server {
    listen 80;
    listen [::]:80;

    server_name _;  # Cambia por tu dominio cuando lo tengas (ej. ejemplo.com)

    root /var/www/html;
    index index.php index.html index.htm;

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

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;  # Cambia a php8.3-fpm.sock si es 24.04
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }

    location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|svg|eot)$ {
        expires 365d;
        access_log off;
    }
}

Activa el sitio y elimina el default:

sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default
sudo nginx -t   # Comprueba sintaxis
sudo systemctl reload nginx

5. Configura WordPress (parte final en el navegador)

Abre tu navegador y ve a:

http://192.168.1.240
  • El instalador de WordPress aparecerá.
  • Configura:
    • Nombre de la base de datos: wordpress_db
    • Usuario: wordpress_user
    • Contraseña: la que pusiste
    • Host: localhost
    • Prefijo de tablas: wp_ (o cámbialo por seguridad, ej. mysite_)
  • Sigue los pasos: título del sitio, usuario admin (no uses «admin»), contraseña fuerte, email.

¡Listo! Ya tendrás WordPress funcionando en local.

6. Medidas de seguridad recomendadas ANTES de abrir puertos 80/443

No abras aún los puertos en el router/firewall. Haz esto primero:

Instala plugin de seguridad (dentro de WordPress):

Wordfence (gratuito y muy bueno)

Sucuri Security

iThemes Security

Cambia prefijo de tablas (si no lo hiciste): Edita wp-config.php y cambia $table_prefix = ‘wp_’; a algo como $table_prefix = ‘xyz_’;

Desactiva edición de archivos desde el panel: Añade al final de wp-config.php:

define('DISALLOW_FILE_EDIT', true);

Actualizaciones automáticas: En wp-config.php:

define('WP_AUTO_UPDATE_CORE', true);

Permisos correctos (ya lo hicimos, pero verifica):

sudo find /var/www/html/ -type d -exec chmod 755 {} \;
sudo find /var/www/html/ -type f -exec chmod 644 {} \;
sudo chmod 640 /var/www/html/wp-config.php

7. Próximos pasos (cuando estés listo para exponer)

Instala Certbot para HTTPS:

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d tudominio.com

Abre puertos: sudo ufw allow ‘Nginx Full’

Forwardea 80/443 en tu router hacia 192.168.1.240

Usa Cloudflare (gratis) para DNS + protección DDoS + WAF (muy recomendado)

Pasos para configurar HTTPS y redirección en Nginx

1. Instala Certbot (si no lo tienes aún)

sudo apt update
sudo apt install certbot python3-certbot-nginx -y

2. Abre los puertos 80 y 443 en el firewall (UFW)

sudo ufw allow 'Nginx Full'   # Permite tanto 80 como 443
sudo ufw reload
sudo ufw status

3. Ejecuta Certbot para obtener el certificado y configurar Nginx automáticamente

Certbot va a:

  • Obtener el certificado Let’s Encrypt.
  • Modificar tu configuración de Nginx.
  • Configurar la redirección automática de HTTP → HTTPS.

Ejecuta este comando (usa tu usuario con sudo):

sudo certbot --nginx -d tudominio.es

Durante el proceso te preguntará:

  • Email → Pon uno real (para avisos de renovación).
  • Aceptar términos → Sí.
  • Compartir email con EFF → Opcional (puedes decir no).
  • ¿Redirigir HTTP a HTTPS? → Elige 2 (Redirect) para que todas las peticiones HTTP vayan a HTTPS automáticamente.

Certbot modificará tu archivo de configuración de Nginx (probablemente /etc/nginx/sites-available/wordpress o default) y añadirá los bloques necesarios para HTTPS.

4. Verifica la configuración resultante (opcional pero recomendable)

Después de que Certbot termine, revisa el archivo modificado:

sudo nano /etc/nginx/sites-available/wordpress   # o el que uses

Deberías ver algo parecido a esto (Certbot lo crea automáticamente):

server {
    listen 80;
    listen [::]:80;
    server_name tudominio.es;

    # Redirección automática de HTTP a HTTPS
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name tudominio.es;

    ssl_certificate /etc/letsencrypt/live/tudominio.es/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/tudominio.es/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    root /var/www/html;
    index index.php index.html index.htm;

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

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;  # o php8.3-fpm.sock
    }

    # Resto de tu configuración anterior...
}

5. Prueba y recarga Nginx

sudo nginx -t          # Comprueba que no hay errores
sudo systemctl reload nginx

6. Prueba final

  • Abre en tu navegador: http://tudominio.es → Debe redirigir automáticamente a https://tudominio.es → Debe cargar WordPress con candado verde (seguro).
  • Si usas WordPress, actualiza la URL del sitio:
    • Entra en el panel de WordPress → Ajustes → Generales
    • Cambia Dirección de WordPress (URL) y Dirección del sitio (URL) a: https://tudominio.es

Notas importantes para DuckDNS

Renovación automática del certificado: Certbot crea un cron job que renueva cada 90 días automáticamente. Puedes verificarlo con:

sudo systemctl status certbot.timer

IP dinámica: DuckDNS actualiza tu IP cada pocos minutos. Certbot funciona bien con IPs dinámicas porque valida vía HTTP-01 challenge (puerto 80 debe estar accesible desde internet).

Si tienes problemas con la validación:

Asegúrate de que el puerto 80 está forwardeado en tu router hacia 192.168.1.240.

Temporalmente desactiva UFW si falla: sudo ufw disable (y vuelve a activar después).

¡Con esto ya tendrás tu WordPress accesible de forma segura por HTTPS con redirección automática!

Deja un comentario