Este tutorial mostra como configurar um script que atualiza automaticamente as camadas do GeoServer no GeoNode, utilizando um checksum para detectar alterações.
1. Instalar o checksumdir dentro do container do GeoServer
1.1 Entrar no container do GeoServer
docker exec -it geoserver4my_geonode bash
1.2 Instalar o checksumdir
pip install checksumdir
2. Gerar o checksum (código único) da pasta do GeoServer
O comando checksumdir cria um hash único com base no conteúdo de todos os arquivos da pasta especificada. Isso significa que qualquer alteração em uma camada, SLD ou arquivo dentro do workspace do GeoNode fará o checksum mudar, permitindo que o script detecte automaticamente essas modificações e atualize as camadas no GeoNode.
2.1 Executar o comando:
checksumdir /geoserver_data/data/workspaces/geonode
Anote o código gerado, pois ele será usado na etapa seguinte.
3. Criar um arquivo para armazenar o checksum
3.1 Criar o arquivo:
sudo mkdir /opt/updatelayers sudo chown geocursos /opt/updatelayers sudo chgrp www-data /opt/updatelayers cd /opt/updatelayers touch layers_updated_md5
3.2 Inserir o código do checksum
nano layers_updated_md5
Cole o checksum gerado na etapa anterior e salve o arquivo.
4. Criar o script de execução automática
4.1 Criar o arquivo do script:
touch cron_updatelayers.sh
4.2 Adicionar o código no script:
geoserver="geoserver4my_geonode" geonode="django4my_geonode" md5=$(docker exec -i $geoserver checksumdir /geoserver_data/data/workspaces/geonode) if [[ $md5 != $(cat /opt/updatelayers/layers_updated_md5) ]]; then echo "Atualizando camadas" echo $md5 > /opt/updatelayers/layers_updated_md5 docker exec -i $geonode python3 manage.py updatelayers fi
4.3 Agora você precisa tornar o arquivo executável:
chmod +x /opt/updatelayers/cron_updatelayers.sh
5. Configurar o cron para execução automática
5.1 Abrir o arquivo crontab:
sudo nano /etc/crontab
5.2 Adicionar a linha para executar o script a cada 5 minutos
Lembre-se de alterar o caminho do script conforme a sua configuração:
*/5 * * * * geocursos bash /opt/updatelayers/cron_updatelayers.sh
Pronto! Agora seu GeoServer irá verificar periodicamente alterações nas camadas e atualizar automaticamente no GeoNode quando houver mudanças.
Se você quiser conferir se o comando está sendo executando, basta executar:
sudo grep CRON /var/log/syslog
Por último, mas não menos importante, gostaria de agradecer ao Diego Varela por disponibilizar esse script.