Files
NoIdle/migrate_to_noidle.sh
Sérgio Corrêa 710792af01 docs: Plano completo de migração PointControl → NoIdle
- Documentação detalhada do processo (PLANO_MIGRACAO_NOIDLE.md)
- Guia rápido para executar (MIGRACAO_RAPIDA.md)
- Script automatizado de migração (migrate_to_noidle.sh)
- Renomeia pasta, código, PM2, docs
- Backup automático e rollback
- Tempo estimado: 5 minutos
- Solução para organizar estrutura bagunçada
2025-11-16 23:32:24 +00:00

208 lines
7.2 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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 ""