WordPress

Sitios WordPress nativos con PHP-FPM y MySQL propios, HTTPS, copias, staging, migración y edición completa por MCP.

  • Categoría: Servidores e infraestructura
  • Estado: Disponible
  • Requisitos: Un VPS activo con la función wordpress disponible; Al menos 256 MB de RAM y 1 GB de disco libres; Para un dominio propio: que su DNS apunte al VPS
  • Herramientas MCP (Solo leen): listar_sitios_wordpress, ver_sitio_wordpress, leer_logs_wordpress, ver_web_wordpress, listar_backups_wordpress
  • Herramientas MCP (Escriben o modifican): instalar_app, probar_web_wordpress, controlar_cache_wordpress, crear_backup_wordpress, crear_staging_wordpress, cambiar_direccion_wordpress, revelar_credencial_app, controlar_app
  • Herramientas MCP (Destructivas): editar_contenido_wordpress, editar_menus_wordpress, editar_medios_wordpress, configurar_sitio_wordpress, controlar_extensiones_wordpress, editar_usuarios_wordpress, editar_seo_wordpress, editar_archivos_wordpress, ejecutar_wp_cli_wordpress, consultar_base_wordpress, controlar_cron_wordpress, configurar_correo_wordpress, editar_integraciones_wordpress, eliminar_backup_wordpress, restaurar_backup_wordpress, desinstalar_app

Markdown

¿Qué permite hacer?

Cada sitio WordPress es una app: corre de forma nativa (sin Docker) con su usuario de Linux, su pool de PHP-FPM y su base en el MySQL del VPS. En un mismo VPS pueden convivir varios sitios aislados entre sí.

  • Crear un sitio vacío, una tienda (WooCommerce) o un sitio con Elementor.
  • Traer un sitio desde un backup de otro hosting (All-in-One, Duplicator, UpdraftPlus o un panel de hosting).
  • Publicarlo con HTTPS en una dirección automática o un dominio propio, y cambiarla después.
  • Hacer copias, restaurarlas, crear un staging y publicarlo.
  • Actualizar núcleo, base, plugins y temas.
  • Editar contenido, menús, medios, ajustes, plugins, usuarios, SEO, archivos, cron, caché, correo e integraciones, desde el panel o por MCP.

¿Cuándo conviene usarlo?

  • Sitios institucionales, blogs o tiendas que se quieren tener en un servidor propio.
  • Mudar un WordPress desde otro hosting sin tocar archivos a mano.
  • Que un agente de IA mantenga el sitio: contenido, plugins, pruebas en un navegador real.

¿Cómo funciona en ArduMaker?

  1. validar: VPS activo, función wordpress del sistema, memoria y disco mínimos.
  2. preparar: PHP 8.3 con PHP-FPM y las extensiones de WordPress, y wp-cli (una vez por VPS, comprobado contra el .sha512 publicado); el motor MySQL se instala si falta.
  3. instalar: se guardan antes las claves (la del admin y la de la base); se crean la base wp<id> y la cuenta 'wp<id>'@'localhost', el usuario de Linux, las carpetas, el pool y el cron; se baja el núcleo, se escribe wp-config.php y se instala con una URL provisoria.
  4. configurar: si se pidieron extras, se instalan WooCommerce y/o Elementor.
  5. publicar: se reserva la dirección, se escribe el server block en el nginx del VPS, el sitio pasa a https://<dominio> con wp search-replace y se publica con DNS, proxy y HTTPS. Se verifica /wp-login.php con 200.

Si publicar falla, el sitio queda instalado y el reintento vuelve a publicar sin reinstalar. El TLS lo pone la plataforma delante del VPS; el nginx del VPS le pasa HTTPS on a PHP para que WordPress no entre en un bucle de redirecciones al abrir /wp-admin.

Ningún campo es obligatorio: site_title (por defecto «Mi sitio»), admin_email (por defecto el de quien instala), admin_user (3 a 40 caracteres; no se aceptan admin, administrator, root ni wordpress), locale (por defecto es_ES), custom_domain, extras y origen (para traer un backup o copiar otro sitio).

¿Qué cambia realmente?

QuéDónde / cómo
Archivos del sitio/srv/wordpress/wp<id>/public
Copias/srv/wordpress/wp<id>/backups/, fuera de la carpeta pública
Usuario de Linuxwp<id>, de sistema, sin login
PHPPool wp<id> con socket propio, pm = ondemand y open_basedir en su carpeta
Basewp<id> en MySQL, cuenta 'wp<id>'@'localhost' (solo por socket)
Cronwp<id>-cron.timer corre los eventos vencidos cada 5 minutos
WebServer block del dominio en el nginx del VPS

Con pm = ondemand un sitio sin visitas no gasta memoria, por eso entran varios en un plan chico. Un sitio no puede leer los archivos PHP de otro.

Copias, staging y migración

  • crear_backup_wordpress: copia completa (base y wp-content) en un .tar.gz fuera de la carpeta pública.
  • restaurar_backup_wordpress con exactamente un origen: backup (una copia del sitio: vuelta atrás), url (un archivo que baja el VPS: copia de ArduMaker .tar.gz, All-in-One .wpress, Duplicator .zip, UpdraftPlus o .tar.gz de un panel de hosting) o from_app (otro sitio del mismo VPS). Después de cargar, el sitio vuelve a su propia dirección.
  • crear_staging_wordpress: un sitio nuevo en el mismo VPS, cargado con una copia y con su propia dirección. Se publica restaurando el sitio en vivo con from_app igual al staging.
  • Al importar un backup se vuelve a crear el admin de ArduMaker con su contraseña: el backup trae sus propios usuarios.
  • cambiar_direccion_wordpress despublica la dirección vieja (DNS, proxy y server block), publica la nueva con HTTPS y reescribe todas las URL del sitio.

Actualizar y desinstalar

La acción update (controlar_app) deja al día núcleo, base, plugins y temas, y antes asegura PHP 8.3 y el pool del sitio. Desinstalar saca el pool y el cron; con delete_data también borra archivos, base y contraseñas.

Esquema

  1. Internet: HTTPS en wordpress-<id> o un dominio propio
  2. Plataforma: termina TLS y lleva al VPS
  3. nginx del VPS: server block del sitio, HTTPS on
  4. PHP-FPM pool `wp<id>`: como el usuario wp<id>
  5. MySQL: base wp<id> por socket
Un sitio WordPress

Resultado esperado

El sitio aparece en Apps y en listar_sitios_wordpress con su dirección y sus extras. revelar_credencial_app devuelve el usuario y la contraseña de /wp-admin; la contraseña de la base nunca sale: solo la usa wp-config.php. ver_sitio_wordpress con view: salud muestra la respuesta HTTP, el pool de PHP, actualizaciones pendientes y cron atrasado.

Errores y resolución

ErrorCausa¿Reintentar?
php_no_instaladoNo se pudo preparar PHP-FPMSí
base_ya_existeYa hay una base wp<id> que no creó este sitio; no se tocaNo
base_no_creada / wordpress_no_instaladoFalló la base o la instalación del núcleoSí
nginx_no_configurado / wordpress_url_no_cambiadaFalló el server block o el cambio de URL al publicarSí, sin reinstalar
backup_incompleto / backup_no_importadoEl backup subido no llegó entero o no se pudo importarSí, tras reenviarlo
wordpress_copia_fallida / wordpress_restauracion_fallidaFalló la copia o la restauraciónSí
wordpress_comando_fallido (422)wp-cli salió con error; la salida recortada dice por quéCorrigiendo el pedido

Para diagnosticar: leer_logs_wordpress (PHP-FPM, debug.log, errores o accesos de nginx), ver_web_wordpress (estado, HTML, enlaces o formularios de una ruta) y probar_web_wordpress, que abre el sitio en un navegador real dentro del VPS y devuelve una captura, el texto visible y los errores de consola.

Relación con MCP

WordPress tiene su propio dominio MCP, /mcp/wordpress (referencia general en /mcp/docs). Todo corre en el VPS con wp-cli como el usuario del sitio. Hay tres niveles: ver (quien ve la app), cambiar (además, no ser un agente solo lectura) y delicado (base de datos, archivos, restaurar, wp-cli libre, borrar usuarios: admin de la empresa).

TipoHerramientas
Lecturalistar_sitios_wordpress, ver_sitio_wordpress, leer_logs_wordpress, ver_web_wordpress, listar_backups_wordpress
Contenido y sitioeditar_contenido_wordpress, editar_menus_wordpress, editar_medios_wordpress, configurar_sitio_wordpress, controlar_extensiones_wordpress, editar_usuarios_wordpress, editar_seo_wordpress
Servidoreditar_archivos_wordpress, ejecutar_wp_cli_wordpress, consultar_base_wordpress, controlar_cron_wordpress, controlar_cache_wordpress, configurar_correo_wordpress, editar_integraciones_wordpress, probar_web_wordpress
Copias y direccióncrear_backup_wordpress, crear_staging_wordpress, cambiar_direccion_wordpress
Destructivasrestaurar_backup_wordpress, eliminar_backup_wordpress, desinstalar_app
  • Se crea con instalar_app (app_type: wordpress); la credencial de /wp-admin sale con revelar_credencial_app (solo admin).
  • ejecutar_wp_cli_wordpress rechaza eval, eval-file, shell, package, server y cli, y las opciones --exec y --require.
  • editar_archivos_wordpress trabaja solo dentro de wp-content y nunca toca wp-config.php; un .php se revisa con php -l antes de reemplazarlo.
  • consultar_base_wordpress corre lecturas tal cual; cualquier escritura necesita confirmed.
  • El usuario admin de ArduMaker en el sitio no se puede borrar ni degradar.

Funciones relacionadas