codigo0/scripts/deploy/verificar-servidor.sh

117 lines
3.8 KiB
Bash
Raw Normal View History

#!/bin/bash
# Script para verificar y corregir la configuración en el servidor
# Ejecutar en el servidor: bash verificar-servidor.sh
set -e
GIT_DIR="/var/repos/emerges-tes.git"
APP_DIR="/var/www/emerges-tes"
HOOK_FILE="$GIT_DIR/hooks/post-receive"
LOG_FILE="/var/log/emerges-tes-deploy.log"
echo "🔍 Verificando configuración del despliegue..."
echo ""
# 1. Verificar hook
echo "1⃣ Verificando hook 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. Corrigiendo..."
chmod +x "$HOOK_FILE"
echo " ✅ Permisos corregidos"
fi
else
echo " ❌ Hook no existe. Crear primero con los comandos de configuración."
exit 1
fi
# 2. Verificar directorio de trabajo
echo ""
echo "2⃣ Verificando directorio de trabajo..."
if [ -d "$APP_DIR" ]; then
if [ -d "$APP_DIR/.git" ]; then
echo " ✅ Directorio existe y es un repositorio Git"
echo " 📍 Rama actual: $(cd "$APP_DIR" && git branch --show-current 2>/dev/null || echo 'desconocida')"
else
echo " ⚠️ Directorio existe pero no es un repositorio Git"
echo " 🔧 Inicializando repositorio..."
cd "$APP_DIR"
git init
git remote add origin "$GIT_DIR" 2>/dev/null || git remote set-url origin "$GIT_DIR"
git fetch origin
git checkout -b main origin/main 2>/dev/null || git checkout main 2>/dev/null || echo " ⚠️ No se pudo hacer checkout automático"
echo " ✅ Repositorio inicializado"
fi
else
echo " ❌ Directorio no existe. Creando..."
mkdir -p "$APP_DIR"
git clone "$GIT_DIR" "$APP_DIR"
echo " ✅ Directorio creado y clonado"
fi
# 3. Verificar logs
echo ""
echo "3⃣ Verificando archivo de logs..."
if [ -f "$LOG_FILE" ]; then
if [ -w "$LOG_FILE" ]; then
echo " ✅ Archivo de logs existe y es escribible"
else
echo " ⚠️ Archivo de logs existe pero no es escribible. Corrigiendo..."
chmod 666 "$LOG_FILE" 2>/dev/null || sudo chmod 666 "$LOG_FILE"
echo " ✅ Permisos corregidos"
fi
else
echo " ⚠️ Archivo de logs no existe. Creando..."
touch "$LOG_FILE"
chmod 666 "$LOG_FILE" 2>/dev/null || sudo chmod 666 "$LOG_FILE"
echo " ✅ Archivo de logs creado"
fi
# 4. Verificar Node.js y npm
echo ""
echo "4⃣ Verificando 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
# 5. Verificar que el directorio de trabajo está actualizado
echo ""
echo "5⃣ Verificando estado del repositorio..."
if [ -d "$APP_DIR/.git" ]; then
cd "$APP_DIR"
echo " 📍 Directorio: $APP_DIR"
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 hay cambios pendientes
if [ -n "$(git status --porcelain 2>/dev/null)" ]; then
echo " ⚠️ Hay cambios no commiteados en el directorio de trabajo"
else
echo " ✅ Directorio de trabajo limpio"
fi
fi
echo ""
echo "✅ Verificación completada"
echo ""
echo "📋 Resumen:"
echo " - Hook: $HOOK_FILE"
echo " - Directorio app: $APP_DIR"
echo " - Logs: $LOG_FILE"
echo ""
echo "🧪 Para probar el despliegue:"
echo " 1. Desde tu máquina local: git push production main"
echo " 2. En el servidor, ver logs: tail -f $LOG_FILE"