Si vous voulez installer QGis Server sur un poste Windows, vous démarrez une longue route semée d’embuches. Tout d’abord, 95% de la documentation est faite pour une installation sous Linux. Deuxièmement, les recherches sur le WEB ramènent des pages de tout temps, la plupart périmées ou obsolètes. Troisièmement, il faut installer plusieurs composants, les configurer et je n’ai pas trouvé d’article qui balaye la totalité des installations.
Alors, en voici un. Il a été écrit le 6 juillet 2017. Il est à jour à cette date, mais si vous le lisez dans plusieurs mois ou années, je vous conseille fortement de chercher un article plus proche de votre temps.
L’objectif est d’installer et de configurer la dernière version disponible de QGIS Server LTR (2.14.x) sur Windows 10 pour une utilisation avec le Client étendu Web QGIS (EQWC). Les composants nécessaires sont les suivants (versions minimales requises):
- Apache 2.4
- PHP 5.5
- PostgresSQL 9.3
- QGIS Server LTR 2.14
Celles-ci sont les version minimales, ce qui veut dire que vous n’aurez pas de problème si vous installez la dernière version disponible de ces composants.
Pour les trois premiers, commencez par installer PostgreSQL. Vous installerez ainsi StackBuilder qui vous permet d’installer Apache et PHP.
Pour l’installation de PostgreSQL référez-vous à l’article correspondant : http://www.sigterritoires.fr/index.php/debuter-avec-postgrespostgis/
Pendant l’installation, vous serez amenés à lancer StackBuilder pour installer Postgis. Vous pouvez profiter pour cocher l’installation d’Apache/PHP à ce moment.
Si vous avez déjà installé PostgreSQL, vous pouvez lancer StackBuilder à partir du menu Applications de Windows.
Lancez StackBuilder et suivez les différents pas de l’installation:
(Placez la souris sur la diapo pour arrêter le défilement.)
[huge_it_gallery id= »5″]Une fois l’installation terminée, testez le bon fonctionnement en rentrant l’adresse localhost:port (port est le numéro de port défini pendant la phase d’installation précédente) dans votre navigateur
Installation de QGis Server LTR 2.14
Suivez le lien suivant http://download.osgeo.org/osgeo4w/ pour accéder au répertoire des installations de QGis Server.
Selon votre processeur, choisissez soit osgeo4w-setup-x86.exe si vous avez un processeur 32 bits, soit osgeo4w-setup-x86_64.exe si vous avez un processeur 64 bits.
Placez la souris sur la diapo pour arrêter le défilement.
Configuration d’Apache
Tout d’abord, il faut éditer le fichier http.conf d’Apache que vous trouverez dans C:\Program Files (x86)\PostgreSQL\EnterpriseDB-ApachePHP\apache\conf si vous avez respecté les étapes d’installation décrites ci-dessus, ou bien dans le répertoire d’installation que vous avez défini.
1 – Modifiez le ScriptAlias
Recherchez la ligne
Remplacez-là par
2- Recherchez le paragraphe <Directory>
AllowOverride None
Options None
Require all granted
</Directory>
Remplacez-le par:
SetHandler cgi-script
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
Require all granted
</Directory>
3-Modifiez le cgi handler
Cherchez la ligne:
Remplacez-la par
(Notez l’absence de # en début de ligne)
4-Ajoutez un correctif pour Internet Explorer
Copiez les lignes suivantes à la fin du fichier http.conf
# when serving requests from Internet Explorer 10/11.
# see http://stijndewitt.wordpress.com/2014/01/10/apache-hangs-ie11/
AcceptFilter http none
AcceptFilter https none
5-Ajoutez les variables QGis server
Copiez les lignes suivantes à la fin du fichier http.conf
SetEnv QGIS_AUTH_DB_DIR_PATH "C:\OSGeo4W64\apps\qgis-ltr\resources"
SetEnv PYTHONHOME "C:\OSGeo4W64\apps\Python27"
SetEnv PATH "C:\OSGeo4W64\bin;C:\OSGeo4W64\apps\qgis-ltr\bin;C:\OSGeo4W64\apps\grass\grass-@grassversion@\bin;C:\OSGeo4W64\apps\grass\grass-@grassversion@\lib;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem”
SetEnv QGIS_PREFIX_PATH "C:\OSGeo4W64\apps\qgis-ltr"
SetEnv QT_PLUGIN_PATH "C:\OSGeo4W64\apps\qgis-ltr\qtplugins;C:\OSGeo4W64\apps\qt4\plugins"
6-Activez le module rewrite
Ceci est nécessaire pour le Client WEB QGis étendu. Copiez ces lignes en fin du fichier httpd.conf
RewriteEngine On
RewriteRule ^/proxy/(.+)$ /gisapp/admin/qgisproxy.php?map=$1.qgs [QSA,PT] RewriteRule ^/gisapp/([^\.]+)$ /gisapp/index.php [PT]
7-Testez l’installation
Vous devez arrêter et redémarrer le service Apache. Si vous venez de subir la dernière grosse mise à jour de Windows 10, sachez que le panneau de configuration a disparu définitivement. Pour accéder à la fenêtre « Service » vous devez maintenant ouvrir le menu Windows (clic droit):
Dans la fenêtre exécuter rentrez control pour avoir le panneau de configuration ou bien services.msc pour avoir directement la fenêtre des services.
Dans le panneau de configuration -> Outils d’administration -> Services cherchez le service EnterpriseDB ApachePHP et faites Redémarrer.
Pour vérifier que votre serveur QGis fonctionne, ouvrez votre navigateur et rentrez l’url suivante (attention au numéro de port: ici 8081 mais sur votre installation il peut être différent)
Vous devez avoir en retour une page en XML du style:
Voilà! On a fini de configurer Apache. Mais le boulot n’est pas fini. Pour utiliser QGis server il faut installer maintenant gisapp, la partie serveur du client WEB QGis.
Installation de gisapp
Téléchargez gisapp à partir du lien suivant https://github.com/uprel/gisapp/releases/latest
Les répertoires et fichier téléchargés doivent être copiés dans le répertoire d’installation d’Apache, dans le sous-répertoire www:
C:\Program Files (x86)\PostgreSQL\EnterpriseDB-ApachePHP\apache\www\gisapp
si vous avez suivi les installations du début de cet article.
Configurer votre base de données PostgreSQL
Vous aurez besoin d’une base de données PostgreSQL/Postgis pour stocker les données de QGis server. Vous pouvez utiliser une déjà existante, ou créer une particulière. Pour le reste de cet article nous utiliserons une base que nous appelerons qgisserv. Vous pouvez aussi créer les différents utilisateurs à ce stade. Si vous ne savez pas comment installer PostgreSQL/Postgis sur votre poste, référez-vous à l’article http://www.sigterritoires.fr/index.php/debuter-avec-postgrespostgis/ . Pour la création et insertion de données dans votre base, référez-vous à l’article http://www.sigterritoires.fr/index.php/debuter-avec-postgrsqlpostgis-introduction-a-pgadmin3/.
Pour configurer la base de données que vous utiliserez avec QGis server, avec pgAdmin 4, créez une nouvelle base de données appelée qgisserver.
Sélectionnez cette nouvelle base. Ouvrez une fenêtre SQL, puis avec le bouton « Ouvrir un fichier », chargez le fichier C:\Program Files (x86)\PostgreSQL\EnterpriseDB-ApachePHP\apache\www\gisapp\_scripts\_setup.sql
Exécutez-le. C’est fini pour cette étape.
Configuration de gisapp
1- Modification du fichier settings.php
Allez dans le répertoire ...apache/www/gisapp/admin
Recopiez le fichier settings_windows.php en settings.php
Ouvrez le fichier avec notepad++ (ou un autre éditeur, mais il faut qu’il puisse gérer les droits d’administration)
Il faut modifier ce fichier pour paramétrer votre installation:
<?php
/**
* settings.php — part of Server side of Extended QGIS Web Client
*
* Copyright (2014-2015), Level2 team All rights reserved.
* More information at https://github.com/uprel/gisapp
*/
//2 letter language code defining default language if not provided with url paramater lang
//language must be part of translated languages for EQWC
define(‘DEFAULT_LANG’, ‘en’);
//true loads source javascript files, false loads single minified version for production
define(‘DEBUG’, false);
//database connection
define(‘DB_CONN_STRING’, ‘pgsql:host=localhost;port=5432;dbname=gisapp’);
//db user
define(‘DB_USER’, ‘username’);
define(‘DB_PWD’, ‘password’);
//project location
define(‘PROJECT_PATH’, ‘C:/Apache24/apache/www/gisapp/_demo/’);
//superuser, currently irrelevant
define(‘SUPERUSER’, ‘gisadmin’);
//qgis server, check your port, if you are using default port 80, then simply go: /localhost/cgi-bin…
define(‘QGISSERVERURL’, ‘http://localhost:8080/cgi-bin/qgis_mapserv.fcgi.exe’);
//other settings
define(‘OGR2OGR’, ‘C:/OSGeo4W64/bin/ogr2ogr’);
define(‘TEMP_PATH’, ‘C:/Windows/Temp/’);
define(‘GISAPPURL’, ‘/gisapp/’); //for now this one should not change!
Le suivant c’est le fichier modifié en prenant en compte les installations et configurations de cet article. Vérifiez attentivement que les différentes variables correspondent bien à votre installation (n’oubliez surtout pas le numéro de port d’apache)
/**
* settings.php — part of Server side of Extended QGIS Web Client
*
* Copyright (2014-2015), Level2 team All rights reserved.
* More information at https://github.com/uprel/gisapp
*/
//2 letter language code defining default language if not provided with url paramater lang
//language must be part of translated languages for EQWC
define(‘DEFAULT_LANG’, ‘en’);
//true loads source javascript files, false loads single minified version for production
define(‘DEBUG’, false);
//database connection
define(‘DB_CONN_STRING’, ‘pgsql:host=localhost;port=5433;dbname=qgiserv’);
//db user
define(‘DB_USER’, ‘nomutilisateur’);
define(‘DB_PWD’, ‘motdepasse’);
//project location
define(‘PROJECT_PATH’, ‘C:/Program Files (x86)/PostgreSQL/EnterpriseDB-ApachePHP/apache/www/gisapp/_demo/’);
//superuser, currently irrelevant
define(‘SUPERUSER’, ‘gisadmin’);
//qgis server, check your port, if you are using default port 80, then simply go: /localhost/cgi-bin…
define(‘QGISSERVERURL’, ‘http://localhost:8081/cgi-bin/qgis_mapserv.fcgi.exe’);
//other settings
define(‘OGR2OGR’, ‘C:/OSGeo4W64/bin/ogr2ogr’);
define(‘TEMP_PATH’, ‘C:/Windows/Temp/’);
define(‘GISAPPURL’, ‘/gisapp/’); //for now this one should not change!
2-Test final
Dans votre navigateur, rentrez l’url suivante
http://localhost:8081/gisapp/helloworld?public=on&lang=en
(Vérifiez que le port est celui que vous utilisez)
Vous devez obtenir le résultat suivant:
A partir de là, c’est un tutoriel de comment utiliser QGis Server qu’il vous faut. Bon courage!
> attention au numéro de port: ici 8081
Exact pour les illustrations, par contre le script qui suit utilise le 8080.
Bonjour,
Et merci pour ce tuto.
Un détail m’échappe cependant.
Vous dites « Les répertoires et fichier téléchargés doivent être copiés dans le répertoire d’installation d’Apache, dans le sous-répertoire htdocs:
C:\Program Files (x86)\PostgreSQL\EnterpriseDB-ApachePHP\apache\www\gisapp »
mais htdocs n’est pas dans apache\www
puis :
« Allez dans le répertoire …apache/htdocs/gisapp/admin »
Où faut-il installer gisapp ?
Dans apache\www ou dans apache\htdocs svp ?
Merci.
Désolé, c’est dans apache/www
Je corrige l’article
Bonjour,
J’ai suivi votre tuto pas à pas.
Apache est correctement paramétré ainsi que PostgreSQL.
Par contre, côté gisapp… j’ai une erreur HTTP404 : RESSOURCE MANQUANTE.
J’ai vérifié le fichier settings.php, login/pwd, numéro de port et nom de BDD sont bien configurés.
Auriez-vous une idée où chercher svp ?
Merci
Il faut savoir qu’est-ce qui manque…
Je suppose que c’est au moment du test de hello world.
Ouvrez la console de votre navigateur pour avoir un message d’erreur complet, avec mention de la ressource qui manque
Dans la console, il y a :
HTML1300 : une navigation s’est produite helloworld
HTTP404 : RESSOURCE MANQUANTE. Le serveur n’a trouvé aucune correspondance pour l’URI demandé. GET – http://localhost:8081/gisapp/helloworld?public=on&lang=en
HTML1524 : DOCTYPE HTML5 non valide. Utilisez plutôt le formulaire intéropérable « »
Bonjour,
Lorsque je teste l’URL ‘http://localhost/gisapp/helloworld?public=on&lang=en’, j’ai une erreur d’objet non trouvé.
« L’URL demandée n’a pas pu être trouvée sur ce serveur. »
Je pense que cela est lié au répertoire dans lequel j’ai déposé mon arborescence gisapp.
Pour mon serveur Apache, je suis passé par une installation XAMPP. De fait, je n’ai pas de répertoire www dans l’arborescence de mon dossier Apache.
Où faut-il donc que je place mon dossier gisapp pour que mon serveur web la trouve ?
Merci d’avance.
J’avais déjà essayé de l’ajouter dans « GISAPPURL » dans le fichier php mais ça ne fonctionnait pas.
Et malheureusement, même en le rajoutant dans l’URL, j’ai toujours la même erreur et le même résultat…
Il faut vérifier où se trouve le fichier helloworld.qgs
Si vous avez installé gisapp dans C:\Program Files (x86)\PostgreSQL\EnterpriseDB-ApachePHP\apache\www\gisapp il doit se trouver dans C:\Program Files (x86)\PostgreSQL\EnterpriseDB-ApachePHP\apache\www\gisapp\_demo
C’est effectivement bien là qu’il se trouve et le chemin est correct. J’ai vérifié les droits sur le répertoire où il se trouve. J’ai ouvert sans problème le fichier dans Qgis pour vérifier qu’il n’était pas endommagé.
Vous êtes sûr d’avoir installé Apache sur le port 8081 et ps 8080?
oui c’est bien le port 8081
J’ai essayé de reproduire votre erreur, mais je n’arrive pas. je ne sais pas d’où ça peut venir…
Je vais continuer à chercher ce qui peut coincer de mon côté.
J’ai trouvé ceci dans le journal des erreurs d’Apache :
Warning 1: Unable to find driver ECW to unload from GDAL_SKIP environment variable.\r: C:/OSGeo4W64/apps/qgis-ltr/bin/qgis_mapserv.fcgi.exe
Warning 1: Unable to find driver JP2ECW to unload from GDAL_SKIP environment variable.\r: C:/OSGeo4W64/apps/qgis-ltr/bin/qgis_mapserv.fcgi.exe
mais je ne sais qu’en faire !
Je ne sais pas non plus, mais ces erreurs n’ont rien à avoir avec votre problème. Vous n’essayez pas de charger une image compressée, donc…
Est-ce que vous avez bien installé aussi la version QGis Desktop avec Stackbuilder? Le fait d’avoir déjà QGis desktop installé ne change pas cet impératif (sauf si vous avez installé la version desktop d’OSGeo4W64).
Qgis a été installé via Osgeo4W
Bonjour,
Info pour ceux qui ont des problèmes de DLL : si votre système est en 64 bits, n’installez pas la version 32 bits.
J’ai d’abord tout installé en 32 bits et qgis server ne fonctionnait pas (dll manquantes : qt4xml.dll puis qt4core puis qca.dll…).
Après désinstallation complète puis réinstallation en 64 bits (OSGeo4Win64 donc), ça fonctionne !
Pourquoi avoir installé la version 32 bits en premiers ? Parce qu’il arrive encore que ces versions contiennent plus de composants/plugins, et je n’ai pas besoin de trop de RAM.
En tout cas merci pour cette doc.
Bonjour,
J’ai réussi à passer toutes les étapes et éliminer les erreurs une par une.
Au final le Hello World de Gisapp me renvoit une page blanche…
Je sais les indices sont minces mais quelqu’un aurait-il une idée sur les raisons qui font que Gisapp ne me renvoit pas la page Hello World ?
Bonjour,
J’ai moi aussi passe toutes les etapes sauf 2.
1- Mon premier echec se trouve a ce niveau : « http://localhost:8080/cgi-bin/qgis_mapserv.fcgi.exe?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities ». Mon port est le 8080, et j’ai le message d’erreur suivant : « Forbidden. You don’t have permission to access this resource »
2- J’ai continue pour configurer le gisapp mais le test echoue avec le message suivant « Not found. The URL requested was not found on this server ».
Merci de me donner un coup de main
Bonjour,
J’ai créé une authentification htpasswd dans apache pour le serveur qgis, comment puis-je transmettre le nom d’utilisateur et le mot de passe à lizmap ? Pouvez-vous m’aider s’il vous plaît.
Bien Cordialement