projeto-aprovacao-pedidos/DEPLOY_PRODUCAO.md
2026-05-18 15:34:10 -03:00

124 lines
3.1 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.

# 🚀 Guia de Deploy em Produção
## Configuração para Produção
Este aplicativo foi otimizado para rodar em produção com máxima segurança.
### 1⃣ Preparar Arquivo .env
Crie um arquivo `.env` na raiz do projeto com as configurações seguras:
```env
# Django
DEBUG=False
SECRET_KEY=gera-uma-chave-segura-com-32-caracteres-aleatorios-aqui
ALLOWED_HOSTS=seu-dominio.com,www.seu-dominio.com,seu-ip.com
# API Suprimentos
API_SUPRIMENTOS_TOKEN=seu-token-aqui
API_SUPRIMENTOS_DETALHE_URL=https://api.grupoginseng.com.br/api/suprimentos_detalhepedido?limit=50000&status=pendente
API_SUPRIMENTOS_IMPLANTACAO_URL=https://api.grupoginseng.com.br/api/vw_suprimentos_implantacaopedido?limit=50000
# SQL Server (deixe em branco se usar SQLite)
SQL_SERVER_HOST=10.77.77.10
SQL_SERVER_DATABASE=GINSENG
SQL_SERVER_USERNAME=suprimentos
SQL_SERVER_PASSWORD=sua-senha-segura
```
**⚠️ IMPORTANTE:**
- **Gere uma SECRET_KEY segura** (mínimo 50 caracteres aleatórios)
- **NUNCA** commit o arquivo `.env` em repositórios públicos
- Está no `.gitignore`, portanto será automaticamente ignorado
### 2⃣ Gerar SECRET_KEY Segura
```python
from django.core.management.utils import get_random_secret_key
print(get_random_secret_key())
```
### 3⃣ Build e Deploy com Docker
```bash
# Build da imagem
docker-compose build
# Iniciar em produção
docker-compose up -d
# Verificar logs
docker-compose logs -f web
# Parar
docker-compose down
```
### 4⃣ Verificações de Segurança
Antes de publicar, verifique:
```bash
python manage.py check --deploy
```
Deve exibir:
- ✅ DEBUG=False
- ✅ SECRET_KEY configurada
- ✅ ALLOWED_HOSTS definidos
- ✅ Cookies seguros habilitados
### 5⃣ Reverse Proxy (Nginx Recomendado)
Para produção, use um **reverse proxy** (Nginx) na frente do Gunicorn:
```nginx
upstream aprovacao_pedidos {
server web:8000;
}
server {
listen 80;
server_name seu-dominio.com;
location / {
proxy_pass http://aprovacao_pedidos;
proxy_set_header Host $host;
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;
}
location /static/ {
alias /app/staticfiles/;
}
}
```
## Mudanças Implementadas ✅
| Aspecto | Antes | Depois |
|--------|-------|--------|
| Servidor WSGI | `python manage.py runserver` | `gunicorn` (4x mais rápido) |
| Modo DEBUG | `True` (inseguro) | `False` (seguro) |
| SECRET_KEY | Hardcoded/exposta | Variável de ambiente |
| ALLOWED_HOSTS | `['*']` (inseguro) | Domínios específicos |
| Credenciais | Código-fonte | Arquivo `.env` (ignorado) |
| Cookies HTTPS | Não | Sim (em produção) |
| Volumes Docker | Expõe código | Removido (apenas em dev) |
## Troubleshooting
**Erro: "DisallowedHost"**
- Adicione seu domínio em `ALLOWED_HOSTS`
**Erro: "SECRET_KEY not found"**
- Crie arquivo `.env` com `SECRET_KEY`
**Erro: "Connection refused"**
- Verifique se Gunicorn está rodando: `docker-compose logs web`
---
**📝 Próximos passos:** Usar HTTPS/SSL, implementar CI/CD, monitorar logs