Skip to content

Mantenimiento WordPress

Gestión de WordPress en producción.

Terminal window
# Exportar
docker exec wordpress-db mysqldump -u wordpress -pCAMBIAR_PASSWORD wordpress > backup_$(date +%F).sql
# Importar
docker exec -i wordpress-db mysql -u wordpress -pCAMBIAR_PASSWORD wordpress < backup.sql
Terminal window
# Backup completo
docker run --rm --volumes-from wordpress -v $(pwd):/backup alpine tar czf /backup/wordpress_files_$(date +%F).tar.gz /var/www/html
# Restaurar
docker run --rm --volumes-from wordpress -v $(pwd):/backup alpine tar xzf /backup/wordpress_files_2024-11-29.tar.gz -C /

Crear /root/backup-wordpress.sh:

#!/bin/bash
BACKUP_DIR="/root/backups/wordpress"
DATE=$(date +%F)
mkdir -p $BACKUP_DIR
# Backup DB
docker exec wordpress-db mysqldump -u wordpress -pCAMBIAR_PASSWORD wordpress > $BACKUP_DIR/db_$DATE.sql
# Backup archivos
docker run --rm --volumes-from wordpress -v $BACKUP_DIR:/backup alpine tar czf /backup/files_$DATE.tar.gz /var/www/html
# Eliminar backups antiguos (más de 7 días)
find $BACKUP_DIR -type f -mtime +7 -delete
echo "Backup completado: $DATE"

Dar permisos y ejecutar:

Terminal window
chmod +x /root/backup-wordpress.sh
./backup-wordpress.sh

Automatizar con cron:

Terminal window
# Ejecutar cada día a las 2 AM
0 2 * * * /root/backup-wordpress.sh >> /var/log/wordpress-backup.log 2>&1

WordPress se actualiza desde el panel de administración o con WP-CLI:

Terminal window
# Actualizar WordPress core
docker exec -it wordpress wp core update --allow-root
# Actualizar plugins
docker exec -it wordpress wp plugin update --all --allow-root
# Actualizar temas
docker exec -it wordpress wp theme update --all --allow-root
# Listar plugins instalados
docker exec -it wordpress wp plugin list --allow-root
Terminal window
docker compose pull wordpress wordpress-db
docker compose up -d wordpress wordpress-db

Instalar plugin de caché recomendado:

Terminal window
docker exec -it wordpress wp plugin install wp-super-cache --activate --allow-root

O configurar desde el panel: Plugins > Añadir nuevo > WP Super Cache / W3 Total Cache

Terminal window
# Optimizar todas las tablas
docker exec -it wordpress-db mysqlcheck -u wordpress -pCAMBIAR_PASSWORD --optimize wordpress

Instalar plugin:

Terminal window
docker exec -it wordpress wp plugin install imagify --activate --allow-root
Terminal window
# Ver logs
docker compose logs -f wordpress
# Reiniciar WordPress
docker compose restart wordpress
# Shell del contenedor
docker exec -it wordpress bash
# Shell de MySQL
docker exec -it wordpress-db mysql -u wordpress -pCAMBIAR_PASSWORD wordpress
# Ver espacio usado
docker system df
du -sh /var/lib/docker/volumes/wordpress_data

Desde WP-CLI:

Terminal window
docker exec -it wordpress wp db query "RENAME TABLE wp_posts TO xyz_posts" --allow-root
# Repetir para todas las tablas

Crear o editar wp-config.php en el volumen:

define('DISALLOW_FILE_EDIT', true);

Instalar plugin:

Terminal window
docker exec -it wordpress wp plugin install limit-login-attempts-reloaded --activate --allow-root
Terminal window
# Ver uso de recursos
docker stats wordpress wordpress-db
# Ver tamaño de base de datos
docker exec -it wordpress-db mysql -u wordpress -pCAMBIAR_PASSWORD -e "SELECT table_schema AS 'Database', ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS 'Size (MB)' FROM information_schema.TABLES WHERE table_schema = 'wordpress';"