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
This commit is contained in:
243
MIGRACAO_RAPIDA.md
Normal file
243
MIGRACAO_RAPIDA.md
Normal file
@@ -0,0 +1,243 @@
|
|||||||
|
# ⚡ Migração Rápida: PointControl → NoIdle
|
||||||
|
|
||||||
|
## 🎯 Resumo Executivo
|
||||||
|
|
||||||
|
Seu projeto mudou de **PointControl** para **NoIdle**, mas os arquivos e código ainda usam "pointcontrol" em vários lugares. Isso cria confusão e desorganização.
|
||||||
|
|
||||||
|
**Solução:** Script automatizado que renomeia tudo em 5 minutos! ⏱️
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Migração em 3 Passos
|
||||||
|
|
||||||
|
### 1️⃣ **Verificar o que vai mudar**
|
||||||
|
```bash
|
||||||
|
# Ver arquivos que serão afetados
|
||||||
|
cd /var/www/pointcontrol
|
||||||
|
grep -r "pointcontrol" . --include="*.js" --include="*.json" --include="*.md" | wc -l
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2️⃣ **Executar a migração**
|
||||||
|
```bash
|
||||||
|
sudo bash /var/www/pointcontrol/migrate_to_noidle.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3️⃣ **Verificar resultado**
|
||||||
|
```bash
|
||||||
|
pm2 list
|
||||||
|
curl http://localhost:3005/api/health
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📊 O Que Vai Ser Mudado
|
||||||
|
|
||||||
|
| Item | Antes | Depois |
|
||||||
|
|------|-------|--------|
|
||||||
|
| **Pasta** | `/var/www/pointcontrol` | `/var/www/noidle` |
|
||||||
|
| **PM2** | `pointcontrol-api` | `noidle-api` |
|
||||||
|
| **Backend** | `"name": "pointcontrol-api"` | `"name": "noidle-api"` |
|
||||||
|
| **Frontend** | `"name": "pointcontrol-frontend"` | `"name": "noidle-frontend"` |
|
||||||
|
| **Código** | `PointControl` | `NoIdle` |
|
||||||
|
| **Logs** | `console.log('PointControl API')` | `console.log('NoIdle API')` |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ O Que o Script Faz
|
||||||
|
|
||||||
|
1. ✅ **Backup automático** (salvo em `/tmp`)
|
||||||
|
2. ✅ **Para serviços** (PM2)
|
||||||
|
3. ✅ **Renomeia pasta** (`pointcontrol` → `noidle`)
|
||||||
|
4. ✅ **Atualiza package.json** (backend e frontend)
|
||||||
|
5. ✅ **Atualiza código** (todas as referências)
|
||||||
|
6. ✅ **Atualiza documentação** (arquivos .md)
|
||||||
|
7. ✅ **Recria PM2** com novo nome
|
||||||
|
8. ✅ **Verifica funcionamento** (testes automáticos)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎬 Executar AGORA
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /var/www/pointcontrol
|
||||||
|
sudo bash migrate_to_noidle.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
**Tempo estimado:** 5 minutos ⏱️
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚠️ Importante
|
||||||
|
|
||||||
|
### ✅ Não Precisa Alterar:
|
||||||
|
|
||||||
|
- ✅ **Banco de dados** (continua igual)
|
||||||
|
- ✅ **URLs externas** (`admin.noidle.tech` já está certo)
|
||||||
|
- ✅ **Certificados SSL** (já estão corretos)
|
||||||
|
- ✅ **Chaves de ativação** (continuam funcionando)
|
||||||
|
|
||||||
|
### ⚠️ Verificar Depois:
|
||||||
|
|
||||||
|
- Nginx config (se tiver path hardcoded)
|
||||||
|
- Cliente Windows (se API_URL estiver hardcoded)
|
||||||
|
- Variáveis de ambiente
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔄 Rollback (Se der problema)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Parar novo serviço
|
||||||
|
pm2 stop noidle-api
|
||||||
|
pm2 delete noidle-api
|
||||||
|
|
||||||
|
# Restaurar pasta
|
||||||
|
cd /var/www
|
||||||
|
mv noidle pointcontrol
|
||||||
|
|
||||||
|
# Restaurar PM2
|
||||||
|
cd pointcontrol/backend
|
||||||
|
pm2 start server.js --name pointcontrol-api
|
||||||
|
pm2 save
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 Após a Migração
|
||||||
|
|
||||||
|
### 1. Atualizar Git
|
||||||
|
```bash
|
||||||
|
cd /var/www/noidle
|
||||||
|
git add .
|
||||||
|
git commit -m "refactor: Migração completa de PointControl para NoIdle"
|
||||||
|
git push
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Atualizar Nginx (se necessário)
|
||||||
|
```bash
|
||||||
|
sudo nano /etc/nginx/sites-available/admin.noidle.tech
|
||||||
|
|
||||||
|
# Verificar se tem paths antigos
|
||||||
|
# /var/www/pointcontrol → /var/www/noidle
|
||||||
|
|
||||||
|
sudo nginx -t
|
||||||
|
sudo systemctl reload nginx
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Testar Tudo
|
||||||
|
```bash
|
||||||
|
# API
|
||||||
|
curl http://localhost:3005/api/health
|
||||||
|
|
||||||
|
# Frontend
|
||||||
|
curl https://admin.noidle.tech
|
||||||
|
|
||||||
|
# PM2
|
||||||
|
pm2 list
|
||||||
|
pm2 logs noidle-api
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 Alternativa Manual (Se Preferir)
|
||||||
|
|
||||||
|
### Opção A: Fazer Tudo Manualmente
|
||||||
|
Ver arquivo: `PLANO_MIGRACAO_NOIDLE.md`
|
||||||
|
|
||||||
|
### Opção B: Fazer em Etapas
|
||||||
|
1. Apenas renomear pasta
|
||||||
|
2. Apenas atualizar PM2
|
||||||
|
3. Apenas atualizar código
|
||||||
|
4. etc...
|
||||||
|
|
||||||
|
### Opção C: Manter Como Está
|
||||||
|
- **NÃO recomendado** (mantém confusão)
|
||||||
|
- Criar alias e documentar
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📊 Estatísticas
|
||||||
|
|
||||||
|
**Arquivos afetados:**
|
||||||
|
- ~58 ocorrências em 21 arquivos
|
||||||
|
- Backend: ~5 arquivos
|
||||||
|
- Frontend: ~10 arquivos
|
||||||
|
- Docs: ~15 arquivos
|
||||||
|
|
||||||
|
**Tempo necessário:**
|
||||||
|
- Migração automática: ~5 minutos
|
||||||
|
- Migração manual: ~30 minutos
|
||||||
|
- Verificação e testes: ~10 minutos
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🆘 Precisa de Ajuda?
|
||||||
|
|
||||||
|
### Se o script falhar:
|
||||||
|
|
||||||
|
1. **Ver logs:**
|
||||||
|
```bash
|
||||||
|
pm2 logs noidle-api --lines 50
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Verificar backup:**
|
||||||
|
```bash
|
||||||
|
ls -lah /tmp/noidle_migration_backup_*
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Restaurar backup:**
|
||||||
|
```bash
|
||||||
|
# Ver seção de Rollback acima
|
||||||
|
```
|
||||||
|
|
||||||
|
### Contatos:
|
||||||
|
|
||||||
|
- Ver documentação completa: `PLANO_MIGRACAO_NOIDLE.md`
|
||||||
|
- Logs do PM2: `pm2 logs noidle-api`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✨ Benefícios Após Migração
|
||||||
|
|
||||||
|
✅ **Organização:** Tudo consistente e limpo
|
||||||
|
✅ **Clareza:** Código fácil de entender
|
||||||
|
✅ **Manutenção:** Sem confusão entre nomes
|
||||||
|
✅ **Profissionalismo:** Nome correto em todo lugar
|
||||||
|
✅ **Git:** Histórico limpo e organizado
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎉 Resultado Final
|
||||||
|
|
||||||
|
```
|
||||||
|
/var/www/noidle/
|
||||||
|
├── backend/
|
||||||
|
│ ├── package.json (✅ "name": "noidle-api")
|
||||||
|
│ └── server.js (✅ console.log('NoIdle API'))
|
||||||
|
├── frontend/
|
||||||
|
│ ├── package.json (✅ "name": "noidle-frontend")
|
||||||
|
│ └── src/
|
||||||
|
│ └── components/ (✅ Todos: NoIdle)
|
||||||
|
└── *.md (✅ Documentação atualizada)
|
||||||
|
|
||||||
|
PM2: noidle-api (✅ online)
|
||||||
|
Git: /var/www/noidle (✅ atualizado)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Executar AGORA
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /var/www/pointcontrol
|
||||||
|
sudo bash migrate_to_noidle.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
**Tempo:** 5 minutos | **Backup:** Automático | **Rollback:** Disponível
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Pronto para começar? Execute o comando acima! 🎯**
|
||||||
|
|
||||||
|
Data: 2025-11-16
|
||||||
|
|
||||||
446
PLANO_MIGRACAO_NOIDLE.md
Normal file
446
PLANO_MIGRACAO_NOIDLE.md
Normal file
@@ -0,0 +1,446 @@
|
|||||||
|
# 🔄 Plano de Migração: PointControl → NoIdle
|
||||||
|
|
||||||
|
## 📊 Situação Atual
|
||||||
|
|
||||||
|
**Problema:** Projeto mudou de nome de "PointControl" para "NoIdle", mas a estrutura de pastas e código ainda usa "pointcontrol" em muitos lugares.
|
||||||
|
|
||||||
|
**Resultado:** Confusão, inconsistência e bagunça no código.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 Objetivo
|
||||||
|
|
||||||
|
Renomear **tudo** de forma consistente para "NoIdle" mantendo compatibilidade e sem quebrar nada.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📋 O Que Precisa Ser Renomeado
|
||||||
|
|
||||||
|
### 1. **Pasta Principal**
|
||||||
|
```
|
||||||
|
/var/www/pointcontrol → /var/www/noidle
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. **Serviço PM2**
|
||||||
|
```
|
||||||
|
pointcontrol-api → noidle-api
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. **Package.json (Backend)**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"name": "pointcontrol-api" → "noidle-api"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. **Package.json (Frontend)**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"name": "pointcontrol-frontend" → "noidle-frontend"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5. **Referências no Código**
|
||||||
|
- `PointControl` → `NoIdle`
|
||||||
|
- `pointcontrol` → `noidle`
|
||||||
|
- URLs antigas → URLs novas
|
||||||
|
|
||||||
|
### 6. **Banco de Dados**
|
||||||
|
- Nome do database (se usar específico)
|
||||||
|
- Tabelas com prefixo (se houver)
|
||||||
|
|
||||||
|
### 7. **Configurações**
|
||||||
|
- Nginx config
|
||||||
|
- PM2 config
|
||||||
|
- Variáveis de ambiente
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Plano de Execução (Passo a Passo)
|
||||||
|
|
||||||
|
### Fase 1: Preparação (Backup)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Parar serviços
|
||||||
|
pm2 stop pointcontrol-api
|
||||||
|
|
||||||
|
# 2. Backup do banco de dados
|
||||||
|
pg_dump $DATABASE_URL > /tmp/noidle_backup_$(date +%Y%m%d).sql
|
||||||
|
|
||||||
|
# 3. Backup dos arquivos
|
||||||
|
cd /var/www
|
||||||
|
tar -czf pointcontrol_backup_$(date +%Y%m%d).tar.gz pointcontrol/
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Fase 2: Renomear Pasta Principal
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Renomear pasta
|
||||||
|
cd /var/www
|
||||||
|
mv pointcontrol noidle
|
||||||
|
|
||||||
|
# Atualizar link simbólico se houver
|
||||||
|
# ln -sfn /var/www/noidle /var/www/app
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Fase 3: Atualizar Backend
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /var/www/noidle/backend
|
||||||
|
|
||||||
|
# Atualizar package.json
|
||||||
|
sed -i 's/"name": "pointcontrol-api"/"name": "noidle-api"/g' package.json
|
||||||
|
|
||||||
|
# Atualizar referências no código
|
||||||
|
grep -r "PointControl" . --include="*.js" -l | xargs sed -i 's/PointControl/NoIdle/g'
|
||||||
|
grep -r "pointcontrol" . --include="*.js" -l | xargs sed -i 's/pointcontrol/noidle/g'
|
||||||
|
|
||||||
|
# Reinstalar dependências
|
||||||
|
npm install
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Fase 4: Atualizar Frontend
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /var/www/noidle/frontend
|
||||||
|
|
||||||
|
# Atualizar package.json
|
||||||
|
sed -i 's/"name": "pointcontrol-frontend"/"name": "noidle-frontend"/g' package.json
|
||||||
|
|
||||||
|
# Atualizar referências no código
|
||||||
|
grep -r "PointControl" src/ -l | xargs sed -i 's/PointControl/NoIdle/g'
|
||||||
|
grep -r "pointcontrol" src/ -l | xargs sed -i 's/pointcontrol/noidle/g'
|
||||||
|
|
||||||
|
# Rebuild
|
||||||
|
npm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Fase 5: Atualizar PM2
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Deletar processo antigo
|
||||||
|
pm2 delete pointcontrol-api
|
||||||
|
|
||||||
|
# Criar novo processo
|
||||||
|
cd /var/www/noidle/backend
|
||||||
|
pm2 start server.js --name noidle-api
|
||||||
|
pm2 save
|
||||||
|
|
||||||
|
# Verificar
|
||||||
|
pm2 list
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Fase 6: Atualizar Nginx
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Editar config
|
||||||
|
sudo nano /etc/nginx/sites-available/admin.noidle.tech
|
||||||
|
|
||||||
|
# Atualizar paths se necessário
|
||||||
|
# root /var/www/pointcontrol/frontend/build; → /var/www/noidle/frontend/build;
|
||||||
|
|
||||||
|
# Testar e recarregar
|
||||||
|
sudo nginx -t
|
||||||
|
sudo systemctl reload nginx
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Fase 7: Atualizar Documentação
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /var/www/noidle
|
||||||
|
|
||||||
|
# Atualizar todos os arquivos .md
|
||||||
|
find . -name "*.md" -type f -exec sed -i 's/PointControl/NoIdle/g' {} +
|
||||||
|
find . -name "*.md" -type f -exec sed -i 's/pointcontrol/noidle/g' {} +
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Fase 8: Atualizar Git
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /var/www/noidle
|
||||||
|
|
||||||
|
# Commit das mudanças
|
||||||
|
git add .
|
||||||
|
git commit -m "refactor: Migração completa de PointControl para NoIdle
|
||||||
|
|
||||||
|
- Renomeadas todas as referências no código
|
||||||
|
- Atualizados package.json
|
||||||
|
- Atualizadas configurações
|
||||||
|
- Documentação atualizada"
|
||||||
|
|
||||||
|
git push
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ Checklist de Migração
|
||||||
|
|
||||||
|
### Antes de Começar:
|
||||||
|
- [ ] Backup do banco de dados
|
||||||
|
- [ ] Backup dos arquivos
|
||||||
|
- [ ] Avisar usuários sobre manutenção
|
||||||
|
- [ ] Anotar configurações atuais
|
||||||
|
|
||||||
|
### Durante a Migração:
|
||||||
|
- [ ] Renomear pasta principal
|
||||||
|
- [ ] Atualizar package.json (backend)
|
||||||
|
- [ ] Atualizar package.json (frontend)
|
||||||
|
- [ ] Atualizar código backend
|
||||||
|
- [ ] Atualizar código frontend
|
||||||
|
- [ ] Atualizar PM2
|
||||||
|
- [ ] Atualizar Nginx
|
||||||
|
- [ ] Atualizar documentação
|
||||||
|
|
||||||
|
### Após Migração:
|
||||||
|
- [ ] Testar API: `curl http://localhost:3005/api/health`
|
||||||
|
- [ ] Testar Frontend: Acessar admin.noidle.tech
|
||||||
|
- [ ] Verificar logs: `pm2 logs noidle-api`
|
||||||
|
- [ ] Testar funcionalidades principais
|
||||||
|
- [ ] Commit no Git
|
||||||
|
- [ ] Remover backups antigos (após confirmar)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔍 Locais Específicos para Atualizar
|
||||||
|
|
||||||
|
### 1. Backend
|
||||||
|
|
||||||
|
**Arquivos principais:**
|
||||||
|
```
|
||||||
|
/var/www/noidle/backend/
|
||||||
|
├── server.js (linha 80: console.log)
|
||||||
|
├── package.json (name, description)
|
||||||
|
├── package-lock.json (name)
|
||||||
|
└── README.md
|
||||||
|
```
|
||||||
|
|
||||||
|
**Mudanças necessárias:**
|
||||||
|
- `console.log('✅ PointControl API')` → `console.log('✅ NoIdle API')`
|
||||||
|
- Nome do projeto no package.json
|
||||||
|
|
||||||
|
### 2. Frontend
|
||||||
|
|
||||||
|
**Arquivos principais:**
|
||||||
|
```
|
||||||
|
/var/www/noidle/frontend/
|
||||||
|
├── package.json
|
||||||
|
├── src/
|
||||||
|
│ ├── components/Layout.jsx (logo, título)
|
||||||
|
│ ├── pages/Login.jsx (branding)
|
||||||
|
│ └── App.js (title)
|
||||||
|
└── public/
|
||||||
|
├── index.html (title, meta)
|
||||||
|
└── manifest.json (name)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Mudanças necessárias:**
|
||||||
|
- Logo e branding
|
||||||
|
- Títulos das páginas
|
||||||
|
- Meta tags
|
||||||
|
|
||||||
|
### 3. Configurações
|
||||||
|
|
||||||
|
**PM2:**
|
||||||
|
```bash
|
||||||
|
# Arquivo: ecosystem.config.js (criar se não existir)
|
||||||
|
module.exports = {
|
||||||
|
apps: [{
|
||||||
|
name: 'noidle-api',
|
||||||
|
script: './server.js',
|
||||||
|
cwd: '/var/www/noidle/backend',
|
||||||
|
env: {
|
||||||
|
NODE_ENV: 'production',
|
||||||
|
PORT: 3005
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
**Nginx:**
|
||||||
|
```nginx
|
||||||
|
# /etc/nginx/sites-available/admin.noidle.tech
|
||||||
|
server {
|
||||||
|
server_name admin.noidle.tech;
|
||||||
|
root /var/www/noidle/frontend/build;
|
||||||
|
|
||||||
|
location /api {
|
||||||
|
proxy_pass http://localhost:3005;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚨 Cuidados Importantes
|
||||||
|
|
||||||
|
### ⚠️ NÃO Renomear:
|
||||||
|
|
||||||
|
1. **Banco de Dados PostgreSQL:**
|
||||||
|
- Nome do database pode continuar como está
|
||||||
|
- Não há necessidade de renomear tabelas
|
||||||
|
|
||||||
|
2. **URLs Externas:**
|
||||||
|
- API URL já é `admin.noidle.tech` ✅
|
||||||
|
- Certificados SSL já estão corretos ✅
|
||||||
|
|
||||||
|
3. **Chaves de Ativação:**
|
||||||
|
- Continuam funcionando normalmente
|
||||||
|
- Não precisam ser regeradas
|
||||||
|
|
||||||
|
### ✅ Verificar Depois:
|
||||||
|
|
||||||
|
1. **Clientes Windows:**
|
||||||
|
- Verificar se API_URL está correta
|
||||||
|
- Se necessário, atualizar e redistribuir
|
||||||
|
|
||||||
|
2. **Integracões:**
|
||||||
|
- Webhooks
|
||||||
|
- APIs externas
|
||||||
|
- Serviços de terceiros
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 Script Automatizado (OPÇÃO RÁPIDA)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
#!/bin/bash
|
||||||
|
# migrate_to_noidle.sh
|
||||||
|
|
||||||
|
echo "🔄 Iniciando migração PointControl → NoIdle"
|
||||||
|
|
||||||
|
# Parar serviços
|
||||||
|
echo "⏸️ Parando serviços..."
|
||||||
|
pm2 stop pointcontrol-api
|
||||||
|
|
||||||
|
# Renomear pasta
|
||||||
|
echo "📁 Renomeando pasta..."
|
||||||
|
cd /var/www
|
||||||
|
mv pointcontrol noidle
|
||||||
|
|
||||||
|
# Atualizar backend
|
||||||
|
echo "🔧 Atualizando backend..."
|
||||||
|
cd noidle/backend
|
||||||
|
sed -i 's/pointcontrol/noidle/g' package.json
|
||||||
|
sed -i 's/PointControl/NoIdle/g' server.js
|
||||||
|
|
||||||
|
# Atualizar frontend
|
||||||
|
echo "🎨 Atualizando frontend..."
|
||||||
|
cd ../frontend
|
||||||
|
sed -i 's/pointcontrol/noidle/g' package.json
|
||||||
|
find src/ -name "*.jsx" -o -name "*.js" | xargs sed -i 's/PointControl/NoIdle/g'
|
||||||
|
|
||||||
|
# Atualizar PM2
|
||||||
|
echo "🚀 Atualizando PM2..."
|
||||||
|
pm2 delete pointcontrol-api
|
||||||
|
cd ../backend
|
||||||
|
pm2 start server.js --name noidle-api
|
||||||
|
pm2 save
|
||||||
|
|
||||||
|
echo "✅ Migração concluída!"
|
||||||
|
echo "Verifique: pm2 logs noidle-api"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 Estratégia Recomendada
|
||||||
|
|
||||||
|
### Opção 1: Migração Completa (Recomendado)
|
||||||
|
- Fazer tudo de uma vez em uma janela de manutenção
|
||||||
|
- Tempo estimado: 30-60 minutos
|
||||||
|
- Risco: Baixo (com backups)
|
||||||
|
|
||||||
|
### Opção 2: Migração Gradual
|
||||||
|
- Fase 1: Renomear pasta e PM2 (5 min)
|
||||||
|
- Fase 2: Atualizar código (15 min)
|
||||||
|
- Fase 3: Atualizar docs (10 min)
|
||||||
|
- Vantagem: Pode pausar entre fases
|
||||||
|
|
||||||
|
### Opção 3: Manter Como Está
|
||||||
|
- Criar alias/links simbólicos
|
||||||
|
- Documentar que "pointcontrol" é o nome técnico
|
||||||
|
- Usar "NoIdle" apenas no frontend
|
||||||
|
- **NÃO recomendado** (mantém confusão)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🆘 Rollback (Se der problema)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Parar novos serviços
|
||||||
|
pm2 stop noidle-api
|
||||||
|
pm2 delete noidle-api
|
||||||
|
|
||||||
|
# Restaurar pasta
|
||||||
|
cd /var/www
|
||||||
|
mv noidle pointcontrol
|
||||||
|
|
||||||
|
# Restaurar PM2
|
||||||
|
cd pointcontrol/backend
|
||||||
|
pm2 start server.js --name pointcontrol-api
|
||||||
|
pm2 save
|
||||||
|
|
||||||
|
# Verificar
|
||||||
|
pm2 list
|
||||||
|
curl http://localhost:3005/api/health
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ Resultado Esperado
|
||||||
|
|
||||||
|
Após a migração, tudo deve estar assim:
|
||||||
|
|
||||||
|
```
|
||||||
|
/var/www/noidle/
|
||||||
|
├── backend/
|
||||||
|
│ ├── package.json (name: "noidle-api")
|
||||||
|
│ └── server.js (console.log: "NoIdle API")
|
||||||
|
├── frontend/
|
||||||
|
│ ├── package.json (name: "noidle-frontend")
|
||||||
|
│ └── src/
|
||||||
|
│ └── * (Todas referências: NoIdle)
|
||||||
|
└── docs/
|
||||||
|
└── *.md (Documentação atualizada)
|
||||||
|
```
|
||||||
|
|
||||||
|
**PM2:**
|
||||||
|
```
|
||||||
|
noidle-api │ online
|
||||||
|
```
|
||||||
|
|
||||||
|
**Git:**
|
||||||
|
```
|
||||||
|
Repositório: sergio.correa/NoIdle
|
||||||
|
Pasta local: /var/www/noidle
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📞 Suporte
|
||||||
|
|
||||||
|
Se algo der errado:
|
||||||
|
1. Não entre em pânico
|
||||||
|
2. Execute o rollback
|
||||||
|
3. Verifique os logs: `pm2 logs`
|
||||||
|
4. Restaure o backup se necessário
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Pronto para Começar? Execute o script ou siga o passo a passo!** 🚀
|
||||||
|
|
||||||
|
**Data de criação:** 2025-11-16
|
||||||
|
|
||||||
207
migrate_to_noidle.sh
Executable file
207
migrate_to_noidle.sh
Executable file
@@ -0,0 +1,207 @@
|
|||||||
|
#!/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 ""
|
||||||
|
|
||||||
Reference in New Issue
Block a user