# 🚀 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