Configuration avancée¶
Journal¶
Pour enregistrer les requêtes envoyées au serveur, vous devez paramétrer les variables d’environnement suivantes :
QGIS_SERVER_LOG_LEVEL
QGIS_SERVER_LOG_FILE
QGIS_SERVER_LOG_STDERR
Jetez un œil à Variables d’environnement pour comprendre leur signification.
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 Configuration d’un serveur HTTP.
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
.
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/qgis/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.
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
.
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.
QGIS_SERVER_LOG_FILE est obsolète depuis QGIS 3.4. La prise en charge de la journalisation des fichiers sera supprimée dans QGIS 4.0.
QGIS_SERVER_LOG_STDERR¶
Activez la journalisation sur stderr. Il est désactivé par défaut. Cette variable n’a aucun effet lorsque QGIS_SERVER_LOG_FILE
est défini.
0
oufalse
(sensible à la casse)1
outrue
(insensible à la casse)
MAX_CACHE_LAYERS¶
Indique le nombre maximal de couches mises en cache (par défaut : 100
).
DISPLAY¶
Ce paramètre est utilisé pour transmettre (tromper) le numéro d’affichage du serveur X (utilisé sur les systèmes de type Unix).
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.
QGIS_SERVER_LOG_LEVEL¶
indique le niveau de journalisation désiré. Les valeurs disponibles sont les suivantes :
0
ouINFO
(journalise toutes les requêtes),1
ouWARNING
,2
ouCRITICAL
(journalise uniquement les erreurs critiques, adapté à un fonctionnement en production).
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
oufalse
(sensible à la casse)1
outrue
(insensible à la casse)
QGIS_SERVER_MAX_THREADS¶
Nombre de threads à utiliser lorsque le rendu parallèle est activé. La valeur par défaut est -1
pour utiliser le nombre de cœurs de processeur.
QGIS_SERVER_CACHE_DIRECTORY¶
Spécifie le répertoire de cache réseau sur le système de fichiers. Le répertoire par défaut est nommé cache
et situé dans le répertoire de profil.
QGIS_SERVER_CACHE_SIZE¶
Définit la taille du cache réseau en Mo. La valeur par défaut est 50
Mo.
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
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
oufalse
(sensible à la casse)1
outrue
(insensible à la casse)
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.
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_FILE=/home/user/qserv.log
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_FILE / '' (Log file): '/tmp/qserv.log' (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.
Nom court pour les couches, les groupes et le projet¶
Un certains nombre d’éléments disposent d’un <Name>
dt d’un <Title>
. Le nom est une chaîne de caractères utilisée dans la communication de machine à machine alors que le titre est utilisé pour les êtres humains.
Par exemple, un jeu de données peut avoir un titre descriptif Température Atmosphérique Maximum et être requêté par le nom abrégé ATMAX. L’utilisateur peut indiquer un titre pour les couches, les groupes et le projet.
Le nom OWS est basé sur le nom utilisé dans l’arbre des couches. Ce nom est plus une étiquette pour les être humains qu’un nom utilisé dans la communication de machine à machine.
QGIS Server gère :
Modification de la ligne de nom abrégé pour les propriétés des couches. Vous pouvez modifier cela en cliquant avec le bouton droit de la souris sur une couche, choisissez
une boîte de dialogue WMS pour les groupes (permet de saisir le nom court du groupe, le titre et un résumé)
En faisant un clic-droit sur un groupe de couches et en sélectionnant l’option Définir un groupe de données WMS, vous obtiendrez:
l’édition de nom court dans les propriétés du projet et l’ajout d’un validateur d’expressions régulières
"^[A-Za-z][A-Za-z0-9\._-]*"
pour les éditions de noms courts (via une méthode statique)l’ajout d’un validateur de fonction rationnelles
"^[A-Za-z][A-Za-z0-9\._-]*"
pour les éditions de noms courts (via une méthode statique)Vous pouvez choisir un nom court pour la racine du projet en allant à :
.l’ajout d’un élément
TreeName
dans les propriétés du projet (fullProjectSettings
)
Si un nom court a été utilisé pour des couches, des groupes ou pour le projet, il sera utilisé par QGIS Server pour définir le nom de la couche.
Connexion au fichier de service¶
Pour faire en sorte qu’Apache puisse accéder au fichier de service PostgreSQL (consultez la section ref:pg-service-file), 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
.....
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