chore: sincroniza projeto para gitea
This commit is contained in:
395
DEPLOY-SERVIDOR-LOCAL.md
Normal file
395
DEPLOY-SERVIDOR-LOCAL.md
Normal file
@@ -0,0 +1,395 @@
|
||||
# 🖥️ 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
|
||||
Reference in New Issue
Block a user