Articulo de ayuda
Despliegue con Git: publica tu web desde GitHub
Aprende a desplegar tu web automáticamente desde GitHub a tu hosting: webhook, pull automático y buenas prácticas de CI/CD simple.
Introducción
Hacer un cambio en tu web, subirlo por FTP, comprobar que funciona… y repetir. Es el flujo de trabajo clásico, pero es lento y propenso a errores. Existe una alternativa mucho mejor: el despliegue automático con Git.
Con esta técnica, cada vez que haces un git push a GitHub, tu hosting se actualiza solo. Sin FTP, sin pasos manuales, sin olvidos. En este artículo vas a ver cómo configurarlo.
Qué es el despliegue con Git
El despliegue con Git consiste en conectar tu repositorio de GitHub (o GitLab, Bitbucket…) con tu hosting de forma que, cuando subes cambios al repositorio, estos se publican automáticamente en tu web.
Funciona así:
- Haces cambios en tu ordenador.
- Haces
git pusha GitHub. - GitHub avisa a tu hosting mediante un webhook.
- Tu hosting ejecuta un
git pully se actualiza.
[Imagen sugerida: esquema del flujo de despliegue automático con Git]
Es como tener un equipo que publica tu web por ti, cada vez que haces un cambio.
Ventajas del despliegue automático
- Sin FTP. No vuelves a subir archivos a mano.
- Rápido. El cambio está publicado en segundos.
- Reproducible. Lo que hay en GitHub es exactamente lo que hay en producción.
- Volver atrás fácil. Si un cambio rompe algo, haces revert en Git y se despliega la versión anterior.
- Trabajo en equipo. Varios desarrolladores pueden hacer push y todo se sincroniza.
Requisitos previos
Para configurar el despliegue automático necesitas:
- Acceso por SSH a tu hosting.
- Git instalado (la mayoría de hostings con cPanel lo tienen).
- Un repositorio en GitHub (o GitLab, Bitbucket) con el código de tu web.
- Tu web ya configurada como repositorio Git en el hosting.
Si no tienes acceso SSH, en miHosting podemos habilitártelo en la mayoría de planes. Abre un ticket si lo necesitas.
Método 1: Despliegue manual con pull (lo más sencillo)
Antes del automático, veamos el manual. Es el punto de partida.
Configurar el repositorio en el hosting
Conéctate por SSH y haz que tu carpeta web sea un clon del repositorio:
cd public_html
git clone https://github.com/usuario/miweb.git .
El punto al final es importante: clona en la carpeta actual, no en una subcarpeta.
Publicar cambios manualmente
Cada vez que quieras actualizar tu web, te conectas por SSH y haces:
cd public_html
git pull origin main
Tu web se actualiza con los últimos cambios.
Este método es manual, pero ya te ahorra el FTP. Es ideal para empezar.
Método 2: Despliegue automático con webhook
Aquí es donde la magia ocurre: tu hosting se actualiza solo cuando haces push.
Paso 1: Crear el script de despliegue
Crea un archivo PHP en tu hosting (por ejemplo deploy.php) que ejecute el pull:
<?php
// deploy.php
$secret = 'TU_SECRETO_AQUI';
$signature = $_SERVER['HTTP_X_HUB_SIGNATURE'] ?? '';
if (!hash_equals('sha1=' . hash_hmac('sha1', file_get_contents('php://input'), $secret), $signature)) {
http_response_code(403);
exit('Forbidden');
}
$output = shell_exec('cd ' . __DIR__ . ' && git pull origin main 2>&1');
echo $output;
Este script comprueba que la petición viene realmente de GitHub (con un secreto) y luego ejecuta el pull.
Paso 2: Configurar el webhook en GitHub
-
Entra en tu repositorio en GitHub.
-
Ve a Settings → Webhooks → Add webhook.
-
En Payload URL, pon:
https://tudominio.com/deploy.php -
En Content type, elige
application/json. -
En Secret, pon el mismo secreto que pusiste en el script PHP.
-
En Events, selecciona Just the push event.
-
Haz clic en Add webhook.
[Imagen sugerida: captura de la configuración del webhook en GitHub]
Paso 3: Probar el flujo
- Haz un cambio en tu código en local.
- Haz
git commitygit push. - Entra a tu web: el cambio debería estar publicado en segundos.
Si no se actualiza, comprueba el log de entregas del webhook en GitHub (Settings → Webhooks → Recent Deliveries).
Consideraciones de seguridad
El despliegue automático tiene riesgos si se configura mal. Ten en cuenta:
- Protege el script de despliegue. Usa un secreto (como en el ejemplo) para que solo GitHub pueda ejecutarlo.
- No subas datos sensibles al repositorio. El
wp-config.php, archivos.envy similares deben estar en.gitignore. - Limita qué se despliega. No tiene sentido desplegar la carpeta
uploadsde WordPress, por ejemplo. - Ten siempre un backup. Si un despliegue rompe algo, necesitas poder volver atrás rápido.
Qué hacer después de cada despliegue
Dependiendo de tu web, tras un despliegue puedes querer:
- Vaciar la caché. Si usas LiteSpeed Cache o WP Rocket, limpia la caché tras el pull.
- Ejecutar migraciones de base de datos. En proyectos avanzados.
- Instalar dependencias. Si usas Composer o npm, ejecuta
composer installonpm install.
Puedes añadir estos comandos al script deploy.php para que se ejecuten automáticamente.
Consejos útiles
- Empieza con el pull manual. Antes de automatizar, asegúrate de que el pull funciona bien.
- Prueba en una rama antes. Sube los cambios a una rama
staging, prueba, y luego fusiona conmain. - Ten un backup automático. Aunque uses Git, conviene tener una copia de seguridad completa del hosting.
- No despliegues en horas críticas. Si tienes una tienda online, evita desplegar en horas pico.
- Revisa los logs del webhook. Si algo no funciona, los logs de GitHub te dirán qué pasó.
Problemas frecuentes
El webhook no se ejecuta
Comprueba que la URL del webhook es correcta y accesible. Verifica también que el secreto coincide entre GitHub y el script.
El pull falla por conflictos
Si has hecho cambios directamente en el hosting (sin pasar por Git), el pull puede fallar. Solución: conecta por SSH y resuelve el conflicto, o restablece el estado con git reset --hard.
Los cambios no se ven en la web
Puede ser la caché del navegador o la caché del hosting. Prueba en incógnito y vacía la caché de LiteSpeed/WP Rocket.
El script PHP no puede ejecutar git
Algunos hostings restringen qué comandos puede ejecutar PHP. Si es tu caso, necesitas un método alternativo (deploy keys con SSH, o un servicio de despliegue externo).
Tengo varios dominios en el mismo hosting
Cada dominio necesita su propio repositorio y su propio webhook. No mezcles código de webs distintas en el mismo repo.
Preguntas frecuentes
¿Necesito un VPS para el despliegue automático?
No. En muchos hostings con cPanel y acceso SSH puedes configurarlo. Para proyectos más grandes, un VPS da más flexibilidad.
¿Funciona con WordPress?
Sí, pero con cuidado. Excluye wp-config.php y uploads/ del repositorio. Git es ideal para gestionar temas y plugins personalizados.
¿Puedo usar GitLab o Bitbucket en lugar de GitHub?
Sí, el proceso es similar. Los webhooks existen en todas las plataformas.
¿Es seguro el despliegue automático?
Sí, si configuras bien el secreto y no subes datos sensibles al repositorio.
¿Puedo revertir un despliegue?
Sí. Si usas Git, haces git revert o git reset a la versión anterior y se despliega automáticamente.
Publica tu web como un profesional
El despliegue automático con Git es una de las prácticas que más diferencia a un desarrollo profesional de uno amateur. Elimina el FTP, reduce errores y te permite publicar cambios en segundos.
Si necesitas ayuda para configurar el despliegue automático en tu hosting de miHosting, abre un ticket desde tu panel de cliente. Y si tu proyecto necesita un entorno de despliegue más avanzado, nuestros VPS administrados te dan la flexibilidad de un servidor propio con soporte de técnicos reales.