Skip to Content

Installer QGIS Server et LizMap sur Linux openSUSE


Ce dossier a pour objectif de mettre en place une plateforme fiable de test pour s’essayer au webmapping via les outils de 3Liz : Lizmap sur Linux. Ces articles ne détailleront pas des règles de sécurité du serveur web, etc.
Le plugin étant à la fois très complet et simple d'utilisation, je vous renvoie directement à la documentation officielle : http://docs.3liz.com/fr/lizmap-plugin/index.html
En fonction des demandes, nous pourrons essayer de combler d'éventuel manque de la doc en réalisant un autre dossier.
Nous utiliserons l’environnement Gnome par défaut mais vous pouvez prendre autre chose, cela ne devrait pas beaucoup vous perturber.

Installation d’openSUSE

Cette distribution ayant une bonne reconnaissance matérielle, vous ne devriez pas avoir de problème. Suivez l’assistant d’installation pour configurer votre machine (en RAID, environnement de bureau, profil, etc)

Concernant le format de fichiers, optez pour de l’Ext4 ou du Btrfs. Ce dernier a l’avantage de pouvoir vous restaurer à chaud votre configuration système à tout moment mais étant encore en développement, on note des performances inférieures qu’avec l’Ext4.

Si vous rencontrez des problèmes concernant le fonctionnement même de la distribution Linux, je ne peux que vous encourager à vous faire aider chez Alionet - https://www.alionet.org

Pour des questions concernant QGIS-Server/LizMap, n’hésitez pas à venir sur le forumSIG - http://www.forumsig.org/

Installation de QGIS Server et de ses dépendances

Sous openSUSE, si un logiciel vous manque (comme QGIS au hasard), il existe un site Internet pour rechercher et installer en un clic les paquets (logiciels) manquants.

Rendez-vous sur http://software.opensuse.org/search

Votre openSUSE démarre, votre matériel fonctionne, on passe donc à l’installation de QGIS-Server. Ce composant est packagé avec QGIS lui-même, nous allons donc taper QGIS sur le site de recherche de paquets. On le sélectionne en tant compte de la version de notre openSUSE (ne jamais prendre factory à moins d’être un utilisateur expérimenté).

Sélectionnez le dépôt Application:Geo qui contient notamment QGIS, PostGIS, GDAL, Grass, etc. Cliquez sur le 1 Click Install et suivez l’assistant. Il va vous ajouter automatiquement dans Yast le dépôt Geography et QGIS

Si vous désirez avoir le support de l’ECW et du JPG2000, il vous faudra passer par un dépôt tiers, toujours sur le site, http://software.opensuse.org/search tapez GDAL et choisissez le dépôt home:jluce2:GEO qui vous installera GDAL avec la libecw 3.3.5 (la dernière version non soumise à licence pour les paquets binaires)

Installation du serveur web et FTP

Passons à l’installation du serveur Apache. La force de cette distribution est que vous pouvez pratiquement tout paramétrer via Yast Nous allons donc lancer ce dernier puis via le menu Installer et supprimer des logiciels

Installez le paquet yast2-http-server et yast2-ftp-server : des icônes s’ajoutent à Yast (Services réseau).

Cliquez sur Serveur HTTP et suivez l’assistant, en quelque clics, vous aurez un serveur web apache2 + php5 + support python. Dans le menu, l’onglet Modules du serveur va vous permettre d’activer ou désactiver des modules d’apache. Dans le doute laissez tout par défaut et si une application ne fonctionne pas activez quelques modules.

Attention, la version de PHP 5.3 pose des problèmes, je n'ai pas pu faire fonctionner LizMap alors que le passage a PHP 5.4 (sans rien reconfigurer a résolu le problème).

Ce que je vous conseille d’activer :

Php5 (dans un premier temps pour tester) si ce n’est pas déjà fait

  • Rewrite
  • Deflate
  • Cache
  • Disk_cache
  • File_cache
  • Actions
  • Cgi

L’onglet Hôte principal vous indique l’ensemble des chemins d’accès. Par défaut sous openSUSE, le serveur web se trouve dans /srv/www

Retournez dans Installer et supprimer des logiciels et installez  apache2-mod-fcgid, php5_gd, php5_pgsql (si vous voulez utiliser les outils d'éditions via PostGIS), php5_fileinfophp5_fastcgi et php5_curl

Pour activer l’extension GD, il faut aller éditer le fichier dans /etc/php5/apache2/php.ini

Recherchez les lignes extensions=php_gd2.dll et enlevé le ; du début de ligne. Faites de même pour les autres extensions que vous souhaitez activer (curl, sqlite, pgsql,zip)

Concernant le FTP, ce sera un jeu d’enfant. Rendez-vous sur l’icône Serveur FTP (toujours dans Yast) et une fois encore, suivez l’assistant. Il est à noter que vous aurez le choix entre 2 serveurs FTP, préférez vsFTPd que PureFTPd qui est plus léger et suffisant pour cet exercice.

N’oubliez pas dans le menu Authentification de cocher Téléchargement de documents activé afin que votre serveur accepte les fichiers que le plugin LizMap de QGIS enverra.

A présent que le serveur web et FTP est en place, il ne reste plus qu’à copier le fichier qgis_mapserv.fcgi  se trouvant dans /usr/bin/ vers /srv/www/cgi-bin

Astuce, vous pouvez redémarrer les services Apache et FTP via les outils graphiques de Yast mais aussi par le terminal. En root (commande su) saisissez :

rcapache2 restart

Au lieu de l’option restart, vous pouvez utiliser start, stop ou status. Utilisez la touche TAB pour que le terminal termine les chemins et les fichiers à votre place (cela réduit les fautes de frappe)

Installation du client web LizMap

Rendez-vous sur le site de lizmap http://www.3liz.com/ et télécharger le LizMap Web Client

Coller le contenu du dossier dans /srv/www/htdocs (à savoir les répertoires lib, lizmap et temp)
Donnez les droits adéquats aux dossiers

cd /srv/www/htdocs
chown -R wwwrun:www temp/ lizmap/var/ lizmap/www
chmod -R 775 temp/ lizmap/var/

Il ne vous reste plus qu’à lancer l’url http://localhost/lizmap/www/admin.php (id : admin, pass : admin)
Si vous obtenez un accès interdit (erreur 403), vous avez un problème de droit.

Il ne vous reste plus qu’à suivre la documentation de l’application
http://docs.3liz.com/fr/lizmap-web-client/index.html

Concernant la configuration LizMap si vous avez suivi ce tutorial, vous devriez indiquer :

URL du serveur WMS
    http://localhost/cgi-bin/qgis_mapserv.fcgi

Répertoire racine du cache
    /srv/www/htdocs/temp/

Et voici l'application en images ....

... et en vidéo :


Optimisation des rasters

Il faut appliquer la même règle pour LizMap que pour un GeoServer par exemple. Considérez que votre travail n’est pas perdu et que ce n’est qu’une habitude à prendre pour vos fonds de plan.

Sur les SIG Web libre, les formats ECW et JP2 ne sont pas très performants et à la différence des SIG bureautiques avec les catalogues d’images, il est conseillé d’avoir une seule et grande image que l’on optimise ensuite de 2 manières :

En faire un GeoTiff unique tuilé en interne avec une compression (LZW, Packbits, JPEG, etc.)

Générer les pyramides d’aperçus (en fonction de la compression, GDAL pourrait vous répondre que ce n'est pas possible)

Selon un document du FOSSLC, le rendu d’un GeoTiff tuilé compressé en JPEG avec GDAL est de 1.9s à 2.4s contre 3.2s à 4.9s pour un JP2 et 3.9s à 5.7s pour un ECW (pour une qualité similaire). Vous aurez donc en amont un travail d’optimisation de vos fonds de plan à effectuer.

Optimisation des vecteurs

A venir dans un dossier ultérieur ...

Optimisation des options lizmap

Coté plugin QGIS vous avez pas mal d’option et il faut bien faire attention à ne pas cocher des options incompatibles entre elles sous peine de perte de performance.

Ainsi, n’utilisez jamais le paramètre Metatile si vous utilisez l’option  Image non tuilée  ou encore pour des couches de type fond de plan et tout particulièrement Raster.

Optimisation d’APACHE -> PASSER APACHE EN MOD FASTCGI

Si vous souhaitez utiliser le mode FastCGI plutôt que le mode par défaut d’apache,

Activez le module du serveur fcgid par l’outil Serveur HTTP. Désactivez le module php5 (il ne sera plus nécessaire puisqu’il passera par PHP-CGI et non plus Apache-PHP5)
Copier/coller le fichier php-cgi situé dans /usr/bin vers /srv/www/cgi-bin

Editer le fichier mod_fcgid.conf dans /etc/apache2/conf.d et décommentez  les lignes dont vous avez besoin en n'oubliant pas d'indiquer le chemin vers php-cgi

<FilesMatch "\.php$">
    AddHandler fcgid-script .php
    Options +ExecCGI
    FcgidWrapper /srv/www/cgi-bin/php-cgi
</FilesMatch>

Pour vérifier que vous êtes bien en mode, copier coller un fichier phpinfo.php quelque part sur votre serveur web et copier/coller le code :

<?php phpinfo(); ?>

Vous verrez ceci si Apache est encore sur la configuration par défaut :

Si vous avez réussi ces manipulations, alors, vous verrez ceci :

Note pour openSUSE : sur certaines distribution apache worker est conseillé par rapport au prefork parce qu’il est en MPM (modules multi-processus). Sur openSUSE, le prefork est également en MPM. De plus la documentation stipule bien de ne pas utiliser PHP et le Worker en même temps sous peine de corruption de flux et donc d’erreurs d’affichage.

Source : http://doc.opensuse.org/documentation/html/openSUSE/opensuse-reference/cha.apache2.html#sec.apache2.modules.mpm.worker

Remerciements

Michaël Douchin, Responsable R&D & Chef de projets, www.3liz.com pour son aide sur l'excellent LizMap

Johann Luce
, Administrateur d’Alionet.org et contributeur openSUSE, www.alionet.org pour ses packages aux petits oignons


Site officiel : Documentation du plugin LizMap
Autres Liens : Documentation de LizMap Web Client
Autres Liens : QGIS Server
Autres Liens : Apache tuning tips
Autres Liens : Tuning GDAL perfomance


Creative Commons License
licence Creative Commons Paternité-Pas d'Utilisation Commerciale-Pas de Modification 2.0 France

Commentaires

A l'utilisateur de voir...

Merci pour la précision,

Comme je l'ai déjà précisé sur Twitter :il est indiqué dans l'article qu'il s'agit de la libecw 3.3.5, la plus ancienne où les sources sont accessibles et où la licence est différente.

--------------------------------------------------------- 

http://trac.osgeo.org/gdal/wiki/ECW

In order to use ECW format with GDAL, you need to download Image Compression SDK from the ERDAS web site. The 4.1 or newer read-only SDK should be available for free download after agreeing to licensing terms. In order to write ECW or JPEG2000 files via the ECW SDK it is necessary to purchase a write enabled version of the SDK from Erdas. 

If the out of date libecwj 3.3 SDK can be found, it can also be used. It has significantly different licensing details. Some tickets and discussion below are related to the 3.3 SDK. 

--------------------------------------------------------- 

A noter aussi que la licence pointe aussi des aspects de type statuts : organisation gouvernemental, éducation, recherche/éducation et entreprise/commercial. A chacun de prendre ses responsabilités  

Je donne l'information car les personnes susceptiblent d'utiliser QGIS en tant que desktop ou server peuvent être intéressé par cet aspect.

Dans notre version de production, il s'agira d'un GeoTif tuilé en interne avec compression (LZW surement) pour nous débarasser de ces licences et d'appliquer les recommandations données dans l'article.

Comme l'a signalé Lud sur Twitter également, l'ECW sera bientôt un mauvais souvenir car l'IGN abandonne l'ECW au profit du JPG2000 à partir de maintenant et on ne peut qu'encourager les personnes susceptibles de commander une prestation d'en faire de même  (attention quand même à la manière dont le JP2 est généré '-_- )

ECW et application serveur

Salut,
Il faudrait vérifier car je ne sais pas quelle version de la bibliothèque ECW est utilisée ici. Mais la plupart des versions de la bibliothèque ont des restrictions très fortes (comprendre : il faut acheter une licence) lorsque l'utilisation en est faite pour un logiciel serveur.
Il faut donc distinguer :
* la distribution des binaires de la libecw (autorisée jusqu'à une certaine version de la bibliothèque)
* L'utilisation de la libecw pour un outil bureautique (type QGIS classique)
* L'utilisation de la libecw pour un outil serveur (qgis server, tel que décrit ici).

Dans le dernier cas suivant les versions, il y a plus de contraintes à respecter...
Vincent

Poster un nouveau commentaire

Le contenu de ce champ sera maintenu privé et ne sera pas affiché publiquement.