Files
App-Estoque-LiberiKids/DEPLOY-SERVIDOR-LOCAL.md
2025-11-29 21:31:52 -03:00

396 lines
6.6 KiB
Markdown
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.
# 🖥️ Deploy em Servidor Local - Liberi Kids
Guia completo para rodar o sistema no servidor local e manter funcionando automaticamente, mesmo após reinicializações.
---
## 📋 Pré-requisitos
```bash
# Node.js 18+
node --version
# NPM
npm --version
# PM2 (gerenciador de processos)
sudo npm install -g pm2
```
---
## 🚀 Método 1: PM2 (Recomendado - Mais Fácil)
### 1⃣ Instalação Inicial
```bash
# 1. Entre no diretório do projeto
cd /home/tiago/Downloads/app_estoque_v1.0.0
# 2. Instale as dependências
npm install
cd client && npm install && cd ..
# 3. Configure o .env
cp .env.example .env
nano .env # Configure suas credenciais do Supabase
# 4. Faça o build do frontend
npm run build
```
### 2⃣ Iniciar com PM2
```bash
# Inicia o servidor com PM2
pm2 start ecosystem.config.js
# Verifica o status
pm2 status
# Ver logs em tempo real
pm2 logs liberi-kids-estoque
# Ver logs específicos
pm2 logs liberi-kids-estoque --lines 100
```
### 3⃣ Configurar Inicialização Automática
```bash
# Salva a configuração atual
pm2 save
# Configura para iniciar no boot do sistema
pm2 startup
# Execute o comando que o PM2 mostrar (algo como):
# sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u seu-usuario --hp /home/seu-usuario
```
### 4⃣ Comandos Úteis do PM2
```bash
# Reiniciar aplicação
pm2 restart liberi-kids-estoque
# Parar aplicação
pm2 stop liberi-kids-estoque
# Remover do PM2
pm2 delete liberi-kids-estoque
# Ver informações detalhadas
pm2 show liberi-kids-estoque
# Monitorar em tempo real
pm2 monit
# Ver logs de erro
pm2 logs liberi-kids-estoque --err
# Limpar logs antigos
pm2 flush
```
### 5⃣ Atualizar Aplicação
```bash
# 1. Faça as alterações no código
# 2. Se alterou o frontend, faça o build
cd client && npm run build && cd ..
# 3. Reinicie o PM2
pm2 restart liberi-kids-estoque
# Ou faça reload sem downtime
pm2 reload liberi-kids-estoque
```
---
## 🔧 Método 2: Systemd (Mais Robusto)
### 1⃣ Criar Serviço Systemd
```bash
# Crie o arquivo de serviço
sudo nano /etc/systemd/system/liberi-kids.service
```
**Conteúdo do arquivo:**
```ini
[Unit]
Description=Liberi Kids - Sistema de Estoque
After=network.target
[Service]
Type=simple
User=tiago
WorkingDirectory=/home/tiago/Downloads/app_estoque_v1.0.0
Environment=NODE_ENV=production
Environment=PORT=5000
ExecStart=/usr/bin/node server-supabase.js
Restart=always
RestartSec=10
StandardOutput=append:/home/tiago/Downloads/app_estoque_v1.0.0/logs/system.log
StandardError=append:/home/tiago/Downloads/app_estoque_v1.0.0/logs/error.log
[Install]
WantedBy=multi-user.target
```
### 2⃣ Ativar o Serviço
```bash
# Criar diretório de logs
mkdir -p logs
# Recarregar systemd
sudo systemctl daemon-reload
# Habilitar para iniciar no boot
sudo systemctl enable liberi-kids
# Iniciar o serviço
sudo systemctl start liberi-kids
# Verificar status
sudo systemctl status liberi-kids
```
### 3⃣ Comandos do Systemd
```bash
# Ver status
sudo systemctl status liberi-kids
# Parar serviço
sudo systemctl stop liberi-kids
# Reiniciar serviço
sudo systemctl restart liberi-kids
# Ver logs
sudo journalctl -u liberi-kids -f
# Ver logs das últimas 100 linhas
sudo journalctl -u liberi-kids -n 100
# Desabilitar inicialização automática
sudo systemctl disable liberi-kids
```
---
## 🔥 Script de Deploy Rápido
Criei um script para facilitar o deploy. Execute:
```bash
chmod +x scripts/deploy-servidor.sh
./scripts/deploy-servidor.sh
```
---
## 🌐 Configurar Nginx (Opcional)
Se quiser usar um domínio ou porta 80/443:
```bash
# Instalar Nginx
sudo apt install nginx -y
# Criar configuração
sudo nano /etc/nginx/sites-available/liberi-kids
```
**Configuração do Nginx:**
```nginx
server {
listen 80;
server_name seu-dominio.com; # ou IP do servidor
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
```
```bash
# Ativar site
sudo ln -s /etc/nginx/sites-available/liberi-kids /etc/nginx/sites-enabled/
# Testar configuração
sudo nginx -t
# Reiniciar Nginx
sudo systemctl restart nginx
```
---
## 🔒 Configurar Firewall
```bash
# Permitir porta 5000
sudo ufw allow 5000/tcp
# Ou se usar Nginx
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Verificar status
sudo ufw status
```
---
## 📊 Monitoramento
### Ver uso de recursos
```bash
# Com PM2
pm2 monit
# Processos
htop
# Espaço em disco
df -h
# Memória
free -h
```
### Logs
```bash
# PM2
pm2 logs liberi-kids-estoque --lines 200
# Systemd
sudo journalctl -u liberi-kids -f
# Logs customizados
tail -f logs/pm2-error.log
tail -f logs/pm2-out.log
```
---
## 🔄 Backup Automático
Adicione ao crontab:
```bash
# Editar crontab
crontab -e
# Adicionar linha para backup diário às 3h da manhã
0 3 * * * cd /home/tiago/Downloads/app_estoque_v1.0.0 && ./backup-projeto-completo.sh
```
---
## ⚠️ Troubleshooting
### Aplicação não inicia
```bash
# Verificar logs
pm2 logs liberi-kids-estoque
# Verificar se a porta está em uso
sudo lsof -i :5000
# Matar processo na porta
sudo kill -9 $(sudo lsof -t -i:5000)
# Reiniciar
pm2 restart liberi-kids-estoque
```
### Alto uso de memória
```bash
# Reiniciar aplicação
pm2 restart liberi-kids-estoque
# Limpar cache do npm
npm cache clean --force
# Verificar processos
pm2 monit
```
### Erros de permissão
```bash
# Dar permissões corretas
sudo chown -R $USER:$USER /home/tiago/Downloads/app_estoque_v1.0.0
# Permissões de execução
chmod +x server-supabase.js
```
---
## 📝 Resumo - Comandos Principais
```bash
# ✅ Iniciar aplicação
pm2 start ecosystem.config.js
# ✅ Ver status
pm2 status
# ✅ Ver logs
pm2 logs liberi-kids-estoque
# ✅ Reiniciar
pm2 restart liberi-kids-estoque
# ✅ Salvar configuração
pm2 save
# ✅ Configurar auto-inicialização
pm2 startup
# ✅ Acessar aplicação
# http://seu-ip:5000
```
---
## 🎯 Próximos Passos
1. ✅ Sistema rodando com PM2
2. ⚙️ Configurar Nginx (opcional)
3. 🔒 Configurar SSL com Let's Encrypt (opcional)
4. 📊 Configurar monitoramento
5. 💾 Configurar backups automáticos
---
## 📞 Suporte
- **Logs PM2**: `pm2 logs liberi-kids-estoque`
- **Status**: `pm2 status`
- **Monitoramento**: `pm2 monit`
**Aplicação rodando em**: http://localhost:5000
**Catálogo público**: http://localhost:5000/catalogo