208 lines
7.2 KiB
Bash
208 lines
7.2 KiB
Bash
|
|
#!/bin/bash
|
|||
|
|
#
|
|||
|
|
# Script de Migração: PointControl → NoIdle
|
|||
|
|
# Uso: sudo bash migrate_to_noidle.sh
|
|||
|
|
#
|
|||
|
|
|
|||
|
|
set -e # Parar em caso de erro
|
|||
|
|
|
|||
|
|
# Cores para output
|
|||
|
|
RED='\033[0;31m'
|
|||
|
|
GREEN='\033[0;32m'
|
|||
|
|
YELLOW='\033[1;33m'
|
|||
|
|
BLUE='\033[0;34m'
|
|||
|
|
NC='\033[0m' # No Color
|
|||
|
|
|
|||
|
|
echo -e "${BLUE}═══════════════════════════════════════════════════${NC}"
|
|||
|
|
echo -e "${BLUE} Migração: PointControl → NoIdle${NC}"
|
|||
|
|
echo -e "${BLUE}═══════════════════════════════════════════════════${NC}"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# Verificar se está rodando como root ou com sudo
|
|||
|
|
if [[ $EUID -ne 0 ]]; then
|
|||
|
|
echo -e "${RED}❌ Este script precisa rodar como root ou com sudo${NC}"
|
|||
|
|
echo "Use: sudo bash migrate_to_noidle.sh"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# Confirmar antes de começar
|
|||
|
|
echo -e "${YELLOW}⚠️ ATENÇÃO: Este script vai:${NC}"
|
|||
|
|
echo " 1. Parar o serviço pointcontrol-api"
|
|||
|
|
echo " 2. Renomear /var/www/pointcontrol para /var/www/noidle"
|
|||
|
|
echo " 3. Atualizar todas as referências no código"
|
|||
|
|
echo " 4. Recriar o serviço PM2 como noidle-api"
|
|||
|
|
echo ""
|
|||
|
|
read -p "Deseja continuar? (s/N): " -n 1 -r
|
|||
|
|
echo
|
|||
|
|
if [[ ! $REPLY =~ ^[Ss]$ ]]; then
|
|||
|
|
echo -e "${RED}❌ Migração cancelada${NC}"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo ""
|
|||
|
|
echo -e "${GREEN}✅ Iniciando migração...${NC}"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# Fase 1: Backup
|
|||
|
|
echo -e "${BLUE}[1/8]${NC} Criando backup..."
|
|||
|
|
BACKUP_DIR="/tmp/noidle_migration_backup_$(date +%Y%m%d_%H%M%S)"
|
|||
|
|
mkdir -p "$BACKUP_DIR"
|
|||
|
|
|
|||
|
|
# Backup do PM2
|
|||
|
|
pm2 save --force
|
|||
|
|
cp ~/.pm2/dump.pm2 "$BACKUP_DIR/" 2>/dev/null || true
|
|||
|
|
|
|||
|
|
# Backup da pasta (apenas configs importantes)
|
|||
|
|
cd /var/www
|
|||
|
|
tar -czf "$BACKUP_DIR/pointcontrol_backup.tar.gz" \
|
|||
|
|
--exclude='pointcontrol/node_modules' \
|
|||
|
|
--exclude='pointcontrol/frontend/node_modules' \
|
|||
|
|
--exclude='pointcontrol/frontend/build' \
|
|||
|
|
pointcontrol/ 2>/dev/null || true
|
|||
|
|
|
|||
|
|
echo -e "${GREEN} ✓ Backup salvo em: $BACKUP_DIR${NC}"
|
|||
|
|
|
|||
|
|
# Fase 2: Parar serviços
|
|||
|
|
echo -e "${BLUE}[2/8]${NC} Parando serviços..."
|
|||
|
|
pm2 stop pointcontrol-api 2>/dev/null || echo " ℹ️ Serviço pointcontrol-api não estava rodando"
|
|||
|
|
sleep 2
|
|||
|
|
echo -e "${GREEN} ✓ Serviços parados${NC}"
|
|||
|
|
|
|||
|
|
# Fase 3: Renomear pasta principal
|
|||
|
|
echo -e "${BLUE}[3/8]${NC} Renomeando pasta principal..."
|
|||
|
|
cd /var/www
|
|||
|
|
|
|||
|
|
if [ -d "pointcontrol" ]; then
|
|||
|
|
if [ -d "noidle" ]; then
|
|||
|
|
echo -e "${RED} ⚠️ Pasta /var/www/noidle já existe!${NC}"
|
|||
|
|
read -p " Deseja sobrescrever? (s/N): " -n 1 -r
|
|||
|
|
echo
|
|||
|
|
if [[ $REPLY =~ ^[Ss]$ ]]; then
|
|||
|
|
mv noidle noidle_old_$(date +%Y%m%d_%H%M%S)
|
|||
|
|
mv pointcontrol noidle
|
|||
|
|
else
|
|||
|
|
echo -e "${RED}❌ Migração cancelada${NC}"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
else
|
|||
|
|
mv pointcontrol noidle
|
|||
|
|
fi
|
|||
|
|
echo -e "${GREEN} ✓ Pasta renomeada: /var/www/noidle${NC}"
|
|||
|
|
else
|
|||
|
|
echo -e "${YELLOW} ⚠️ Pasta pointcontrol não encontrada, verificando noidle...${NC}"
|
|||
|
|
if [ ! -d "noidle" ]; then
|
|||
|
|
echo -e "${RED}❌ Nenhuma pasta encontrada!${NC}"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
echo -e "${GREEN} ✓ Usando pasta existente: /var/www/noidle${NC}"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# Fase 4: Atualizar Backend
|
|||
|
|
echo -e "${BLUE}[4/8]${NC} Atualizando backend..."
|
|||
|
|
cd /var/www/noidle/backend
|
|||
|
|
|
|||
|
|
# Atualizar package.json
|
|||
|
|
if [ -f "package.json" ]; then
|
|||
|
|
sed -i 's/"name": "pointcontrol-api"/"name": "noidle-api"/g' package.json
|
|||
|
|
sed -i 's/"name": "pointcontrol"/"name": "noidle"/g' package.json
|
|||
|
|
echo -e "${GREEN} ✓ package.json atualizado${NC}"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# Atualizar server.js
|
|||
|
|
if [ -f "server.js" ]; then
|
|||
|
|
sed -i 's/PointControl/NoIdle/g' server.js
|
|||
|
|
sed -i 's/pointcontrol/noidle/g' server.js
|
|||
|
|
echo -e "${GREEN} ✓ server.js atualizado${NC}"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# Fase 5: Atualizar Frontend
|
|||
|
|
echo -e "${BLUE}[5/8]${NC} Atualizando frontend..."
|
|||
|
|
cd /var/www/noidle/frontend
|
|||
|
|
|
|||
|
|
# Atualizar package.json
|
|||
|
|
if [ -f "package.json" ]; then
|
|||
|
|
sed -i 's/"name": "pointcontrol-frontend"/"name": "noidle-frontend"/g' package.json
|
|||
|
|
sed -i 's/"name": "pointcontrol"/"name": "noidle"/g' package.json
|
|||
|
|
echo -e "${GREEN} ✓ package.json atualizado${NC}"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# Atualizar componentes React
|
|||
|
|
if [ -d "src" ]; then
|
|||
|
|
find src/ -type f \( -name "*.js" -o -name "*.jsx" \) -exec sed -i 's/PointControl/NoIdle/g' {} + 2>/dev/null || true
|
|||
|
|
find src/ -type f \( -name "*.js" -o -name "*.jsx" \) -exec sed -i 's/pointcontrol/noidle/g' {} + 2>/dev/null || true
|
|||
|
|
echo -e "${GREEN} ✓ Componentes atualizados${NC}"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# Atualizar HTML
|
|||
|
|
if [ -f "public/index.html" ]; then
|
|||
|
|
sed -i 's/PointControl/NoIdle/g' public/index.html
|
|||
|
|
sed -i 's/pointcontrol/noidle/g' public/index.html
|
|||
|
|
echo -e "${GREEN} ✓ HTML atualizado${NC}"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# Fase 6: Atualizar Documentação
|
|||
|
|
echo -e "${BLUE}[6/8]${NC} Atualizando documentação..."
|
|||
|
|
cd /var/www/noidle
|
|||
|
|
|
|||
|
|
# Atualizar arquivos .md
|
|||
|
|
find . -maxdepth 1 -name "*.md" -type f -exec sed -i 's/PointControl/NoIdle/g' {} + 2>/dev/null || true
|
|||
|
|
find . -maxdepth 1 -name "*.md" -type f -exec sed -i 's/pointcontrol/noidle/g' {} + 2>/dev/null || true
|
|||
|
|
|
|||
|
|
echo -e "${GREEN} ✓ Documentação atualizada${NC}"
|
|||
|
|
|
|||
|
|
# Fase 7: Atualizar PM2
|
|||
|
|
echo -e "${BLUE}[7/8]${NC} Atualizando PM2..."
|
|||
|
|
|
|||
|
|
# Remover processo antigo
|
|||
|
|
pm2 delete pointcontrol-api 2>/dev/null || true
|
|||
|
|
|
|||
|
|
# Criar novo processo
|
|||
|
|
cd /var/www/noidle/backend
|
|||
|
|
pm2 start server.js --name noidle-api
|
|||
|
|
pm2 save --force
|
|||
|
|
|
|||
|
|
echo -e "${GREEN} ✓ PM2 atualizado: noidle-api${NC}"
|
|||
|
|
|
|||
|
|
# Fase 8: Verificação
|
|||
|
|
echo -e "${BLUE}[8/8]${NC} Verificando instalação..."
|
|||
|
|
sleep 3
|
|||
|
|
|
|||
|
|
# Verificar PM2
|
|||
|
|
if pm2 list | grep -q "noidle-api.*online"; then
|
|||
|
|
echo -e "${GREEN} ✓ Serviço noidle-api está online${NC}"
|
|||
|
|
else
|
|||
|
|
echo -e "${RED} ⚠️ Serviço noidle-api não está online${NC}"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# Verificar API
|
|||
|
|
if curl -s http://localhost:3005/api/health > /dev/null 2>&1; then
|
|||
|
|
echo -e "${GREEN} ✓ API respondendo em http://localhost:3005${NC}"
|
|||
|
|
else
|
|||
|
|
echo -e "${YELLOW} ⚠️ API não está respondendo (pode precisar reiniciar)${NC}"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# Resumo
|
|||
|
|
echo ""
|
|||
|
|
echo -e "${GREEN}═══════════════════════════════════════════════════${NC}"
|
|||
|
|
echo -e "${GREEN}✅ Migração concluída com sucesso!${NC}"
|
|||
|
|
echo -e "${GREEN}═══════════════════════════════════════════════════${NC}"
|
|||
|
|
echo ""
|
|||
|
|
echo -e "${BLUE}📋 Resumo:${NC}"
|
|||
|
|
echo " • Pasta: /var/www/noidle"
|
|||
|
|
echo " • Serviço PM2: noidle-api"
|
|||
|
|
echo " • Backup: $BACKUP_DIR"
|
|||
|
|
echo ""
|
|||
|
|
echo -e "${BLUE}🔍 Próximos passos:${NC}"
|
|||
|
|
echo " 1. Verificar logs: ${YELLOW}pm2 logs noidle-api${NC}"
|
|||
|
|
echo " 2. Testar API: ${YELLOW}curl http://localhost:3005/api/health${NC}"
|
|||
|
|
echo " 3. Acessar frontend: ${YELLOW}https://admin.noidle.tech${NC}"
|
|||
|
|
echo " 4. Atualizar Nginx se necessário"
|
|||
|
|
echo " 5. Fazer commit: ${YELLOW}cd /var/www/noidle && git add . && git commit -m 'refactor: Migração para NoIdle'${NC}"
|
|||
|
|
echo ""
|
|||
|
|
echo -e "${YELLOW}⚠️ Se houver problemas, restaure o backup:${NC}"
|
|||
|
|
echo " ${YELLOW}pm2 stop noidle-api && pm2 delete noidle-api${NC}"
|
|||
|
|
echo " ${YELLOW}cd /var/www && mv noidle noidle_failed && tar -xzf $BACKUP_DIR/pointcontrol_backup.tar.gz${NC}"
|
|||
|
|
echo " ${YELLOW}cd pointcontrol/backend && pm2 start server.js --name pointcontrol-api${NC}"
|
|||
|
|
echo ""
|
|||
|
|
|