6. Configuration avancée

6.1. Suivi du journal

Pour enregistrer les requêtes envoyées au serveur, vous devez paramétrer la variable d’environnement suivante :

Une plus grande personnalisation est possible avec les variables suivantes :

6.2. Variables d’environnement

Vous pouvez configurer certains aspects de QGIS Server en définissant des variables d’environnement.

Selon le serveur HTTP et la façon dont vous exécutez QGIS Server, il existe plusieurs façons de définir ces variables. Ceci est décrit en détail dans Apache HTTP Server.

Nom

Description

Default

Services

QGIS_OPTIONS_PATH

Indique le chemin vers le répertoire des paramètres. Elle fonctionne de la même manière que l’option --optionspath de l’application QGIS. Elle recherche le fichier de paramètres dans <QGIS_OPTIONS_PATH>/QGIS/QGIS3.ini.

“”

Tous

QGIS_PLUGINPATH

Utile si vous utilisez des extensions Python pour le serveur, le répertoire indiqué est celui qui sera utilisé pour la recherche des extensions Python.

“”

Tous

QGIS_PROJECT_FILE

Le fichier de projet .qgs ou .qgz, habituellement transmis sous forme de paramètre dans la chaîne de la requête (avec MAP), vous pouvez également la paramétrer comme une variable d’environnement (par exemple, en utilisant le module Apache mod_rewrite).

Notez que vous pouvez également indiquer un projet stocké dans PostgreSQL, par exemple postgresql://localhost:5432?sslmode=disable&dbname=mydb&schema=myschema&project=myproject.

“”

Tous

QGIS_SERVER_ALLOWED_EXTRA_SQL_TOKENS

Comma separated list of strings that represent the allowed extra SQL tokens accepted as components of a feature filter.

“”

WMS

QGIS_SERVER_API_RESOURCES_DIRECTORY

Répertoire de base pour toutes les ressources statiques OGC API (telles que OAPIF/WFS3) (modèles HTML, CSS, JS, …).

dépend du paquet

OAPIF/WFS3

QGIS_SERVER_API_WFS3_MAX_LIMIT

Maximum value for limit in a OAPIF/WFS3 features request.

10000

OAPIF/WFS3

QGIS_SERVER_CACHE_DIRECTORY

Définit le dossier du cache réseau dans le système de fichier.

cache dans le répertoire du profil

Tous

QGIS_SERVER_CACHE_SIZE

Définit la taille du cache réseau en Mo.

50 Mo

Tous

QGIS_SERVER_DISABLE_GETPRINT

C’est une option au niveau du projet qui permet d’améliorer le temps de lecture du projet en désactivant le chargement des mises en page.

L’activation de cette option désactive la demande de GetPrint du WMS QGIS. Activez ce drapeau de projet QGIS pour ne pas charger les mises en page.

faux

WMS

QGIS_SERVER_FORCE_READONLY_LAYERS

Force QGIS Server to open all layers in a read only mode

faux

Tous

QGIS_SERVER_IGNORE_BAD_LAYERS

Les « mauvaises » couches sont des couches qui ne peuvent pas être chargées. Le comportement par défaut de QGIS Server consiste à considérer le projet comme non disponible s’il contient une mauvaise couche.

Le comportement par défaut peut être remplacé en définissant cette variable sur 1 ou vrai. Dans ce cas, les « mauvaises » couches seront simplement ignorées et le projet sera considéré comme valide et disponible.

faux

Tous

QGIS_SERVER_LANDING_PAGE_PREFIX

Préfixe de la composante « chemin » de l’URL de base de la page de destination

« « 

Tous

QGIS_SERVER_LANDING_PAGE_PROJECTS_DIRECTORIES

Répertoires utilisés par le service des pages d’atterrissage pour trouver les projets .qgs et .qgz

« « 

Tous

QGIS_SERVER_LANDING_PAGE_PROJECTS_PG_CONNECTIONS

Chaînes de connexion PostgreSQL utilisées par le service de la page d’atterrissage pour trouver des projets

« « 

Tous

QGIS_SERVER_LOG_FILE

Indique le chemin et le nom de fichier du journal. Assurez-vous que le serveur dispose des permissions adaptées pour écrire dans le fichier. Le fichier est créé automatiquement lors de l’envoi de requêtes vers le serveur. S’il n’existe pas, vérifiez les permissions.

Avertissement

QGIS_SERVER_LOG_FILE est obsolète depuis QGIS 3.4, utilisez plutôt QGIS_SERVER_LOG_STDERR. La prise en charge de la journalisation des fichiers sera supprimée dans QGIS 4.0.

“”

Tous

QGIS_SERVER_LOG_LEVEL

indique le niveau de journalisation désiré. Les valeurs disponibles sont les suivantes :

  • 0 ou INFO (journalise toutes les requêtes),

  • 1 ou WARNING

  • 2 ou CRITICAL (journalise uniquement les erreurs critiques, adapté à un fonctionnement en production).

0

Tous

QGIS_SERVER_LOG_PROFILE

Ajouter des informations détaillées sur le profil dans les journaux, uniquement efficace lorsque QGIS_SERVER_LOG_LEVEL=0.

faux

Tous

QGIS_SERVER_LOG_STDERR

Activez la journalisation sur stderr. Cette variable n’a aucun effet lorsque QGIS_SERVER_LOG_FILE est défini.

  • 0 ou false (insensible à la casse)

  • 1 ou true (insensible à la casse)

faux

Tous

QGIS_SERVER_MAX_THREADS

Nombre de threads à utiliser lorsque le rendu parallèle est activé. Si la valeur est -1, le nombre de cœurs de processeur est utilisé.

-1

Tous

QGIS_SERVER_OVERRIDE_SYSTEM_LOCALE

Définit LOCALE à utiliser par le serveur QGIS. La valeur par défaut est vide (pas de substitution).

Exemple : de_CH.utf8

“”

Tous

QGIS_SERVER_PARALLEL_RENDERING

Active le rendu parallèle pour les demandes WMS GetMap. Il est désactivé (faux) par défaut. Les valeurs disponibles sont :

  • 0 ou false (insensible à la casse)

  • 1 ou true (insensible à la casse)

faux

WMS

QGIS_SERVER_PROJECT_CACHE_CHECK_INTERVAL

Controls the periodic strategy interval for cache invalidation

Tous

QGIS_SERVER_PROJECT_CACHE_STRATEGY

Defines method for invalidating the project cache. Available strategies are:

  • filesystem: uses the file system watcher strategy

  • periodic: uses the last modified value of a project for checking changes on project configuration. Convenient on atypical file systems, such as NFS, or when the project file is stored in a database system like PostgreSQL.

  • off: disables internal cache invalidation completely

filesystem

Tous

QGIS_SERVER_SERVICE_URL

This is an option to set the service URL if it is not present in the project.

The service URL is defined from (in order of precedence):

  • Value defined in the project per service

  • The QGIS_SERVER_<service>_SERVICE_URL environment variable

  • The QGIS_SERVER_SERVICE_URL environment variable

  • The X-Qgis-<service>-Service-Url header

  • The X-Qgis-Service-Url header

  • Build from the Forwarded header

  • Build from the X-Forwarded-Host and X-Forwarded-Proto headers

  • Build from the Host header and the server protocol

  • Build from the server name and the server protocol.

In the last four cases, the resulting Service URL is based on the MAP parameter provided in the query string and on the incoming path request.

“”

Tous

QGIS_SERVER_SHOW_GROUP_SEPARATOR

Définit si un séparateur de groupe (par exemple mille séparateurs) doit être utilisé pour les valeurs numériques (par exemple dans les réponses GetFeatureInfo). La valeur par défaut est 0.

  • 0 ou false (insensible à la casse)

  • 1 ou true (insensible à la casse)

faux

WMS

QGIS_SERVER_TRUST_LAYER_METADATA

Il s’agit d’une option au niveau du projet pour améliorer le temps de lecture du projet en utilisant les étendues de la couche vecteur définies dans les métadonnées du projet et en désactivant la vérification de l’unicité de la clé primaire de la couche PostgreSQL/PostGIS.

On peut forcer la confiance dans les métadonnées de la couche en fixant cette variable à « 1 » ou « true ». L’étendue de la couche vecteur sera alors celle définie dans le projet, et la clé primaire de la couche PostgreSQL/PostGIS définie dans la source de données est considérée comme unique sans contrôle.

Ne l’utilisez pas si l’étendue des couches n’est pas fixée pendant l’utilisation du projet.

faux

Tous

QGIS_SERVER_WCS_SERVICE_URL

This is an option to set the service URL if it is not present in the project. See QGIS_SERVER_SERVICE_URL for more information.

“”

WCS

QGIS_SERVER_WFS_SERVICE_URL

This is an option to set the service URL if it is not present in the project. See QGIS_SERVER_SERVICE_URL for more information.

“”

WFS

QGIS_SERVER_WMS_MAX_HEIGHT / QGIS_SERVER_WMS_MAX_WIDTH

Hauteur/largeur maximale d’une requête WMS. La valeur la plus conservatrice entre la requête et le projet est utilisée. Une valeur de -1 signifie qu’il n’y a pas de maximum défini.

-1

WMS

QGIS_SERVER_WMS_SERVICE_URL

This is an option to set the service URL if it is not present in the project. See QGIS_SERVER_SERVICE_URL for more information.

“”

WMS

QGIS_SERVER_WMTS_SERVICE_URL

This is an option to set the service URL if it is not present in the project. See QGIS_SERVER_SERVICE_URL for more information.

“”

WMTS

QUERY_STRING

La chaîne de caractères de la requête, habituellement transmise par le serveur Web. Cette variable peut être utile pour tester le binaire de QGIS Server depuis la ligne de commande.

Par exemple, pour tester une demande GetCapabilities sur la ligne de commande d’un projet qui nécessite également une connexion PostgreSQL définie dans un fichier 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

Le résultat doit être le contenu de la réponse GetCapabilities ou, si quelque chose ne va pas, un message d’erreur.

“”

Tous

6.3. Résumé des paramètres

Au démarrage de QGIS Server, vous disposez d’un résumé de tous les paramètres configurables grâce aux variables d’environnement. De plus, la valeur actuellement utilisée et l’origine sont également affichées.

Par exemple avec 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

Dans ce cas particulier, nous savons que les valeurs QGIS_SERVER_MAX_THREADS et QGIS_SERVER_PARALLEL_RENDERING sont lues à partir du fichier ini situé dans le répertoire QGIS_OPTIONS_PATH (qui est défini via une variable d’environnement). Les entrées correspondantes dans le fichier ini sont /qgis/max_threads et /qgis/parallel_rendering et leurs valeurs sont true et 4 threads.

6.4. Connexion au fichier de service

Pour faire en sorte qu’Apache puisse accéder au fichier de service PostgreSQL (consultez la section Fichier de connexion de service), vous devez modifier vos fichiers *.conf de la manière suivante:

SetEnv PGSERVICEFILE /home/web/.pg_service.conf

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

6.5. Ajouter des polices à votre serveur Linux

Gardez à l’esprit que vous pouvez utiliser des projet QGIS qui utilisent des polices qui n’existent pas par défaut sur les autres machines. Cela signifie que si vous partagez le projet, il pourra apparaître de manière différente sur d’autres machines (si les polices n’existent pas sur la machine cible).

Pour s’assurer que cela n’arrive pas, vous devez simplement installer les polices manquantes sur la machine cible. En règle général, le faire sur des systèmes bureautiques est relativement simple (double-cliquer sur des polices).

Sous Linux, si vous n’avez pas d’environnement de bureau d’installé (ou que vous préferrez la ligne de commande), vous devrez:

  • Sur les systèmes basés sur 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
    
  • Pour les systèmes basés sur 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