140 lines
4 KiB
Bash
140 lines
4 KiB
Bash
|
|
#!/bin/bash
|
|||
|
|
# Script de diagnóstico para el servidor
|
|||
|
|
# Ejecutar en el servidor: bash diagnostico-servidor.sh
|
|||
|
|
|
|||
|
|
APP_DIR="/var/www/emerges-tes"
|
|||
|
|
GIT_DIR="/var/repos/emerges-tes.git"
|
|||
|
|
LOG_FILE="/var/log/emerges-tes-deploy.log"
|
|||
|
|
|
|||
|
|
echo "🔍 DIAGNÓSTICO DEL SERVIDOR"
|
|||
|
|
echo "============================"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 1. Verificar Node.js y npm
|
|||
|
|
echo "1️⃣ Node.js y npm:"
|
|||
|
|
if command -v node >/dev/null 2>&1; then
|
|||
|
|
echo " ✅ Node.js: $(node --version)"
|
|||
|
|
else
|
|||
|
|
echo " ❌ Node.js NO está instalado"
|
|||
|
|
echo " 💡 Instalar con: curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && apt-get install -y nodejs"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
if command -v npm >/dev/null 2>&1; then
|
|||
|
|
echo " ✅ npm: $(npm --version)"
|
|||
|
|
else
|
|||
|
|
echo " ❌ npm NO está instalado"
|
|||
|
|
fi
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 2. Verificar directorio de trabajo
|
|||
|
|
echo "2️⃣ Directorio de trabajo ($APP_DIR):"
|
|||
|
|
if [ -d "$APP_DIR" ]; then
|
|||
|
|
echo " ✅ Directorio existe"
|
|||
|
|
cd "$APP_DIR"
|
|||
|
|
|
|||
|
|
if [ -d ".git" ]; then
|
|||
|
|
echo " ✅ Es un repositorio Git"
|
|||
|
|
echo " 📍 Rama: $(git branch --show-current 2>/dev/null || echo 'desconocida')"
|
|||
|
|
echo " 🔗 Remoto: $(git remote get-url origin 2>/dev/null || echo 'no configurado')"
|
|||
|
|
|
|||
|
|
# Verificar si está actualizado
|
|||
|
|
git fetch origin main 2>/dev/null || echo " ⚠️ No se pudo hacer fetch"
|
|||
|
|
LOCAL=$(git rev-parse HEAD 2>/dev/null || echo "desconocido")
|
|||
|
|
REMOTE=$(git rev-parse origin/main 2>/dev/null || echo "desconocido")
|
|||
|
|
echo " 📦 Commit local: ${LOCAL:0:7}"
|
|||
|
|
echo " 📦 Commit remoto: ${REMOTE:0:7}"
|
|||
|
|
|
|||
|
|
if [ "$LOCAL" != "$REMOTE" ] && [ "$REMOTE" != "desconocido" ]; then
|
|||
|
|
echo " ⚠️ El directorio NO está actualizado con el repositorio"
|
|||
|
|
else
|
|||
|
|
echo " ✅ Directorio actualizado"
|
|||
|
|
fi
|
|||
|
|
else
|
|||
|
|
echo " ❌ NO es un repositorio Git"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# Verificar package.json
|
|||
|
|
if [ -f "package.json" ]; then
|
|||
|
|
echo " ✅ package.json existe"
|
|||
|
|
else
|
|||
|
|
echo " ❌ package.json NO existe"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# Verificar node_modules
|
|||
|
|
if [ -d "node_modules" ]; then
|
|||
|
|
echo " ✅ node_modules existe"
|
|||
|
|
else
|
|||
|
|
echo " ⚠️ node_modules NO existe (necesita npm install)"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# Verificar dist/
|
|||
|
|
if [ -d "dist" ]; then
|
|||
|
|
echo " ✅ dist/ existe"
|
|||
|
|
echo " 📁 Archivos en dist/: $(ls -1 dist/ 2>/dev/null | wc -l)"
|
|||
|
|
else
|
|||
|
|
echo " ❌ dist/ NO existe (necesita npm run build)"
|
|||
|
|
fi
|
|||
|
|
else
|
|||
|
|
echo " ❌ Directorio NO existe"
|
|||
|
|
fi
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 3. Verificar hook
|
|||
|
|
echo "3️⃣ Hook post-receive:"
|
|||
|
|
HOOK_FILE="$GIT_DIR/hooks/post-receive"
|
|||
|
|
if [ -f "$HOOK_FILE" ]; then
|
|||
|
|
if [ -x "$HOOK_FILE" ]; then
|
|||
|
|
echo " ✅ Hook existe y es ejecutable"
|
|||
|
|
else
|
|||
|
|
echo " ⚠️ Hook existe pero NO es ejecutable"
|
|||
|
|
echo " 💡 Ejecutar: chmod +x $HOOK_FILE"
|
|||
|
|
fi
|
|||
|
|
else
|
|||
|
|
echo " ❌ Hook NO existe"
|
|||
|
|
fi
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 4. Verificar logs
|
|||
|
|
echo "4️⃣ Logs:"
|
|||
|
|
if [ -f "$LOG_FILE" ]; then
|
|||
|
|
if [ -r "$LOG_FILE" ]; then
|
|||
|
|
echo " ✅ Archivo de logs existe"
|
|||
|
|
if [ -s "$LOG_FILE" ]; then
|
|||
|
|
echo " 📋 Últimas 10 líneas del log:"
|
|||
|
|
tail -n 10 "$LOG_FILE" | sed 's/^/ /'
|
|||
|
|
else
|
|||
|
|
echo " ⚠️ Archivo de logs está vacío (nunca se ha ejecutado el hook)"
|
|||
|
|
fi
|
|||
|
|
else
|
|||
|
|
echo " ⚠️ Archivo de logs existe pero NO es legible"
|
|||
|
|
fi
|
|||
|
|
else
|
|||
|
|
echo " ⚠️ Archivo de logs NO existe"
|
|||
|
|
echo " 💡 Crear con: touch $LOG_FILE && chmod 666 $LOG_FILE"
|
|||
|
|
fi
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 5. Recomendaciones
|
|||
|
|
echo "💡 RECOMENDACIONES:"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
if [ ! -d "$APP_DIR/dist" ]; then
|
|||
|
|
echo " 🔨 Hacer despliegue manual para probar:"
|
|||
|
|
echo " cd $APP_DIR"
|
|||
|
|
echo " git pull origin main"
|
|||
|
|
echo " npm install"
|
|||
|
|
echo " npm run build"
|
|||
|
|
echo ""
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
if ! command -v node >/dev/null 2>&1; then
|
|||
|
|
echo " 📦 Instalar Node.js primero"
|
|||
|
|
echo ""
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo " 🧪 Para probar el despliegue automático:"
|
|||
|
|
echo " Desde tu máquina local: git push production main"
|
|||
|
|
echo " Luego ver logs: tail -f $LOG_FILE"
|
|||
|
|
echo ""
|
|||
|
|
|