6. Configurazione avanzata

6.1. Registrazioni di controllo

Per registrare le richieste inviate al server, devi impostare la seguente variabile d’ambiente:

Con le seguenti variabili è possibile personalizzare ulteriormente la registrazione:

6.2. Variabili d’ambiente

Puoi configurare alcuni aspetti di QGIS Server impostando le environment variables.

A seconda del server HTTP e del modo in cui si esegue QGIS Server, esistono diversi modi per definire queste variabili. Questo è descritto in dettaglio in Apache HTTP Server.

Nome

Descrizione

Predefinito

Servizi

QGIS_OPTIONS_PATH

Specifica il percorso della cartella con le impostazioni. Funziona come l’opzione --optionspath dell’applicazione QGIS. Cerca il file delle impostazioni in <QGIS_OPTIONS_PATH>/QGIS/QGIS3.ini.

“”

All

QGIS_PLUGINPATH

Utile se stai utilizzando i plugin Python per il server, questo imposta la cartella che viene cercata per i plugin Python.

“”

All

QGIS_PROJECT_FILE

Il file di progetto .qgs o .qgz, normalmente passato come parametro nella stringa di query (con MAP); lo puoi anche impostare come variabile d’ambiente (per esempio usando il modulo Apache mod_rewrite).

Nota che puoi anche indicare un progetto memorizzato in PostgreSQL, ad esempio postgresql://localhost:5432?sslmode=disable&dbname=mydb&schema=myschema&project=myproject.

“”

All

QGIS_SERVER_ALLOWED_EXTRA_SQL_TOKENS

Elenco separato da virgole di stringhe che rappresentano i token SQL extra consentiti e accettati come componenti di un filtro di elementi.

“”

WMS

QGIS_SERVER_API_RESOURCES_DIRECTORY

Cartella di base per tutte le risorse statiche OGC API (come OAPIF/WFS3) (modelli HTML, CSS, JS, …)

dipende dal packaging

OAPIF/WFS3

QGIS_SERVER_API_WFS3_MAX_LIMIT

Valore massimo per limit in una richiesta di features OAPIF/WFS3.

10000

OAPIF/WFS3

QGIS_SERVER_CACHE_DIRECTORY

Specifica la cartella della cache di rete sul filesystem.

cache nella cartella del profilo

All

QGIS_SERVER_CACHE_SIZE

Imposta la dimensione della cache di rete in MB.

50 MB

All

QGIS_SERVER_DISABLE_GETPRINT

È un’opzione a livello di progetto per migliorare i tempi di lettura del progetto disabilitando il caricamento dei layout.

L’attivazione di questa opzione disabilita la richiesta GetPrint di QGIS WMS. Imposta questo flag del progetto QGIS per non caricare i layout.

false

WMS

QGIS_SERVER_FORCE_READONLY_LAYERS

Forza QGIS Server ad aprire tutti i layer in modalità di sola lettura

false

All

QGIS_SERVER_IGNORE_BAD_LAYERS

I layer «bad» sono layer che non possono essere caricati. Il comportamento predefinito di QGIS Server è quello di considerare il progetto come non disponibile se contiene un layer non valido.

Il comportamento predefinito può essere sovrascritto impostando questa variabile a 1 o true. In questo caso, i layer «bad» saranno semplicemente ignorati e il progetto sarà considerato valido e disponibile.

false

All

QGIS_SERVER_LANDING_PAGE_PREFIX

Prefisso del componente di percorso dell’URL di base della pagina di destinazione

«»

All

QGIS_SERVER_LANDING_PAGE_PROJECTS_DIRECTORIES

Cartelle utilizzate dal servizio di landing page per trovare i progetti .qgs e .qgz

«»

All

QGIS_SERVER_LANDING_PAGE_PROJECTS_PG_CONNECTIONS

Stringhe di connessione PostgreSQL utilizzate dal servizio di landing page per trovare i progetti

«»

All

QGIS_SERVER_LOG_FILE

Specifica il percorso e il nome del file. Assicurati che il server abbia i permessi corretti per scrivere sul file. Il file dovrebbe essere creato automaticamente, basta inviare alcune richieste al server. Se non c’è, controlla i permessi.

Avvertimento

QGIS_SERVER_LOG_FILE è deprecato da QGIS 3.4, utilizza invece QGIS_SERVER_LOG_STDERR. Il supporto per la registrazione dei file sarà rimosso in QGIS 4.0.

“”

All

QGIS_SERVER_LOG_LEVEL

Specifica il livello di log desiderato. I valori disponibili sono:

  • 0 o INFO (registra tutte le richieste)

  • 1 o WARNING

  • 2 o CRITICAL (registra solo gli errori critici, adatto alla produzione)

0

All

QGIS_SERVER_LOG_PROFILE

Aggiungi informazioni dettagliate sul profilo ai log, efficace solo quando QGIS_SERVER_LOG_LEVEL=0

false

All

QGIS_SERVER_LOG_STDERR

Attiva la registrazione su stderr. Questa variabile non ha effetto quando QGIS_SERVER_LOG_FILE è impostato.

  • 0 o false (non tiene conto del maiuscolo o minuscolo)

  • 1 o true (non tiene conto del maiuscolo o minuscolo)

false

All

QGIS_SERVER_MAX_THREADS

Numero di thread da utilizzare quando si attiva il rendering parallelo. Se il valore è -1 utilizza il numero di core del processore.

-1

All

QGIS_SERVER_OVERRIDE_SYSTEM_LOCALE

Imposta LOCALE da utilizzare dal server QGIS. Il valore predefinito è vuoto (nessuna sovrascrittura).

Esempio: de_CH.utf8

“”

All

QGIS_SERVER_PARALLEL_RENDERING

Attiva il rendering parallelo per le richieste di WMS GetMap. È disabilitato (false) per impostazione predefinita. I valori disponibili sono:

  • 0 o false (non tiene conto del maiuscolo o minuscolo)

  • 1 o true (non tiene conto del maiuscolo o minuscolo)

false

WMS

QGIS_SERVER_PROJECT_CACHE_CHECK_INTERVAL

Controlla l’intervallo della dichiarazione periodica per l’invalidazione della cache.

All

QGIS_SERVER_PROJECT_CACHE_STRATEGY

Definisce il metodo per invalidare la cache del progetto. Le alternative disponibili sono:

  • filesystem: utilizza la struttura di visualizzazione del file system.

  • periodic: utilizza l’ultimo valore modificato di un progetto per controllare le modifiche alla configurazione del progetto. Comodo su file system atipici, come NFS, o quando il file del progetto è memorizzato in un sistema di database come PostgreSQL.

  • off: disabilita completamente l’invalidazione della cache interna

filesystem

All

QGIS_SERVER_SERVICE_URL

Questa è un’opzione per impostare l’URL del servizio se non è presente nel progetto.

L’URL del servizio è definito da (in ordine di precedenza):

  • Valore definito nel progetto per il servizio

  • La variabile d’ambiente QGIS_SERVER_<service>_SERVICE_URL

  • La variabile d’ambiente QGIS_SERVER_SERVICE_URL

  • L’intestazione ``X-Qgis-<service>-Service-Url

  • L’intestazione X-Qgis-Service-Url.

  • Costruito dall’intestazione Forwarded

  • Costruito dalle intestazioni ``X-Forwarded-Host”” e ``X-Forwarded-Proto””.

  • Costruito in base all’intestazione Host e al protocollo del server

  • Costruito dal nome del server e dal protocollo del server.

Negli ultimi quattro casi, l’URL del servizio risultante si basa sul parametro MAP fornito nella stringa di query e sulla richiesta di percorso in ingresso.

“”

All

QGIS_SERVER_SHOW_GROUP_SEPARATOR

Definisce se un separatore di gruppi (ad esempio, il separatore delle migliaia) deve essere usato per i valori numerici (ad esempio, nelle risposte di GetFeatureInfo). Il valore predefinito è 0.

  • 0 o false (non tiene conto del maiuscolo o minuscolo)

  • 1 o true (non tiene conto del maiuscolo o minuscolo)

false

WMS

QGIS_SERVER_TRUST_LAYER_METADATA

Si tratta di un’opzione a livello di progetto per migliorare i tempi di lettura del progetto utilizzando le estensioni dei layer vettoriali definite nei metadati del progetto e disabilitando il controllo dell’unicità della chiave primaria dei layer PostgreSQL/PostGIS.

La fiducia nei metadati del layer può essere forzata impostando questa variabile a 1 o true. L’estensione del layer vettoriale sarà quindi quella definita nel progetto e la chiave primaria del layer PostgreSQL/PostGIS definita nell’origine dati sarà considerata unica senza alcun controllo.

Non usarlo se l’estensione dei layer non viene definita durante l’uso del progetto.

false

All

QGIS_SERVER_WCS_SERVICE_URL

È un’opzione per impostare l’URL del servizio se non è presente nel progetto. Vedere QGIS_SERVER_SERVICE_URL per maggiori informazioni.

“”

WCS

QGIS_SERVER_WFS_SERVICE_URL

È un’opzione per impostare l’URL del servizio se non è presente nel progetto. Vedere QGIS_SERVER_SERVICE_URL per maggiori informazioni.

“”

WFS

QGIS_SERVER_WMS_MAX_HEIGHT / QGIS_SERVER_WMS_MAX_WIDTH

Altezza/larghezza massima per una richiesta WMS. Viene utilizzato il valore più conservativo tra questo e quello del progetto. Se il valore è ``-1””, significa che non è stato impostato un massimo.

-1

WMS

QGIS_SERVER_WMS_SERVICE_URL

È un’opzione per impostare l’URL del servizio se non è presente nel progetto. Vedere QGIS_SERVER_SERVICE_URL per maggiori informazioni.

“”

WMS

QGIS_SERVER_WMTS_SERVICE_URL

È un’opzione per impostare l’URL del servizio se non è presente nel progetto. Vedere QGIS_SERVER_SERVICE_URL per maggiori informazioni.

“”

WMTS

QUERY_STRING

La stringa di query, normalmente passata dal server web. Questa variabile può essere utile per testare i binari del server QGIS dalla riga di comando.

Ad esempio, per testare una richiesta GetCapabilities sulla linea di comando a un progetto che richiede anche una connessione PostgreSQL definita in un file pg_service.conf:

PGSERVICEFILE=/etc/pg_service.conf \
QUERY_STRING="MAP=/home/projects/world.qgs&SERVICE=WMS&REQUEST=GetCapabilities" \
/usr/lib/cgi-bin/qgis_mapserv.fcgi

Il risultato dovrebbe essere il contenuto della risposta di GetCapabilities o, se qualcosa non va, un messaggio di errore.

“”

All

6.3. Riepilogo impostazioni

All’avvio di QGIS Server, viene visualizzato un riepilogo di tutti i parametri configurabili grazie alle variabili d’ambiente. Inoltre, viene visualizzato anche il valore attualmente utilizzato e l’origine.

Ad esempio con spawn-fcgi:

export QGIS_OPTIONS_PATH=/home/user/.local/share/QGIS/QGIS3/profiles/default/
export QGIS_SERVER_LOG_STDERR=1
export QGIS_SERVER_LOG_LEVEL=2
spawn-fcgi -f /usr/lib/cgi-bin/qgis_mapserv.fcgi -s /tmp/qgisserver.sock -U www-data -G www-data -n

 QGIS Server Settings:

   - QGIS_OPTIONS_PATH / '' (Override the default path for user configuration): '/home/user/.local/share/QGIS/QGIS3/profiles/default/' (read from ENVIRONMENT_VARIABLE)

   - QGIS_SERVER_PARALLEL_RENDERING / '/qgis/parallel_rendering' (Activate/Deactivate parallel rendering for WMS getMap request): 'true' (read from INI_FILE)

   - QGIS_SERVER_MAX_THREADS / '/qgis/max_threads' (Number of threads to use when parallel rendering is activated): '4' (read from INI_FILE)

   - QGIS_SERVER_LOG_LEVEL / '' (Log level): '2' (read from ENVIRONMENT_VARIABLE)

   - QGIS_SERVER_LOG_STDERR / '' (Activate/Deactivate logging to stderr): '1' (read from ENVIRONMENT_VARIABLE)

   - QGIS_PROJECT_FILE / '' (QGIS project file): '' (read from DEFAULT_VALUE)

   - MAX_CACHE_LAYERS / '' (Specify the maximum number of cached layers): '100' (read from DEFAULT_VALUE)

   - QGIS_SERVER_CACHE_DIRECTORY / '/cache/directory' (Specify the cache directory): '/root/.local/share/QGIS/QGIS3/profiles/default/cache' (read from DEFAULT_VALUE)

   - QGIS_SERVER_CACHE_SIZE / '/cache/size' (Specify the cache size): '52428800' (read from INI_FILE)

 Ini file used to initialize settings: /home/user/.local/share/QGIS/QGIS3/profiles/default/QGIS/QGIS3.ini

In questo caso particolare, sappiamo che i valori QGIS_SERVER_MAX_THREADS e QGIS_SERVER_PARALLEL_RENDERING vengono letti dal file ini che si trova nella cartella QGIS_OPTIONS_PATH (definita tramite una variabile d’ambiente). Le voci corrispondenti nel file ini sono /qgis/max_threads e /qgis/parallel_rendering e i loro valori sono true e 4 thread.

6.4. Connessione a file di servizio

Per far sì che apache sia a conoscenza del file di servizio PostgreSQL ( vedere la sezione File per la connessione a Servizio PostgreSQL) devi fare in modo che il tuo file *.conf assomigli a:

SetEnv PGSERVICEFILE /home/web/.pg_service.conf

<Directory "/home/web/apps2/bin/">
  AllowOverride None
.....

6.5. Aggiungere font al server Linux

Tieni presente che puoi utilizzare progetti QGIS che puntano a font che potrebbero non esistere per impostazione predefinita su altri computer. Ciò significa che se si condivide il progetto, questo potrebbe apparire diverso su altri computer (se i font non esistono sul computer di destinazione).

Per evitare che ciò accada, devi installare i font mancanti sul computer di destinazione. Sui sistemi desktop questa operazione è di solito banale (doppio clic sui font).

Per Linux, se non hai installato un ambiente desktop (o preferisci la linea di comando), devi installarlo:

  • Su sistemi basati su Debian:

    sudo su
    mkdir -p /usr/local/share/fonts/truetype/myfonts && cd /usr/local/share/fonts/truetype/myfonts
    
    # copy the fonts from their location
    cp /fonts_location/* .
    
    chown root *
    cd .. && fc-cache -f -v
    
  • Su sistemi basati su Fedora:

    sudo su
    mkdir /usr/share/fonts/myfonts && cd /usr/share/fonts/myfonts
    
    # copy the fonts from their location
    cp /fonts_location/* .
    
    chown root *
    cd .. && fc-cache -f -v