Un premier contact avec Lizmap

Il y a déjà trois ans (ça passe vraiment vite) je cherchais à comprendre le rôle de QGIS-server et comment l’installer, ce qui aboutissait à l’écriture de cet article, davantage conçu comme un petit aide-mémoire personnel que comme un vrai tutoriel.

Si vous avez lu cet article, vous aurez compris que QGIS-server est une application qui permet de mettre en ligne des projets réalisés avec QGIS afin de les rendre accessibles à d’autres utilisateurs de QGIS via les protocoles WMS et WFS.

Mais admettons, cette fois, que vous souhaitiez rendre accessible votre projet au grand public, autrement dit à tout un tas de gens qui n’ont jamais utilisé QGIS (oui, les gens sont bizarres).

Il faudrait, pour cela, que votre projet soit visible dans un simple navigateur,  via une interface qui permette de le visualiser, d’afficher ou masquer les couches, etc.

C’est justement ce que fait Lizmap.

Qu’est-ce que Lizmap ?

L’image suivante vient du site officiel.

Il faut l’expliquer un peu, car si le schéma est assez clair, le rôle de Lizmap n’y apparaît pas clairement du tout. C’est un comble.

Commençons en haut à gauche, et suivons les flèches :

- Vous créez un projet avec QGIS.
- Vous l’envoyez sur votre serveur par FTP (ou SCP).
- Sur votre serveur, tourne l’application QGIS-server qui permet d’accéder au projet via le protocole WMS.
- Vous et vos amis, ou collègues, accédez donc au projet avec QGIS.

On a fait le tour de la boucle et tout est clair.

Il manque juste cette petite branche, en bas à droite, qu’on n’a pas explorée : cette branche qui semble indique qu’on peut également accéder au projet via le protocole WMS dans un simple navigateur…

En fait, on peut, mais à condition d’installer Lizmap sur le serveur. Le mot « Lizmap » devrait figurer sur le schéma, sous la flèche en bas à gauche.

Vous l’aurez compris : Lizmap est une application web, en PHP, qui s’installe sur un serveur où tourne déjà QGIS-server, et qui permet d’accéder aux projets à l’aide d’un simple navigateur.

Comment l’installer ?

La documentation se trouve ici.

Je vais donc la suivre, mais en adaptant à mon serveur.

La doc commence par parler des locales. Sur mon serveur ça doit être OK. Je saute cette étape.

Ensuite, la doc propose d’installer ceci.

apt-get install xauth htop curl apache2 libapache2-mod-fcgid libapache2-mod-php5 php5-cgi php5-gd php5-sqlite php5-curl php5-xmlrpc python-simplejson python-software-properties

Je le fais. Certains paquets étaient déjà présents sur mon serveur, d’autres non.

Ensuite, la doc parle d’activer PHP. Chez moi c’est déjà activé alors je ne touche à rien.

Après, ça parle de MPM worker. Je ne sais pas trop ce que c’est, mais dans cette doc je lis : « 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. »

Chez moi c’est Debian, mais un « grep -r mpm » dans /etc/apache2/ me montre que j’ai mpm_worker et mpm_prefork alors je pense que c’est pareil. Je décide donc de faire confiance à la configuration par défaut de Debian. Je ne touche à rien.

Après, ça parle de configurer mod_fcgid pour que QGIS-server puisse tourner. Puisque chez moi il tourne déjà, j’en déduis qu’il n’y a pas de raison de toucher à ça.

Après, il faut configurer la compression. Ça, je vais le faire.

La doc dit d’éditer /etc/apache2/conf-available/mod_deflate.conf mais je n’ai aucun fichier portant ce nom (dans ce répertoire là, ou ailleurs dans /etc). Je vais donc le créer, après avoir vérifié que j’ai bien un mode qui s’appelle deflate en tapant la commande suivante :

root@serveur:/etc/apache2# a2enmod deflate
Considering dependency filter for deflate:
Module filter already enabled
Module deflate already enabled

Vu sa réponse, j’ai bien ce mode et il est déjà activé.

J’ajoute donc ceci dans /etc/apache2/conf-available/mod_deflate.conf nouvellement créé :

<Location />
        # Insert filter
        SetOutputFilter DEFLATE
        # Netscape 4.x encounters some problems ...
        BrowserMatch ^Mozilla/4 gzip-only-text/html
        # Netscape 4.06-4.08 encounter even more problems
        BrowserMatch ^Mozilla/4\.0[678] no-gzip
        # MSIE pretends it is Netscape, but all is well
        BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
        # Do not compress images
        SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
        # Ensure that proxy servers deliver the right content
        Header append Vary User-Agent env=!dont-vary
</Location>

Je relance apache.

service apache2 restart

Pas d’erreur. On continue.

La doc parle ensuite de géolocalisation et d’un service faisant appel à Google. Je n’ai pas besoin de géolocalisation et pas envie de passer par Google, alors je saute cette étape.

Les étapes suivantes de la doc (créer des répertoires pour les données, et installer et configurer PostgreSQL et PostGIS) sont déjà faites sur mon serveur. Je n’ai pas non plus besoin de serveur FTP car j’utilise SCP. QGIS-server est déjà installé sur ma machine. Que d’étapes sautées en peu de temps !

On en arrive au téléchargement de Lizmap.

En root, je me place là où je souhaite installer Lizmap, dans un répertoire qui correspond, sur mon serveur, à un virtual host. Ainsi, quand je taperai sig.monserveur.org je tomberai sur Lizmap. Je ne détaillerai pas la configuration d’un vhost ici. La documentation est abondante sur internet.

cd /var/www/sig/

J’attrape la dernière version de Lizmap.

wget https://github.com/3liz/lizmap-web-client/archive/3.1.8.tar.gz

Ne copiez-collez pas ma commande. Allez plutôt chercher vous-même la dernière version ici.

Je fais un lien, comme préconisé par la documentation, en adaptant le chemin au mien.

ln -s /var/www/sig/lizmap-web-client-3.1.8/lizmap/www/ /var/www/sig/lm

L’adresse de mon Lizmap sera donc sig.monserveur.org/lm.

Je crée les fichiers de configuration en copiant-collant ces commandes depuis la doc.

Il y a déjà trois ans (ça passe vraiment vite) je cherchais à comprendre le rôle de QGIS-server et comment l’installer, ce qui aboutissait à l’écriture de cet article, davantage conçu comme un petit aide-mémoire personnel que comme un vrai tutoriel.

Si vous avez lu cet article, vous aurez compris que QGIS-server est une application qui permet de mettre en ligne des projets réalisés avec QGIS afin de les rendre accessibles à d’autres utilisateurs de QGIS via les protocoles WMS et WFS.

Mais admettons, cette fois, que vous souhaitiez rendre accessible votre projet au grand public, autrement dit à tout un tas de gens qui n’ont jamais utilisé QGIS (oui, les gens sont bizarres).

Il faudrait, pour cela, que votre projet soit visible dans un simple navigateur,  via une interface qui permette de le visualiser, d’afficher ou masquer les couches, etc.

C’est justement ce que fait Lizmap.

Qu’est-ce que Lizmap ?

L’image suivante vient du site officiel.

Il faut l’expliquer un peu, car si le schéma est assez clair, le rôle de Lizmap n’y apparaît pas clairement du tout. C’est un comble.

Commençons en haut à gauche, et suivons les flèches :

- Vous créez un projet avec QGIS.
- Vous l’envoyez sur votre serveur par FTP (ou SCP).
- Sur votre serveur, tourne l’application QGIS-server qui permet d’accéder au projet via le protocole WMS.
- Vous et vos amis, ou collègues, accédez donc au projet avec QGIS.

On a fait le tour de la boucle et tout est clair.

Il manque juste cette petite branche, en bas à droite, qu’on n’a pas explorée : cette branche qui semble indique qu’on peut également accéder au projet via le protocole WMS dans un simple navigateur…

En fait, on peut, mais à condition d’installer Lizmap sur le serveur. Le mot « Lizmap » devrait figurer sur le schéma, sous la flèche en bas à gauche.

Vous l’aurez compris : Lizmap est une application web, en PHP, qui s’installe sur un serveur où tourne déjà QGIS-server, et qui permet d’accéder aux projets à l’aide d’un simple navigateur.

Comment l’installer ?

La documentation se trouve ici.

Je vais donc la suivre, mais en adaptant à mon serveur.

La doc commence par parler des locales. Sur mon serveur ça doit être OK. Je saute cette étape.

Ensuite, la doc propose d’installer ceci.

apt-get install xauth htop curl apache2 libapache2-mod-fcgid libapache2-mod-php5 php5-cgi php5-gd php5-sqlite php5-curl php5-xmlrpc python-simplejson python-software-properties

Je le fais. Certains paquets étaient déjà présents sur mon serveur, d’autres non.

Ensuite, la doc parle d’activer PHP. Chez moi c’est déjà activé alors je ne touche à rien.

Après, ça parle de MPM worker. Je ne sais pas trop ce que c’est, mais dans cette doc je lis : « 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. »

Chez moi c’est Debian, mais un « grep -r mpm » dans /etc/apache2/ me montre que j’ai mpm_worker et mpm_prefork alors je pense que c’est pareil. Je décide donc de faire confiance à la configuration par défaut de Debian. Je ne touche à rien.

Après, ça parle de configurer mod_fcgid pour que QGIS-server puisse tourner. Puisque chez moi il tourne déjà, j’en déduis qu’il n’y a pas de raison de toucher à ça.

Après, il faut configurer la compression. Ça, je vais le faire.

La doc dit d’éditer /etc/apache2/conf-available/mod_deflate.conf mais je n’ai aucun fichier portant ce nom (dans ce répertoire là, ou ailleurs dans /etc). Je vais donc le créer, après avoir vérifié que j’ai bien un mode qui s’appelle deflate en tapant la commande suivante :

root@serveur:/etc/apache2# a2enmod deflate
Considering dependency filter for deflate:
Module filter already enabled
Module deflate already enabled

Vu sa réponse, j’ai bien ce mode et il est déjà activé.

J’ajoute donc ceci dans /etc/apache2/conf-available/mod_deflate.conf nouvellement créé :

<Location />
        # Insert filter
        SetOutputFilter DEFLATE
        # Netscape 4.x encounters some problems ...
        BrowserMatch ^Mozilla/4 gzip-only-text/html
        # Netscape 4.06-4.08 encounter even more problems
        BrowserMatch ^Mozilla/4\.0[678] no-gzip
        # MSIE pretends it is Netscape, but all is well
        BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
        # Do not compress images
        SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
        # Ensure that proxy servers deliver the right content
        Header append Vary User-Agent env=!dont-vary
</Location>

Je relance apache.

service apache2 restart

Pas d’erreur. On continue.

La doc parle ensuite de géolocalisation et d’un service faisant appel à Google. Je n’ai pas besoin de géolocalisation et pas envie de passer par Google, alors je saute cette étape.

Les étapes suivantes de la doc (créer des répertoires pour les données, et installer et configurer PostgreSQL et PostGIS) sont déjà faites sur mon serveur. Je n’ai pas non plus besoin de serveur FTP car j’utilise SCP. QGIS-server est déjà installé sur ma machine. Que d’étapes sautées en peu de temps !

On en arrive au téléchargement de Lizmap.

En root, je me place là où je souhaite installer Lizmap, dans un répertoire qui correspond, sur mon serveur, à un virtual host. Ainsi, quand je taperai sig.monserveur.org je tomberai sur Lizmap. Je ne détaillerai pas la configuration d’un vhost ici. La documentation est abondante sur internet.

cd /var/www/sig/

J’attrape la dernière version de Lizmap.

wget https://github.com/3liz/lizmap-web-client/archive/3.1.8.tar.gz

Ne copiez-collez pas ma commande. Allez plutôt chercher vous-même la dernière version ici.

Je fais un lien, comme préconisé par la documentation, en adaptant le chemin au mien.

ln -s /var/www/sig/lizmap-web-client-3.1.8/lizmap/www/ /var/www/sig/lm

L’adresse de mon Lizmap sera donc sig.monserveur.org/lm.

Je crée les fichiers de configuration en copiant-collant ces commandes depuis la doc.

cd lizmap/var/config 
cp lizmapConfig.ini.php.dist lizmapConfig.ini.php 
cp localconfig.ini.php.dist localconfig.ini.php 
cp profiles.ini.php.dist profiles.ini.php 
cd ../../..

Là, la doc n’est pas très précise. Elle indique d’adapter la configuration à notre installation, mais sans en dire plus. Je regarde mais ne trouve rien à modifier.

Je lance donc l’installateur.

php lizmap/install/installer.php

Et comme ça ne coûte rien, je relance un coup ce script puisqu’ils disent qu’il faut le faire si on a une erreur 500.

lizmap/install/set_rights.sh www-data www-data

Pour terminer, je teste Lizmap en y accédant par http://sig.monserveur.org/lm. Cela fonctionne. Le nom d’utilisateur et le mot de passe par défaut sont tous les deux « admin ». Inutile de préciser que je les change immédiatement.

Comment ajouter un projet QGIS dans Lizmap ?

Je crois que mon article est assez long comme ça, alors je vais le publier et en écrire un autre pour la suite des opérations.

 

Ce contenu a été publié dans Astuces, Informatique. Vous pouvez le mettre en favoris avec ce permalien.

Une réponse à Un premier contact avec Lizmap

  1. Sylvain dit :

    Articles intéressant merci !
    (je crois qu’il y a un soucis de copier/coller et qu’une partie du corps est en double !)

Laisser un commentaire

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

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>