banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Tue 04 May 2021 10:49

Wei
Juste Inscrit !
Date d'inscription: 8 Apr 2021
Messages: 4

Mise en place QGis Server sur Windows

Bonjour à tous,

Je suis en train de suivre le tutoriel de QGIS pour la mise en place d'un QGIS serveur afin de pouvoir créer des WMS qui seront consommés,
je suis parvenu à récupérer des données sous format XML cependant, je n'arrive pas à récupérer la carte en elle-même avec GetMap, j'ai à la place de cela une erreur "Not Found" ou "Échec de la connexion sécurisée".

Mon projet est à l'emplacement sur mon pc : C:\exercise_data\qgis-server-tutorial-data\world.qgs

Et j'utilise ce lien sur Mozilla :
https://localhost:8081/qgisserver?MAP=C:\exercise_data\qgis-server-tutorial-data\world.qgs&LAYERS=countries&SERVICE=WMS&REQUEST=GetMap&CRS=EPSG:4326&WIDTH=400&HEIGHT=200

Alors qu'en utilisant ce lien je parviens à récupérer un XML :
http://localhost:8081/cgi-bin/qgis_mapserv.fcgi.exe?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities&MAP=C:\exercise_data\qgis-server-tutorial-data\world.qgs

Dois-je envoyer mes données qgis sur une base de donnée (postgre +gis) avant ou est-ce une erreur dans le lien ou la façon d'écrire ?
Voici le lien du tutoriel que je suis : https://docs.qgis.org/3.16/en/docs/serv … on-windows (Partie - 2.3 Serve a project)

Merci d'avance pour votre aide,
Cordialement

Hors ligne

 

#2 Sat 15 May 2021 16:03

PauloLrx
Participant occasionnel
Date d'inscription: 11 Feb 2021
Messages: 22

Re: Mise en place QGis Server sur Windows

Bonjour,

Quel est votre client web?
J'ai monté un QGIS server sur Windows il y a peu,

J'ai rencontré ces problèmes qu'on m'a aidé à résoudre:
Modifiez le fichier C:\Apache24\conf\httpd.conf en utilisant Notepad par exemple jamais BlocNote
On remplace :
ScriptAlias /cgi-bin/ "${SRVROOT}/cgi-bin/"
Par
ScriptAlias /cgi-bin/ "C:/OSGeo4W/apps/qgis-ltr/bin/" (qgis-ltr :dernière version stable de QGIS server
On remplace :
<Directory "C:/xampp/cgi-bin">
AllowOverride None
Options None
Require all granted
</Directory>
Par :
<Directory "C:/OSGeo4W/apps/qgis-ltr/bin">
SetHandler cgi-script
AllowOverride All
Options +ExecCGI -MultiViews +FollowSymLinks
Require all granted
</Directory>
Dans la doc QGIS (https://docs.qgis.org/3.16/fr/docs/serv … arted.html) ces lignes ne sont plus valides avec les nouvelles versions d’Apache Order allow,deny Allow from all
On remplace :
AddHandler cgi-script .cgi .pl .asp
Par
AddHandler cgi-script .cgi .pl .asp .exe
Puis ajoutez à la fin de httpd.conf :
SetEnv GDAL_DATA "C:\OSGeo4W\share\gdal" SetEnv QGIS_AUTH_DB_DIR_PATH "C:\OSGeo4W\apps\qgis-ltr\resources" SetEnv PYTHONHOME "C:\OSGeo4W\apps\Python37" SetEnv PATH "C:\OSGeo4W\bin;C:\OSGeo4W\apps\qgis-ltr\bin;C:\OSGeo4W\apps\Qt5\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem" SetEnv QGIS_PREFIX_PATH "C:\OSGeo4W\apps\qgis-ltr" SetEnv QT_PLUGIN_PATH "C:\OSGeo4W\apps\Qt5\plugins" SetEnv QGIS_SERVER_LOG_FILE "C:\OSGeo4W\apps\Qt5\plugins"
Redémarrez le serveur Web Apache à partir de Services Windows et ouvrez la fenêtre d’un navigateur web pour tester une demande GetCapabilities vers QGIS Server. Entrer l’adresse suivante
http://localhost/cgi/bin/qgis_mapserv.fcgi.exe?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities

Si ce qui est mentionné au dessus est bon, il peu y avoir un petit soucis avec la connexion à la base de données lors de la requête GETMAP. Pour générer le flux de données, Qgis va avoir besoin d’accéder à la base de données Postgis, il est possible de sauvegarder les identifiants et mot de passe de connexion, toutefois cette méthode est déconseillée car les identifiants et mot de passe vont être visibles dans le projet QGIS (.qgs). Il est possible de les crypter En local pour tester je vous conseille de sauvegarder votre identifiant et mot de passe dans les paramètres de connexion. Une fois que vous passez sur serveur externe, vous pouvez les crypter.
https://docs.qgis.org/3.16/fr/docs/user … rvice-file
Fichier de connexion de service
Le fichier de connexion de service permet aux paramètres de connexion PostgreSQL d’être associés à un seul nom de service. Ce nom de service peut alors être utilisé par un client et les paramètres associés seront utilisés.
Il est nommé .pg_service.conf sous les systèmes *nix (GNU/Linux, macOs, etc.) et pg_service.conf sous Windows.
Le fichier de service peut ressembler à ceci:
[water_service]
host=192.168.0.45
port=5433
dbname=gisdb
user=paul
password=paulspass
[wastewater_service]
host=dbserver.com
dbname=water
user=waterpass
Note
Il existe deux services dans l’exemple ci-dessus: water_service et wastewater_service. Vous pouvez les utiliser pour vous connecter à partir de QGIS, pgAdmin, etc. en spécifiant uniquement le nom du service auquel vous souhaitez vous connecter (sans les crochets inclus). Si vous souhaitez utiliser le service avec psql, vous devez faire quelque chose comme export PGSERVICE=water_service avant d’exécuter vos commandes psql.
Note Si vous ne souhaitez pas enregistrer les mots de passe dans le fichier de service, vous pouvez utiliser l’option .pg_pass.
Sur les systèmes d’exploitation *nix (GNU / Linux, macOS, etc.), vous pouvez enregistrer le fichier .pg_service.conf dans le répertoire personnel de l’utilisateur et les clients PostgreSQL en seront automatiquement informés. Par exemple, si l’utilisateur connecté est web, .pg_service.conf doit être enregistré dans le répertoire /home/web/ afin de fonctionner directement (sans spécifier d’autres variables d’environnement).
Vous pouvez indiquer l’emplacement du fichier de service, en créer une variable d’environnement PGSERVICEFILE (ex: lancez la commande export PGSERVICEFILE=/home/web/.pg_service.conf sous votre OS *nix pour créer temporairement la variable PGSERVICEFILE).
Vous pouvez également rendre le fichier de service disponible à l’échelle du système (tous les utilisateurs) en plaçant le fichier .pg_service.conf dans pg_config --sysconfdir ou en ajoutant la variable d’environnement PGSYSCONFDIR et spécifiez le répertoire contenant le fichier de service. Si des définitions de service portant le même nom existent au niveau de l’utilisateur et le fichier système, le fichier utilisateur est prioritaire.
Avertissement Il existe quelques limites sous Windows :
Le fichier de service doit être nommé pg_service.conf et non .pg_service.conf.  Le fichier de service doit être sauvegardé au format Unix pour fonctionner. Un moyen de le garantir est de l’ouvrir avec Notepad++ et d’utiliser Éditer ► Conversion des retours à la ligne ► Format Unix ► Sauvegarder le fichier.
Vous pouvez ajouter des variables d’environnement de différentes manières; un exemple, connu pour fonctionner de manière fiable, est Panneau de configuration ► Système et sécurité ► Système ► Paramètres système avancés ► Variables d’environnement en ajoutant PGSERVICEFILE avec le chemin d’accès - par ex. C:\Users\...\pg_service.conf
Après avoir ajouté une variable d’environnement, vous aurez peut-être besoin de redémarrer l’ordinateur.

Enfin sachez que tous les clients web ne peuvent lire les flux WMS dont l'adresse comporte « REQUEST » et « MAP= »
=>Voici la parade:
Pour ajouter un projet QGIS au serveur nous passons au dossier QGIS Server (ici: C:\OSGeo4W\apps\qgis-ltr) où vous devriez trouver «qgis_mapserv.fcgi» et «wms_metadata.xml». Il est important de créer un dossier par projet (nom_projet.qgs) dans le répertoire bin de Qgis server (C:\OSGeo4W\apps\qgis-ltr\bin\). On va ensuite créer des liens symboliques pour lier qgis_mapserv.fcgi et wms_metadata.xml dans chaque dossier contenant un projet. Le dossier peut être copié directement dans le fichier.

Création de lien symbolique
Qu’est-ce qu’un lien symbolique ?
Les liens symboliques (ou Symlink en anglais) sont des fichiers ou des dossiers « virtuels » qui font référence à un fichier ou un dossier physique situé à un autre emplacement. Comme une copie virtuelle de dossier ou de fichier à un autre emplacement que ce celui d’origine.

On ouvre l’invite de commande Windows en tant qu’administrateur.
Pour créer un lien symbolique entre deux dossiers, nous utiliserons la commande suivante : mklink "Fichier cible" "Fichier d'origine" C:\Windows\System32>mklink C:\OSGeo4W\apps\qgis-ltr\bin\nomdudossier\qgis_mapserv.fcgi.exe C:\OSGeo4W\apps\qgis-ltr\bin\qgis_mapserv.fcgi.exe Ca renvoie : Lien symbolique créé pour C:\OSGeo4W\apps\qgis-ltr\bin\nomdudossier\qgis_mapserv.fcgi.exe <<===>> C:\OSGeo4W\apps\qgis-ltr\bin\qgis_mapserv.fcgi.exe
C:\Windows\System32>mklink C:\OSGeo4W\apps\qgis-ltr\bin\nomdudossier\wms_metadata.xml C:\OSGeo4W\apps\qgis-ltr\bin\wms_metadata.xml Ca renvoie : Lien symbolique créé pour C:\OSGeo4W\apps\qgis-ltr\bin\nomdudossier\wms_metadata.xml <<===>> C:\OSGeo4W\apps\qgis-ltr\bin\wms_metadata.xml
NB : Il est aussi possible de créer un lien symbolique entre l’emplacement réel du projet.qgs et l’emplacement dans le dossier bin de Qgis server comme montré dans la partie 3 et ce sans nécessité de copier-coller le projet dans le répertoire dans le bin de QGIS server. Redémarrez Apache une nouvelle fois.
5. Maintenant, mettez à jour le serveur Apache2 (redémarrer)
6. Générer le flux
http://localhost:port/cgi-bin/nomdudossier/qgis_mapserv.fcgi.exe

J'espère que ces éléments pourront vous aider. Je ne suis pas toujours sur le forum. Vous pouvez me joindre via mon mail.

Bon courage

Hors ligne

 

Pied de page des forums

Powered by FluxBB