Cómo usar Git en DirectAdmin para desplegar WordPress
¿Por qué usar Git para desplegar WordPress en DirectAdmin?
Si estás leyendo esto, seguramente ya has oído hablar de Git, pero quizás no sabes cómo aplicarlo a tu hosting. Te lo explico fácil: Git es un sistema de control de versiones que te permite llevar un registro de todos los cambios que haces en tu código. En lugar de subir archivos por FTP uno a uno (y rezar para no equivocarte), puedes conectar tu servidor con un repositorio remoto (como GitHub, GitLab o Bitbucket) y "jalar" los cambios automáticamente.
Usar git directadmin para desplegar WordPress tiene ventajas enormes: puedes revertir cambios si algo sale mal, colaborar con más personas sin pisarse los archivos, y mantener un historial claro de cada modificación. Además, cuando integras este flujo con DirectAdmin, el proceso se vuelve mucho más manejable, incluso si no eres un experto en línea de comandos.
En este artículo te voy a guiar paso a paso para que configures directadmin git deploy en tu WordPress. No necesitas ser un gurú de la programación; solo seguir las instrucciones con calma. Al final, tendrás un sistema profesional para control versiones directadmin que te ahorrará dolores de cabeza.
Requisitos previos antes de empezar
Antes de lanzarnos a la acción, asegúrate de tener lo siguiente:
- Un servidor con DirectAdmin (versión reciente, idealmente 1.65 o superior).
- Acceso al SSH de tu servidor (te lo proporciona tu proveedor de hosting).
- Una cuenta en GitHub, GitLab o Bitbucket (yo usaré GitHub en los ejemplos, pero el proceso es similar en los demás).
- Un sitio WordPress instalado en tu servidor, ya sea en el dominio principal o en un subdominio.
- Conocimientos básicos de navegación por terminal (comandos como
cd,ls,pwd).
Si no tienes acceso SSH, algunos proveedores lo activan bajo petición. Si tu hosting no lo ofrece, plantéate cambiar a uno que sí lo haga, porque directadmin git deploy sin SSH es mucho más complicado.
Paso 1: Preparar el repositorio remoto
Primero, necesitas tener tu proyecto WordPress en un repositorio. Si ya tienes tu sitio en producción pero nunca usaste Git, tendrás que subirlo. Te recomiendo que hagas una copia de seguridad completa antes de tocar nada.
Opción A: Crear un repositorio nuevo y subir tu WordPress
- Ve a GitHub y crea un repositorio nuevo (por ejemplo,
mi-wordpress). No marques la opción de "README" ni ".gitignore" para que quede vacío. - En tu ordenador, abre una terminal y navega hasta la carpeta donde tienes tu WordPress (o descárgalo si aún no lo tienes).
- Inicializa Git con
git init. - Añade todos los archivos con
git add .. - Haz un commit inicial:
git commit -m "Primera versión de mi WordPress". - Conecta tu repositorio local con el remoto:
git remote add origin https://github.com/tu-usuario/mi-wordpress.git. - Sube los cambios:
git push -u origin main(omaster, según el nombre de tu rama).
Opción B: Si ya tienes un repositorio
Si tu WordPress ya está en GitHub, simplemente clónalo en tu ordenador y asegúrate de tener la rama que quieres desplegar. No necesitas hacer nada más en este paso.
[INFO] Si tu WordPress tiene archivos grandes (como vídeos o backups), Git no es la mejor herramienta para subirlos. Considera usar Git LFS o mantener esos archivos fuera del repositorio con un archivo .gitignore.
Paso 2: Configurar el acceso SSH en tu servidor
Para que el servidor pueda "jalar" los cambios del repositorio, necesita una clave SSH. Esto es como una llave digital que permite la comunicación segura entre tu servidor y GitHub.
- Conéctate a tu servidor por SSH. En Windows puedes usar PuTTY; en Mac o Linux, la terminal nativa.
- Ejecuta
ssh-keygen -t rsa -b 4096 -C "tu-email@ejemplo.com". Pulsa Enter para aceptar la ubicación por defecto (~/.ssh/id_rsa) y deja la passphrase vacía (o ponle una si quieres más seguridad). - Copia la clave pública con
cat ~/.ssh/id_rsa.pub. - Ve a GitHub > Settings > SSH and GPG keys > New SSH key. Pega la clave y dale un nombre descriptivo (por ejemplo, "Servidor DirectAdmin").
- Vuelve al terminal y prueba la conexión:
ssh -T git@github.com. Si todo está bien, verás un mensaje de bienvenida.
[WARNING] No compartas tu clave privada (id_rsa) con nadie. Si alguien la obtiene, podría acceder a tus repositorios.
Paso 3: Crear la estructura de despliegue en DirectAdmin
Ahora viene la parte interesante. Vamos a configurar el directadmin git deploy propiamente dicho.
Subsección: ¿Dónde colocar el repositorio?
En tu servidor, tienes dos carpetas principales:
domains/tudominio.com/public_html/→ Es la raíz pública de tu sitio (donde se sirve WordPress).domains/tudominio.com/→ Carpeta privada del dominio.
Lo ideal es clonar el repositorio en una carpeta privada (por ejemplo, domains/tudominio.com/repositorio/) y luego enlazar los archivos a public_html. Esto evita que los archivos de Git (como .git) sean accesibles desde el navegador, lo cual es un riesgo de seguridad.
- Con SSH, navega a
cd ~/domains/tudominio.com/. - Crea una carpeta para el repositorio:
mkdir repositorio. - Clona tu proyecto:
git clone git@github.com:tu-usuario/mi-wordpress.git repositorio/.
Subsección: Configurar el hook de post-recepción
Git tiene un sistema de "hooks" (ganchos) que ejecutan scripts automáticamente. Vamos a usar uno llamado post-receive para que, cada vez que hagas un push, el servidor actualice automáticamente los archivos en public_html.
- Entra en la carpeta del repositorio:
cd ~/domains/tudominio.com/repositorio/. - Crea el hook:
nano .git/hooks/post-receive. - Pega este contenido:
#!/bin/bash
GIT_WORK_TREE=/home/usuario/domains/tudominio.com/public_html git checkout -f
- Guarda el archivo (Ctrl+O, Enter, Ctrl+X).
- Dale permisos de ejecución:
chmod +x .git/hooks/post-receive.
[TIP] Sustituye usuario por tu nombre de usuario de hosting y tudominio.com por tu dominio real.
Paso 4: Configurar el despliegue automático desde GitHub
Ahora, cada vez que hagas git push desde tu ordenador, GitHub necesita avisar a tu servidor. Esto se hace con un webhook.
- Ve a tu repositorio en GitHub > Settings > Webhooks > Add webhook.
- En "Payload URL", escribe algo como:
http://tudominio.com/deploy.php(pero aún no hemos creado ese archivo; lo haremos en el siguiente paso). - En "Content type", elige
application/json. - Deja el resto por defecto y guarda.
Subsección: Crear el script de despliegue
Necesitamos un pequeño archivo PHP que reciba la notificación de GitHub y ejecute el git pull en el servidor.
- Crea un archivo llamado
deploy.phpenpublic_html(aunque luego lo borraremos por seguridad). - Pega este código:
<?php
// Script de despliegue para DirectAdmin
$secret = "tu-clave-secreta"; // Cambia esto por una clave aleatoria
$headers = getallheaders();
$signature = $headers['X-Hub-Signature'] ?? '';
if ($signature) {
$payload = file_get_contents('php://input');
$expected = 'sha1=' . hash_hmac('sha1', $payload, $secret);
if (!hash_equals($expected, $signature)) {
http_response_code(403);
die('Firma inválida');
}
echo shell_exec('cd /home/usuario/domains/tudominio.com/repositorio/ && git pull origin main 2>&1');
} else {
http_response_code(400);
die('No autorizado');
}
- En GitHub, edita el webhook y añade el secreto que definiste en el script.
- Guarda el archivo y pruébalo haciendo un
git pushdesde tu ordenador.
[WARNING] Después de probar, borra deploy.php de public_html. Si lo dejas, cualquiera podría ejecutarlo si adivina la URL. Una alternativa es colocarlo en una carpeta protegida por contraseña.
Paso 5: Manejar la base de datos y los archivos de configuración
Uno de los errores más comunes al usar git directadmin es sobrescribir wp-config.php o los archivos de subida (wp-content/uploads). Estos no deberían estar en el repositorio.
Subsección: Crear un .gitignore adecuado
En la raíz de tu repositorio, crea o edita el archivo .gitignore e incluye:
wp-config.php
wp-content/uploads/
*.log
.DS_Store
Esto evita que subas datos sensibles o archivos temporales.
Subsección: Sincronizar la base de datos
Git no gestiona bases de datos. Para eso, necesitas herramientas como WP-CLI o plugins como "WP Migrate DB". Cada vez que despliegues cambios en el código, tendrás que actualizar la base de datos manualmente (o con un script adicional).
[INFO] Si usas Syspanel (antes conocido como HestiaCP), el proceso es similar, pero el panel de control se accede por el puerto 2106. La estructura de carpetas puede variar ligeramente, así que verifica las rutas.
Paso 6: Automatizar el despliegue con Git Hooks (opcional pero recomendado)
Si quieres ir un paso más allá, puedes usar el hook post-receive que ya creamos para ejecutar comandos adicionales, como:
- Limpiar la caché de WordPress.
- Ejecutar migraciones de base de datos.
- Enviar un correo de notificación.
Modifica el archivo .git/hooks/post-receive:
#!/bin/bash
GIT_WORK_TREE=/home/usuario/domains/tudominio.com/public_html git checkout -f
cd /home/usuario/domains/tudominio.com/public_html
wp cache flush
wp db migrate
[TIP] Necesitas tener WP-CLI instalado en el servidor. Pregunta a tu proveedor si está disponible o instálalo tú mismo.
Errores comunes y cómo solucionarlos
Error: "Permission denied" al hacer git pull
Suele ser un problema de permisos. Ejecuta:
chown -R usuario:usuario ~/domains/tudominio.com/
chmod -R 755 ~/domains/tudominio.com/repositorio/
Error: "The authenticity of host can't be established"
Al conectar por primera vez, SSH te pregunta si confías en el host. Escribe yes y continúa.
Error: "Refusing to fetch into current branch"
Esto pasa cuando intentas hacer git pull en una rama que no es la que tienes activa. Asegúrate de estar en main o master con git checkout main.
Preguntas frecuentes (FAQ)
¿Puedo usar Git en DirectAdmin sin SSH?
Técnicamente no, porque necesitas ejecutar comandos en el servidor. Algunos paneles ofrecen una interfaz web para Git, pero es limitada. Si tu proveedor no te da SSH, busca uno que lo ofrezca.
¿Qué pasa si tengo varios sitios WordPress en el mismo servidor?
Puedes repetir este proceso para cada dominio. Solo asegúrate de usar carpetas y repositorios diferentes.
¿Es seguro exponer el script deploy.php?
No. Por eso debes protegerlo con una clave secreta y borrarlo después de las pruebas. Otra opción es restringir el acceso por IP.
¿Y si uso Syspanel en lugar de DirectAdmin?
El proceso es casi idéntico. La principal diferencia es que el acceso al panel es por el puerto 2106. La estructura de carpetas es domains/tudominio.com/public_html, igual que en DirectAdmin.
¿Puedo desplegar plugins y temas de WordPress con Git?
Sí, pero te recomiendo mantenerlos en repositorios separados o usar un gestor de dependencias como Composer. Mezclarlo todo en un solo repo puede ser caótico.
Conclusión y próximos pasos
Has aprendido a configurar git directadmin para desplegar WordPress de forma automática. Este flujo te permitirá:
- Llevar un control versiones directadmin profesional.
- Revertir cambios problemáticos en segundos.
- Colaborar con otros desarrolladores sin conflictos.
El siguiente paso natural es configurar un entorno de staging (pruebas) en un subdominio y usar Git para promover cambios a producción. También puedes explorar herramientas como GitHub Actions para ejecutar pruebas automáticas antes de cada despliegue.
Recuerda: la práctica hace al maestro. Empieza con un sitio de pruebas, experimenta, rompe cosas y vuelve a arreglarlas. Así es como se aprende. Y si te atascas, no dudes en consultar la documentación oficial de Git y DirectAdmin.
[TIP] Guarda este artículo como referencia. La próxima vez que tengas que desplegar un cambio, solo tendrás que hacer git push y verás cómo tu sitio se actualiza solo. ¡Adiós al FTP!
