Py-QGIS-Server
Py-QGIS-Server a été conçu pour gérer les processus cartographiques du serveur QGIS.
Prérequis
Nous supposons que vous avez déjà installé les paquets de QGIS Serveur, comme expliqué dans la documentation de QGIS Serveur.
Note
Vous n’avez pas besoin de lire la configuration du serveur web à propos de Nginx/Apache dans la documentation de QGIS. Py-QGIS-Server possède son propre serveur web.
Installer dans un venv Python
Nous ajoutons les paquets nécessaires qui ne sont pas fournis avec QGIS Serveur :
apt install python3-venv python3-psutil
Ensuite, nous créons l’environnement virtuel Py-QGIS-Server et installons py-qgis-server
avec pip :
set -e
python3 -m venv /opt/local/py-qgis-server --system-site-packages
/opt/local/py-qgis-server/bin/pip install -U pip setuptools wheel pysocks typing py-qgis-server
Py-QGIS-Server est installé.
Configuration et fichiers associés
Dossiers utilisés ci-dessous
mkdir -p /srv/qgis/plugins /srv/qgis/config /var/log/qgis /var/lib/py-qgis-server /var/data
Fichier à surveiller pour le redémarrage des workers
Nous créons un fichier vide qui sera surveillé par Py-QGIS-Server pour vérifier quand redémarrer les workers cartographiques de QGIS Serveur.
touch /var/lib/py-qgis-server/py-qgis-restartmon
chmod 664 /var/lib/py-qgis-server/py-qgis-restartmon
Le fichier bash pour redémarrer les workers
Nous créons le fichier exécutable /usr/bin/qgis-reload
pour redémarrer les workers cartographiques de QGIS Serveur. Il contiendra :
#!/bin/bash
touch /var/lib/py-qgis-server/py-qgis-restartmon
Ensuite, nous pouvons changer son mod :
chmod 750 /usr/bin/qgis-reload
Le fichier de configuration
Nous créons le fichier de configuration de Py-QGIS-Server /srv/qgis/server.conf
. Il contiendra :
#
# Py-QGIS-Server configuration
# https://docs.3liz.org/py-qgis-server/
#
[server]
port = 7200
interfaces = 127.0.0.1
workers = 4
pluginpath = /srv/qgis/plugins
timeout = 200
restartmon = /var/lib/py-qgis-server/py-qgis-restartmon
[logging]
level = info
[projects.cache]
strict_check = false
rootdir = /srv/data
size = 50
advanced_report = no
[monitor:amqp]
routing_key =
default_routing_key=
host =
[api.endpoints]
lizmap_api=/lizmap
[api.enabled]
lizmap_api=yes
Dans cet exemple :
QGIS Serveur sera disponible à l’adresse
http://127.0.0.1:7200/ows/
.les extensions sont installées dans
/srv/qgis/plugins
(pluginpath
). Voir Extensions QGIS serveur.le fichier à surveiller pour le redémarrage des workers est
/var/lib/py-qgis-server/py-qgis-restartmon
(restartmon
).le répertoire contenant les projets à publier
/srv/data
(rootdir
). Les projets doivent être dans des sous-dossiers.L’API Lizmap QGIS Server est activée
Gérer avec systemd
Tout d’abord, nous créons un fichier d’environnement /srv/qgis/config/qgis-service.env
avec
LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8
DISPLAY=:99
QGIS_OPTIONS_PATH=/srv/qgis/
QGIS_AUTH_DB_DIR_PATH=/srv/qgis/
GDAL_CACHEMAX=2048
QGIS_SERVER_CACHE_SIZE=2048
QGIS_SERVER_LIZMAP_REVEAL_SETTINGS=TRUE
QGIS_SERVER_FORCE_READONLY_LAYERS=TRUE
QGIS_SERVER_TRUST_LAYER_METADATA=TRUE
QGIS_SERVER_APPLICATION_NAME=qgis-server
Dans ce dossier, nous avons défini :
La langue
Le port d’affichage du Xvfb, nécessaire pour imprimer le PDF
Les options QGIS et le chemin
authDB
(nécessaire pour HTTPS, lorsqu’il est utilisé dans des couches distantes telles que les tuiles OSM).Variable d’environnement Lizmap pour révéler les paramètres
Autres variables du serveur QGIS, extraites de la documentation.
Ensuite, nous pouvons créer le fichier QGIS service systemd /etc/systemd/system/qgis.service
avec
[Unit]
Description=QGIS server
After=network.target
[Service]
Type=simple
ExecStart=/opt/local/py-qgis-server/bin/qgisserver -c /srv/qgis/server.conf
# FIXME it is recommended to have a script *synchronous*, which is not the case here
ExecReload=/usr/bin/qgis-reload
KillMode=control-group
KillSignal=SIGTERM
TimeoutStopSec=10
Restart=always
StandardOutput=append:/var/log/qgis/qgis-server.log
StandardError=inherit
SyslogIdentifier=qgis
EnvironmentFile=/srv/qgis/config/qgis-service.env
User=root
LimitNOFILE=4096
[Install]
WantedBy=multi-user.target
Enfin, nous activons le service QGIS Serveur pour le démarrer et nous assurer qu’il est lancé au démarrage du système :
systemctl enable qgis
service qgis start
Debug et vérification
Astuce
1. We can check that QGIS Server with Py-QGIS-Server is working with :
curl http://127.0.0.1:7200/ows/
2. After the installation of Lizmap Server QGIS plugin, we can check with :
curl http://127.0.0.1:7200/lizmap/server.json | jq '.'
Read Extensions QGIS serveur with the use of QGIS-Plugin-Manager.
Adapter la configuration du client Web Lizmap
Soit en modifiant manuellement le fichier lizmap/var/config/lizmapConfig.ini.php
, soit en le modifiant dans l’interface graphique du client Web Lizmap :
[services]
;URL to QGIS Server for OGC web services
wmsServerURL="http://127.0.0.1:7200/ows/"
;URL to the API exposed by the Lizmap plugin for QGIS Server
lizmapPluginAPIURL="http://127.0.0.1:7200/lizmap/"
; path to find repositories
rootRepositories="/var/data"
Votre panneau Information serveur doit vous indiquer la version de QGIS Serveur et les extensions installées.