5.6 KiB
Configuração do SGVP com Banco de Dados Remoto
Este documento explica como configurar o SGVP para usar um banco de dados PostgreSQL remoto.
Problemas Corrigidos
1. Erro 404 ao acessar http://localhost:8000/
Causa: O gunicorn não estava iniciando por dois motivos:
- Permissões incorretas no arquivo de migration do TCE
- Configuração duplicada do socket Unix no gunicorn
Soluções aplicadas:
a) Correção do arquivo gunicorn.conf.py
Arquivo: docker/startup_scripts/gunicorn.conf.py
Antes:
SOCKFILE = f"unix:{DJANGODIR}/run/gunicorn.sock"
bind = f"unix:{SOCKFILE}" # Resulta em: unix:unix:/var/interlegis/sapl/run/gunicorn.sock
Depois:
SOCKFILE = f"{DJANGODIR}/run/gunicorn.sock"
bind = f"unix:{SOCKFILE}" # Correto: unix:/var/interlegis/sapl/run/gunicorn.sock
b) Correção de permissões de migrations
Caso encontre erro de permissão em arquivos de migration, execute:
docker exec sapl chmod 644 /var/interlegis/sapl/sapl/*/migrations/*.py
Configuração do Banco de Dados Remoto
Passo 1: Editar o docker-compose.yaml
Arquivo: docker/docker-compose.yaml
Adicione a variável DATABASE_URL nas variáveis de ambiente do serviço sapl:
sapl:
build:
context: ../
dockerfile: ./docker/Dockerfile
container_name: sapl
restart: always
environment:
ADMIN_PASSWORD: interlegis
ADMIN_EMAIL: email@dominio.net
DEBUG: 'False'
DATABASE_URL: postgresql://bruno:Sapl%402025@sgvp.com.br:5432/sapl
# ... outras variáveis
IMPORTANTE: Se a senha contiver caracteres especiais como @, eles devem ser codificados:
@→%40:→%3A/→%2F
Exemplo: Sapl@2025 vira Sapl%402025
Passo 2: Remover dependência do banco local
No mesmo arquivo, remova sapldb das dependências:
Antes:
depends_on:
- sapldb
- saplsolr
- onlyoffice
Depois:
depends_on:
- saplsolr
- onlyoffice
Passo 3: Testar a conexão com o banco remoto
Antes de iniciar o SGVP, teste a conexão:
docker run --rm postgres:10.5-alpine psql \
"postgresql://bruno:Sapl%402025@sgvp.com.br:5432/sapl" \
-c "\dt"
Se listar as tabelas, a conexão está funcionando!
Passo 4: Reconstruir a imagem Docker
cd /home/bruno/sapl/docker
docker-compose build sapl
Passo 5: Iniciar os containers
docker-compose up -d
Passo 6: Verificar os logs
docker logs sapl -f
Aguarde até ver:
[YYYY-MM-DDThh:mm:ss-03:00] Starting gunicorn...
[YYYY-MM-DDThh:mm:ss-03:00] Starting nginx...
Passo 7: Testar o acesso
curl -I http://localhost:8000/
Deve retornar: HTTP/1.1 200 OK
Acessando o Sistema
URL
Usuários disponíveis
O sistema cria automaticamente dois usuários locais:
- Usuário:
interlegis| Senha:interlegis(ou valor de ADMIN_PASSWORD) - Usuário:
admin| Senha:interlegis(ou valor de ADMIN_PASSWORD)
Se estiver usando um banco remoto existente, use os usuários já cadastrados nesse banco.
Estrutura dos Containers
┌─────────────────┐
│ SGVP │ → Porta 8000:80
│ (Aplicação) │
└────────┬────────┘
│
├──→ sgvp.com.br:5432 (PostgreSQL Remoto)
│
├──→ SOLR (Porta 8983)
│
└──→ OnlyOffice (Porta 8002)
Solução de Problemas
Gunicorn não inicia (sem socket criado)
# Verificar logs detalhados
docker exec sapl cat /var/log/sapl/error.log
# Verificar permissões
docker exec sapl ls -la /var/interlegis/sapl/run/
Erro de conexão com banco de dados
# Verificar variáveis de ambiente
docker exec sapl env | grep DATABASE_URL
# Testar conexão manualmente
docker run --rm postgres:10.5-alpine psql \
"postgresql://usuario:senha@host:5432/database" \
-c "SELECT version();"
Erro 404 no nginx
# Verificar se o socket existe
docker exec sapl ls -la /var/interlegis/sapl/run/gunicorn.sock
# Se não existir, verificar por que o gunicorn não iniciou
docker logs sapl 2>&1 | grep -i error
Comandos Úteis
# Ver status dos containers
docker-compose ps
# Reiniciar o SGVP
docker-compose restart sapl
# Ver logs em tempo real
docker logs sapl -f
# Parar todos os containers
docker-compose down
# Iniciar todos os containers
docker-compose up -d
# Reconstruir e iniciar
docker-compose up -d --build sapl
# Executar comando no container
docker exec -it sapl bash
Estrutura de Arquivos Importantes
sapl/
├── docker/
│ ├── docker-compose.yaml # Configuração principal
│ ├── Dockerfile # Imagem do SGVP
│ └── startup_scripts/
│ ├── gunicorn.conf.py # Configuração do gunicorn
│ ├── start.sh # Script de inicialização
│ └── create_admin.py # Criação de usuários admin
├── sapl/
│ └── settings.py # Configurações Django
└── requirements/
└── requirements.txt # Dependências Python
Notas Finais
- O banco de dados local (container
postgres) não é mais necessário quando usando banco remoto - As migrations são aplicadas automaticamente na inicialização
- O timezone do banco é configurado automaticamente para
America/Sao_Paulo - Os arquivos de media e data ficam em volumes Docker separados