#!/bin/bash # Script de instalación rápida de la arquitectura mejorada # Ejecutar: bash install_architecture.sh echo "🚀 Instalando arquitectura mejorada para WhatsApp Bot..." echo "" # Colores RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # 1. Verificar PHP echo -e "${YELLOW}[1/7]${NC} Verificando PHP..." if ! command -v php &> /dev/null; then echo -e "${RED}❌ PHP no está instalado${NC}" exit 1 fi PHP_VERSION=$(php -r "echo PHP_VERSION;") echo -e "${GREEN}✓ PHP $PHP_VERSION detectado${NC}" echo "" # 2. Verificar Composer echo -e "${YELLOW}[2/7]${NC} Verificando Composer..." if ! command -v composer &> /dev/null; then echo -e "${YELLOW}⚠️ Composer no encontrado. Instalando...${NC}" php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php composer-setup.php --quiet rm composer-setup.php sudo mv composer.phar /usr/local/bin/composer fi echo -e "${GREEN}✓ Composer instalado${NC}" echo "" # 3. Instalar dependencias echo -e "${YELLOW}[3/7]${NC} Instalando dependencias PHP..." composer install --no-dev --optimize-autoloader if [ $? -eq 0 ]; then echo -e "${GREEN}✓ Dependencias instaladas${NC}" else echo -e "${RED}❌ Error instalando dependencias${NC}" exit 1 fi echo "" # 4. Verificar/Instalar Redis echo -e "${YELLOW}[4/7]${NC} Verificando Redis..." if ! command -v redis-cli &> /dev/null; then echo -e "${YELLOW}⚠️ Redis no encontrado. ¿Deseas instalarlo? (s/n)${NC}" read -r response if [[ "$response" =~ ^([sS][iI]|[sS])$ ]]; then if [ -f /etc/debian_version ]; then # Debian/Ubuntu sudo apt update sudo apt install redis-server -y sudo systemctl enable redis-server sudo systemctl start redis-server elif [ -f /etc/redhat-release ]; then # CentOS/RHEL sudo yum install redis -y sudo systemctl enable redis sudo systemctl start redis else echo -e "${RED}❌ Sistema operativo no soportado para instalación automática de Redis${NC}" echo "Por favor instala Redis manualmente" exit 1 fi else echo -e "${RED}❌ Redis es requerido. Instálalo manualmente y vuelve a ejecutar este script${NC}" exit 1 fi fi # Verificar que Redis esté corriendo redis-cli ping > /dev/null 2>&1 if [ $? -eq 0 ]; then echo -e "${GREEN}✓ Redis está corriendo${NC}" else echo -e "${RED}❌ Redis no está respondiendo. Iniciando...${NC}" sudo systemctl start redis-server || sudo systemctl start redis sleep 2 redis-cli ping > /dev/null 2>&1 if [ $? -eq 0 ]; then echo -e "${GREEN}✓ Redis iniciado correctamente${NC}" else echo -e "${RED}❌ No se pudo iniciar Redis${NC}" exit 1 fi fi echo "" # 5. Crear directorios necesarios echo -e "${YELLOW}[5/7]${NC} Creando directorios..." mkdir -p logs mkdir -p uploads chmod 755 logs uploads echo -e "${GREEN}✓ Directorios creados${NC}" echo "" # 6. Configurar .env echo -e "${YELLOW}[6/7]${NC} Configurando .env..." if [ ! -f .env ]; then cp .env.example .env echo -e "${GREEN}✓ Archivo .env creado${NC}" echo -e "${YELLOW}⚠️ Recuerda configurar las variables de WhatsApp en .env${NC}" else echo -e "${YELLOW}⚠️ .env ya existe, no se sobrescribirá${NC}" fi echo "" # 7. Configurar Supervisor (opcional) echo -e "${YELLOW}[7/7]${NC} ¿Deseas configurar Supervisor para los workers? (s/n)" read -r response if [[ "$response" =~ ^([sS][iI]|[sS])$ ]]; then if ! command -v supervisorctl &> /dev/null; then echo "Instalando Supervisor..." if [ -f /etc/debian_version ]; then sudo apt install supervisor -y elif [ -f /etc/redhat-release ]; then sudo yum install supervisor -y fi sudo systemctl enable supervisor sudo systemctl start supervisor fi # Obtener ruta absoluta del proyecto PROJECT_DIR=$(pwd) # Crear configuración de supervisor SUPERVISOR_CONF="/etc/supervisor/conf.d/whatsapp-worker.conf" echo "Creando configuración de supervisor..." sudo tee $SUPERVISOR_CONF > /dev/null <