Installer QGis Server sous Windows 10

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.)

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.

Attention! Dans la fenêtre Select packages vous DEVEZ sélectionner, en plus du package WEB -> qgis-ltr-server:QGis server (long term release), le package DESKTOP -> qgis:QGIS Desktop. Si vous ne le faites pas, il y a des dépendances qui ne seront pas installées et votre QGis Server ne fonctionnera pas.

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

ScriptAlias /cgi-bin/ "C:\Program Files (x86)\PostgreSQL\EnterpriseDB-ApachePHP/apache/cgi-bin/" (ou la ligne commençant par ScriptAlias /cgi-bin/ si vous avez installé Apache dans un autre répertoire).

Remplacez-là par

ScriptAlias /cgi-bin/ "c:/OSGeo4W64/apps/qgis-ltr/bin/"

2- Recherchez le paragraphe <Directory>

<Directory "C:\Program Files (x86)\PostgreSQL\EnterpriseDB-ApachePHP/apache/cgi-bin">
AllowOverride None
Options None
Require all granted
</Directory>

Remplacez-le par:

<Directory "c:\OSGeo4W64\apps\qgis-ltr\bin">
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:

#AddHandler cgi-script .cgi

Remplacez-la par

AddHandler cgi-script .cgi .pl .exe

(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

# Apparently this fixes an issue with Apache 2.4.6 on Windows hanging
# 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 GDAL_DATA "C:\OSGeo4W64\share\gdal"
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

LoadModule rewrite_module modules/mod_rewrite.so
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)

http://localhost:8081/cgi-bin/qgis_mapserv.fcgi.exe?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities

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)

<?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=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!

18 réflexions sur « Installer QGis Server sous Windows 10 »

  1. 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.

      1. 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

        1. 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

  2. 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…

    1. 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

      1. 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é.

          1. 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 !

          2. 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).

  3. 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.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *