Installation de Lizmap sous Linux Debian ou Ubuntu
Note
Si vous voulez installer rapidement pour tester Lizmap Web Client en quelques étapes, suivez ces instructions.
Configuration générique du serveur avec serveur Nginx
La documentation fournie un exemple pour configurer un serveur avec la distribution Debian 9. Nous supposons que vous avez un système fraîchement installé et mis à jour.
Avertissement
Cette page ne décrit pas comment sécuriser votre serveur Nginx. C’est juste pour une démonstration.
Configurer les locales
Pour simplifier les choses, il est intéressant de configurer le serveur avec l’encodage par défaut UTF-8.
# configure locales
locale-gen fr_FR.UTF-8 #replace fr with your language
dpkg-reconfigure locales
# define your timezone [useful for logs]
dpkg-reconfigure tzdata
apt install ntp ntpdate
Note
Il faudra aussi configurer les autres logiciels pour qu’ils utilisent cet encodage par défaut si ce n’est pas le cas.
Installation des paquets nécessaires
Avertissement
Lizmap Web Client s’appuie sur Jelix 1.6. Vous devez installer au minimum la version 5.6 de PHP. Les extensions dom, simplexml, pcre, session, tokenizer et spl sont requises (elles sont actives en général dans une installation standard de PHP 5.6/7.x).
sudo su # only necessary if you are not logged in as root
apt update # update package lists
apt-get install curl openssl libssl1.1 nginx-full nginx nginx-common
Sur un système Debian 10, installez ces paquets :
apt-get install php7.3-fpm php7.3-cli php7.3-bz2 php7.3-curl php7.3-gd php7.3-intl php7.3-json php7.3-mbstring php7.3-pgsql php7.3-sqlite3 php7.3-xml php7.3-ldap
Sur un système Ubuntu 18.04 ou plus, installez ces paquets :
apt-get install php7.3-fpm php7.3-cli php7.3-bz2 php7.3-curl php7.3-gd php7.3-intl php7.3-json php7.3-mbstring php7.3-pgsql php7.3-sqlite3 php7.3-xml php7.3-ldap
Configuration web
Créez un nouveau fichier /etc/nginx/sites-available/lizmap.conf :
server {
listen 80;
server_name localhost;
root /var/www/html/lizmap;
index index.php index.html index.htm;
# compression setting
gzip_vary on;
gzip_proxied any;
gzip_comp_level 5;
gzip_min_length 100;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript text/json;
location / {
try_files $uri $uri/ =404;
}
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+\.php)(/.*)$;
set $path_info $fastcgi_path_info; # because of bug http://trac.nginx.org/nginx/ticket/321
try_files $fastcgi_script_name =404;
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $path_info;
fastcgi_param PATH_TRANSLATED $document_root$path_info;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
fastcgi_param SERVER_NAME $http_host;
}
}
Vous devez déclarer un domaine lizmap.local quelque part (dans votre fichier /etc/hosts, ou sur vos DNS), ou remplacez le par votre propre nom de domaine.
Activez l’hôte virtuel que vous venez juste de créer.
ln -s /etc/nginx/sites-available/lizmap.conf /etc/nginx/sites-enabled/lizmap.conf
Configuration générique du serveur avec serveur Apache2
Pour installer QGIS Serveur sur apache, référez-vous à la documentation officielle QGIS https://docs.qgis.org/latest/en/docs/server_manual/index.html
Installation des paquets nécessaires
Avertissement
Lizmap Web Client s’appuie sur Jelix 1.6. Vous devez installer au minimum la version 5.4 de PHP. Les extensions dom, simplexml, pcre, session, tokenizer et spl sont requises (elles sont actives en général dans une installation standard de PHP 5.4).
Note
La version actuelle prend en charge PHP 7, donc il devrait y être avant de l’installer sur Debian 9 ou ubuntu 16.04.
sudo su # only necessary if you are not logged in as root
apt update # update package lists
Sur un système Debian 10, installez ces paquets :
apt install php7.3-fpm php7.3-cli php7.3-bz2 php7.3-curl php7.3-gd php7.3-intl php7.3-json php7.3-mbstring php7.3-pgsql php7.3-sqlite3 php7.3-xml php7.3-ldap
Sur Ubuntu 18.04 LTS
apt install xauth htop curl libapache2-mod-fcgid libapache2-mod-php7.3 php7.3-cgi php7.3-gd php7.3-sqlite php7.3-curl php7.3-xmlrpc python-simplejson software-properties-common
Activer la géolocalisation
Le système de géolocalisation automatique fourni par lizmap est basé sur les services de Google. Pour l’activer, votre application WebSIG doit être accessible grâce à un protocole sécurisé comme https. Pour plus d’informations :
Redémarrer Nginx
Vous devez redémarrer le serveur Nginx pour valider la configuration.
service nginx restart
Création des répertoires pour les données
Les fichiers QGIS et les autres fichiers de cache seront stockés dans ces répertoires.
mkdir /home/data
mkdir /home/data/cache/
# optional
mkdir /home/data/ftp
mkdir /home/data/ftp/template/
mkdir /home/data/ftp/template/qgis
Base de données spatiale : PostgreSQL
Note
La section est optionnelle, mais est requise si vous voulez activer l’édition des capacités sur une couche. Voir Pré-requis.
Il peut être très intéressant d’utiliser PostGreSQL et PostGIS pour gérer les données spatiales de manière centralisée sur le serveur.
Installation
# Install packages
apt-get install postgresql postgresql-contrib postgis pgtune
# A cluster is created in order to specify the storage directory
mkdir /home/data/postgresql
service postgresql stop
pg_dropcluster --stop 9.6 main
chown postgres:postgres /home/data/postgresql
pg_createcluster 9.6 main -d /home/data/postgresql --locale fr_FR.UTF8 -p 5678 --start
# Creating a "superuser" user
su - postgres
createuser myuser --superuser
# Modifying passwords
psql
ALTER USER postgres WITH ENCRYPTED PASSWORD '************';
ALTER USER myuser WITH ENCRYPTED PASSWORD '************';
\q
exit
Adapatation de la configuration de PostgreSQL
Nous utiliserons pgtune
, un utilitaire qui peut générer automatiquement un fichier de configuration PostgreSQL adapté aux propriétés du serveur (mémoire, processeurs, etc.)
# PostgreSQL Tuning with pgtune
pgtune -i /etc/postgresql/9.6/main/postgresql.conf -o /etc/postgresql/9.6/main/postgresql.conf.pgtune --type Web
cp /etc/postgresql/9.6/main/postgresql.conf /etc/postgresql/9.6/main/postgresql.conf.backup
cp /etc/postgresql/9.6/main/postgresql.conf.pgtune /etc/postgresql/9.6/main/postgresql.conf
nano /etc/postgresql/9.6/main/postgresql.conf
# Restart to check any problems
service postgresql restart
# If error messages, increase the linux kernel configuration variables
echo "kernel.shmall = 4294967296" >> /etc/sysctl.conf # to increas shred buffer param in kernel
echo "kernel.shmmax = 4294967296" >> /etc/sysctl.conf
echo 4294967296 > /proc/sys/kernel/shmall
echo 4294967296 > /proc/sys/kernel/shmmax
sysctl -a | sort | grep shm
# Restart PostgreSQL
service postgresql restart
Serveur FTP : pure-ftpd
Note
Cette partie est optionnelle
Installation
apt-get install pure-ftpd pure-ftpd-common
Configuration
# Creating an empty shell for users
ln /bin/false /bin/ftponly
# Configuring FTP server
echo "/bin/ftponly" >> /etc/shells
# Each user is locked in his home
echo "yes" > /etc/pure-ftpd/conf/ChrootEveryone
# Allow to use secure FTP over SSL
echo "1" > /etc/pure-ftpd/conf/TLS
# Configure the properties of directories and files created by users
echo "133 022" > /etc/pure-ftpd/conf/Umask
# The port range for passive mode (opening outwards)
echo "5400 5600" > /etc/pure-ftpd/conf/PassivePortRange
# Creating an SSL certificate for FTP
openssl req -x509 -nodes -newkey rsa:1024 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
chmod 400 /etc/ssl/private/pure-ftpd.pem
# Restart FTP server
service pure-ftpd restart
Création d’un compte utilisateur
# Creating a user accountr
MYUSER=demo
useradd -g client -d /home/data/ftp/$MYUSER -s /bin/ftponly -m $MYUSER -k /home/data/ftp/template/
passwd $MYUSER
# Fix the user's FTP root
chmod a-w /home/data/ftp/$MYUSER
# Creating empty directories that will be the future Lizmap Web Client directories
mkdir /home/data/ftp/$MYUSER/qgis/rep1 && chown $MYUSER:client /home/data/ftp/$MYUSER/qgis/rep1
mkdir /home/data/ftp/$MYUSER/qgis/rep2 && chown $MYUSER:client /home/data/ftp/$MYUSER/qgis/rep2
mkdir /home/data/ftp/$MYUSER/qgis/rep3 && chown $MYUSER:client /home/data/ftp/$MYUSER/qgis/rep3
mkdir /home/data/ftp/$MYUSER/qgis/rep4 && chown $MYUSER:client /home/data/ftp/$MYUSER/qgis/rep4
mkdir /home/data/ftp/$MYUSER/qgis/rep5 && chown $MYUSER:client /home/data/ftp/$MYUSER/qgis/rep5
# Create a directory to store the cached server
mkdir /home/data/cache/$MYUSER
chmod 700 /home/data/cache/$MYUSER -R
chown www-data:www-data /home/data/cache/$MYUSER -R
Installer les sources de Lizmap Web Client
cd /var/www/
Depuis le fichier ZIP
Vous pouvez trouver la dernière version stable disponible sur la page release de Github.
Avertissement
N’utilisez pas les zip générés automatiquement par Github sur son site. Utilisez uniquement les zip attachés à la release.
cd /var/www/
# Options
VERSION=3.4.0
# Archive recovery with wget
wget https://github.com/3liz/lizmap-web-client/releases/download/$VERSION/lizmap-web-client-$VERSION.zip
# Unzip archive
unzip $VERSION.zip
# virtual link for http://localhost/lizmap/
ln -s /var/www/lizmap-web-client-$VERSION/lizmap/www/ /var/www/html/lizmap
# Remove archive
rm $VERSION.zip
Version de développement avec Git
Avertissement
la version de développement est en constante évolution, et des bugs peuvent survenir. Ne pas l’utiliser en production.
Avertissement
En utilisant le code de Git, que ce soit à partir de git clone
ou les zip automatiques créé à la volée par Github, vous devez d’abord construire le paquet. Il n’est pas possible d’utiliser le code directement. Si vous ne vouslez pas construire, vous devez utiliser l’un des paquets zip Lizmap Web Client qui sont déjà prêt à être installé, comme indiqué à l’étape précédente.
Première installation
le code source dans le dépôt git ne contient pas les paquets externes en PHP et Javascript. Pour les installer et générer certains fichiers, vous devez installer PHP Composer, NodeJs et Npm, ainsi que d’autres outils comme Make. Lisez le fichier CONTRIBUTING.md
fourni avec le code source, pour avoir les détails sur comment installer ces outils et construire le paquet.
apt-get install git
cd /var/www/
VERSION=master
# Clone the master branch
git clone https://github.com/3liz/lizmap-web-client.git lizmap-web-client-$VERSION
# Go into the git repository
cd lizmap-web-client-$VERSION
# Create a personal branch for your changes
git checkout -b mybranch
# Launch PHP Composer, Npm etc, to install external dependencies
make build
Pour mettre à jour votre branche depuis le dépôt master
cd /var/www/lizmap-web-client-$VERSION
# Check that you are on the branch: mybranch
git checkout mybranch
# If you have any changes, make a commit
git status
git commit -am "Your commit message"
# Save your configuration files!
lizmap/install/backup.sh /tmp
# Update your master branch
git checkout master && git fetch origin && git merge origin/master
# Apply to your branch, marge and manage potential conflicts
git checkout mybranch && git merge master
# Apply rights
chown :www-data temp/ lizmap/var/ lizmap/www lizmap/install/qgis/edition/ -R
chmod 775 temp/ lizmap/var/ lizmap/www lizmap/install/qgis/edition/ -R
Vous devez ensuite mettre à jour les dépendances (comme les paquets externes en PHP ou Javascript). Lisez le fichier CONTRIBUTING.md
fourni avec le code source.
Note
Il est toujours bon de faire une sauvegarde avant toute mise à jour.
Configurer Lizmap pour la prise en charge des bases de données
Lizmap a besoin d’une base de donnée pour stocker ses propres données et pour accéder aux données utilisées par vos projets Qgis, dans l’outils d’édition.
Créer profiles.ini.php
dans lizmap/var/config
en copiant profiles.ini.php.dist
.
cd lizmap/var/config
cp profiles.ini.php.dist profiles.ini.php
cd ../../..
PostgreSQL
Pour que l’édition de couches PostGIS dans Lizmap Web Client fonctionnent, il faut installer le support de PostGreSQL pour PHP.
sudo apt-get install php7.3-pgsql
sudo service nginx restart
Dans une copie toute fraiche de lizmap/var/config/profiles.ini.php
, vous devriez avoir :
[jdb:jauth]
driver=sqlite3
database="var:db/jauth.db"
[jdb:lizlog]
driver=sqlite3
database="var:db/logs.db"
C’est la configuration par défaut pour utiliser Sqlite. Vous devez changer ces sections pour utiliser Postgresql, et indiquer les paramètres d’accès à votre base de données Postgresql :
[jdb:jauth]
driver=pgsql
host=localhost
port=5432
database="your_database"
user=my_login
password=my_password
search_path=public
[jdb:lizlog]
driver=pgsql
host=localhost
port=5432
database="your_database"
user=my_login
password=my_password
search_path=public
Vous pouvez utiliser un schéma spécifique pour stocker les tables Lizmap. Et vous voudriez peut-être que Lizmap accède à d’autres schéma. Vous devez alors paramétrer correctement search_path. Exemple :
search_path=lizmap,my_schema,public
Si vous avez configuré un fichier de service pour Postgresql sur votre serveur, vous voudriez peut-être indiquer le nom du service au lieu d’indiquer le login, mot de passe etc. Utilisez alors le paramètre service :
[jdb:jauth]
driver=pgsql
service=my_service
database="your_database"
search_path=lizmap,public
[jdb:lizlog]
driver=pgsql
service=my_service
database="your_database"
search_path=lizmap,public
Spatialite
Activer l’extension Spatialite
Pour utiliser l’edition de couches spatialite, vous devez ajouter l’extension spatialite dans PHP. Vous pouvez suivre ces instructions pour le faire : http://www.gaia-gis.it/gaia-sins/spatialite-cookbook-fr/html/php.html
Lizmap Web Client test si Spatialite est activé dans PHP. Si ce n’est pas le cas, alors les couches Spatialite ne pourront pas être utilisée dans l’outil d’édition. Vous pouvez toujours utiliser Postgresql pour l’édition de données.
Donner les droits adéquats au répertoire contenant les bases de données Spatialite
Pour que Lizmap Web Client puisse modifier les données contenues dans les bases Spatialite, vous devez vous assurer que l’utilisateur du serveur web (www-data) a les droits en écriture dans le répertoire contenant les fichiers Spatialite
Par exemple, si un répertoire contient un projet QGIS, qui utilise une base de données Spatialite placée dans un répertoire bdd au même niveau que le projet QGIS :
/path/to/a/lizmap_directory
|--- mon_projet.qgs
|--- bdd
|--- my_spatialite_file.sqlite
Alors il faut donner les droits de cette manière :
chown :www-data /path/to/a/lizmap_directory -R
chmod 775 /path/to/a/lizmap_directory -R
Note
Donc si vous voulez installer Lizmap pour fournir un accès à de multiple fournisseurs de cartes, vous devez leur demander de toujours créer un répertoire db au même niveau que les projets QGIS dans le répertoire de Lizmap. Cela facilitera le travail de l’administrateur, qui aura juste à changer les droits d’un seul répertoire.
Configurer Lizmap et lancer l’installateur
Donner les droits adéquats aux répertoires et fichiers
Mettez les droits pour Nginx/Apache, ainsi les scripts PHP pourront écrire des fichiers temporaires ou modifier des fichiers.
cd /var/www/lizmap-web-client-$VERSION/
lizmap/install/set_rights.sh www-data www-data
chown :www-data lizmap/install/qgis/edition/ -R
chmod 775 lizmap/install/qgis/edition/ -R
Modifier la configuration
Créez lizmapConfig.ini.php
, localconfig.ini.php
et éditez les pour mettre les paramètres spécifiques à votre installation. Vous pouvez modifier lizmapConfig.ini.php
pour mettre l’url du serveur Qgis et d’autres choses.
cd lizmap/var/config
cp lizmapConfig.ini.php.dist lizmapConfig.ini.php
cp localconfig.ini.php.dist localconfig.ini.php
cd ../../..
Dans le cas où vous voulez activer les répertoires de démo, ajoutez juste dans le fichier localconfig.ini.php
:
[modules]
lizmap.installparam=demo
Lancement de l’installateur
Après avoir configuré les fichiers, vous pouvez lancer l’installateur
php lizmap/install/installer.php
Cela finira l’installation, et créera toutes les tables SQL nécessaires à Lizmap.
Premier test
Pour tester : http://localhost/lizmap
dans votre navigateur.
Si vous avez un 500 - internal server error
, lancez de nouveau :
cd /var/www/lizmap-web-client-$VERSION/
lizmap/install/set_rights.sh www-data www-data
Note
Remplacer localhost
par l’adresse ou l’adresse IP de votre serveur.
Dans le panneau d’administration, vous pouvez vérifier QGIS server version et WMS server URL avec l’URL du serveur Qgis.
Si vous n’avez pas installé la démo, vous pouvez vérifier que vous avez bien installé Lizmap et configuré le serveur Qgis en vérifiant dans Lizmap la section qgis_server
à cette url : http://localhost/lizmap/index.php/view/app/metadata
{
"qgis_server":{
"test":"OK",
"mime_type":"text\/xml; charset=utf-8"
}
}
Lizmap est aussi accessible, sans plus de configurations, comme serveur WMS et WFS depuis un navigateur:
et depuis QGIS:
http://localhost/lizmap/index.php/lizmap/service/?repository=montpellier&project=montpellier&
Note
Les accès aux serveurs WMS et WFS peuvent être restreints en assignant des droits à certains projets, pour cela consultez la partie administration.
Modules Lizmap
Précédemment, nous expliquions comment vous pouviez ajouter des plugins pour Qgis Server, pour ajouter plus de fonctionnalités à Qgis. Maintenant que nous avons Lizmap prêt et fonctionnel, nous pouvons ajouter des modules Lizmap pour ajouter des fonctionnalités.
La liste est disponible dans Lizmap introduction. Dans leur dépôt Github, il y a en en général les instructions pour les installer. Vous devriez les suivre. Cependant voici les instructions générales pour installer un module.
Installer les modules avec Composer
Vous pouvez installer des modules avec Composer, le gestionnaire de paquet de PHP. Bien sûr, c’est possible seulement si l’auteur du module a créé un paquet pour son module. Un tel paquet a un nom, par exemple « lizmap/lizmap-pgmetadata-module ». La documentation du module devrait l’indiquer.
Vous devez installer Composer. Voyez les instructions sur son site web http://getcomposer.org.
Vous devez créer un fichier composer.json
dans lizmap/my-packages/
en copiant le fichier composer.json.dist
qui s’y trouve. Et lancer une première fois Composer
cp -n lizmap/my-packages/composer.json.dist lizmap/my-packages/composer.json
composer install --working-dir=lizmap/my-packages
Ensuite vous pouvez installer le paquet du module
composer require --working-dir=lizmap/my-packages "lizmap/lizmap-pgmetadata-module"
Si vous voulez installer une nouvelle version du module, lancez juste :
composer update --working-dir=lizmap/my-packages
Lisez la documentation du module pour savoir si il y a des étapes supplémentaires à faire pour le configurer.
Pour finir l’installation, lancez une nouvelle fois l’installateur de Lizmap :
php lizmap/install/installer.php
lizmap/install/clean_vartmp.sh
lizmap/install/set_rights.sh
Installer des modules sans Composer
Pour installer le module sans Composer, récupérez le fichier zip du module.
Extrayez le module dans
lizmap/lizmap-modules/
. Par exemple, pour le module « PgMetaData » :
$ ls -hl lizmap/lizmap-modules/pgmetadata/
total 44K
drwxrwxr-x 2 etienne etienne 4,0K nov. 17 12:38 classes
drwxrwxr-x 2 etienne etienne 4,0K nov. 4 12:50 controllers
drwxrwxr-x 2 etienne etienne 4,0K nov. 4 10:09 daos
-rw-rw-r-- 1 etienne etienne 146 nov. 4 10:38 events.xml
drwxrwxr-x 2 etienne etienne 4,0K nov. 4 10:09 forms
drwxrwxr-x 2 etienne etienne 4,0K nov. 4 12:50 install
drwxrwxr-x 4 etienne etienne 4,0K nov. 4 10:09 locales
-rw-rw-r-- 1 etienne etienne 789 nov. 19 16:02 module.xml
drwxrwxr-x 2 etienne etienne 4,0K nov. 4 10:09 templates
-rw-rw-r-- 1 etienne etienne 106 nov. 4 10:39 urls.xml
drwxrwxr-x 2 etienne etienne 4,0K nov. 17 12:38 www
Éditez le fichier
lizmap/var/config/localconfig.ini.php
, dans la sectionmodules
, ajoutez une nouvelle ligne pour le module donné (vérifiez la documentation du module pour mettre les bonnes valeurs) :
[modules]
pgmetadata.access=2
Lisez la documentation du module pour savoir si il y a des étapes supplémentaires à faire pour le configurer.
Lancez l’installation :
php lizmap/install/installer.php
lizmap/install/clean_vartmp.sh
lizmap/install/set_rights.sh