Dockerizzazione¶
Questa dockerizzazione si basa su un progetto di Alessandro Pasotti (@elpaso, https://github.com/elpaso)
Configurazione¶
Crea un file .env
(o copia .env.example
e rinominalo in .env
) e posizionalo nella directory principale, il file conterrà le credenziali del database (cambia your password
) e altre impostazioni:
# External hostname, for docker internal network aliases
WEBGIS_PUBLIC_HOSTNAME=demo.g3wsuite.it/
WEBGIS_DOCKER_SHARED_VOLUME=/tmp/shared-volume-g3w-suite
# DB setup
G3WSUITE_POSTGRES_USER_LOCAL=g3wsuite
G3WSUITE_POSTGRES_PASS=<your_password>
G3WSUITE_POSTGRES_DBNAME=g3wsuite
G3WSUITE_POSTGRES_HOST=postgis
G3WSUITE_POSTGRES_PORT=5432
# Caching
G3WSUITE_TILECACHE_PATH=/shared-volume/tile_cache/
TILESTACHE_CACHE_BUFFER_SIZE=256
# URL of the QGIS Server
G3WSUITE_QDJANGO_SERVER_URL=http://qgisserver/ows/
# Set G3W-SUITE debug state
G3WSUITE_DEBUG = 1 (0 default)
Build¶
G3W-SUITE¶
L”immagine della suite principale può essere creata con:
docker build -f Dockerfile.g3wsuite.dockerfile -t g3wsuite/g3w-suite-dev:latest --no-cache .
L”immagine del contenitore è compilata da https://github.com/g3w-suite/g3w-admin.git --branch dev
Il Docker hub name per questa immagine è g3wsuite/g3w-suite-dev:latest
PostGis¶
L”immagine di Postgis può essere costruita con:
docker build -f Dockerfile.postgis -t g3wsuite/postgis:11.0-2.5 .
La Docker hub name per questa immagine è g3wsuite/postgis: 11.0-2.5
QGIS Server¶
L”immagine di QGIS Server è costruita da https://github.com/elpaso/qgis-server-docker/tree/production
Il nome del Docker Hub per questa immagine è g3wsuite/qgis3-server:ltr-ubuntu
Configurazione aggiuntiva HTTPS¶
controlla il nome di dominio nel file
.env
e inconfig/nginx/django_ssl.conf
lanciare
mkdir -p /shared-volume/ssl/certs/
lanciare
sudo openssl dhparam -out /shared-volume/ssl/certs/dhparam-2048.pem 2048
lanciare
docker pull certbot/certbot
lanciare
./run_certbot.sh
assicurati che i certificati vengano rinnovati aggiungendo un cron job con
crontab -e
e aggiungi la seguente riga:0 3 * * * /home/g3w-suite/rl.g3w suite.it/run certbot.sh
se hai disabilitato HTTPS, puoi spostare
config/nginx/django ssl.conf
nella sua posizione originale e riavviare il Docker compose per abilitare HTTPS
Run¶
docker-compose up -d
Ports¶
web application: 8080
Volumes¶
Dati, progetti, caricamenti e database sono archiviati in un volume condiviso shared-volume
, il volume deve essere su un dispositivo di archiviazione permanente e deve esservi applicato un criterio di backup.
Prima configurazione¶
accediamo al pannello di amministrazione web dell”applicazione utilizzando le credenziali predefinite (admin/admin)
cambiare la password per l”utente amministratore e per qualsiasi altro eventuale utente di esempio
Caching¶
La tile cache può essere configurata e cancellata per singolo livello attraverso il pannello di amministrazione della applicazione e permane fino a quando non viene disabilitata o cancellata.
Suggerimento: abilita la cache su vettoriali lineari e poligonali.
Personalizzazione dello stile¶
I templates possono essere sovrascritti inserendo gli override in config/g3w-suite/overrides/templates
, è necessario un riavvio del servizio Docker per rendere effettive le modifiche.
Anche il logo viene sovrascritto (tramite config/g3w-suite/settings_docker.py
che è montato come volume), le modifiche al file delle impostazioni richiedono il riavvio del servizio Docker.
Un CSS personalizzato viene aggiunto alle pagine, il file si trova in config/g3w-suite/overrides/static/style.css
e può essere modificato direttamente, le modifiche hanno effetto immediato.
Ottimizzazione delle prestazioni¶
Regole generali (in nessun ordine particolare: sono tutte obbligatorie)
imposta la visibilità dipendente dalla scala per l”intero layer o per alcune features filtrate (esempio: mostra solo le strade principali fino alla scala 1: 1E+6)
quando per la stilizzazione dei layer si utilizza il metodo categorizzato o la classificazione basata su regole oppure quando si attiva la visibilità dipendente dalla scala, è fortemente consigliato creare indici sulle colonne coinvolte nell”espressione della regola (esempio: “create indice idx_elec_penwell_ious on elec_penwell_ious (owner);”)
avvia il progetto con solo pochi livelli attivi all”avvio
non rendere attivi di default i livelli base XYZ come (Google base maps)
non utilizzare il rendering basato sul metodo categorizzato o basato su regole con troppe categorie (esempio: elec_penwell_public_power), ciò rallenta il rendering della mappa
abilitare la semplificazione del rendering per layer non puntuali, impostarlo su
Distanza
1.2
e selezionareAbilita semplificazione provider se disponibile
Amministrazione PostgreSQL¶
PostGreSQL è in esecuzione in un contenitore Docker, per accedere al contenitore è possibile seguire le istruzioni seguenti:
Controlla il nome del contenitore¶
$ docker ps | grep postgis
84ef6a8d23e6 g3wsuite/postgis:11.0-2.5 "/bin/sh -c /docker-…" 2 days ago Up 2 days 0.0.0.0:5438->5432/tcp g3wsuitedocker_postgis_1
Nell”esempio il nome del contenitore è g3wsuitedocker_postgis_1
Accedi al contenitore¶
$ docker exec -it g3wsuitedocker_postgis_1 bash
Diventa utente postgres¶
root@84ef6a8d23e6:/# su - postgres
Connettiti a PostGis¶
postgres@84ef6a8d23e6:~$ psql
psql (11.2 (Debian 11.2-1.pgdg90+1))
Type "help" for help.
postgres=#