Installare Lizmap Web Client su Linux Debian o Ubuntu

Nota

If you want to quickly install and test Lizmap Web Client in a few steps, you can follow those instructions.

Generic Server Configuration with Nginx server

This documentation provides an example for configuring a server with the Debian 9 distribution. We assume you have base system installed and updated.

Avvertimento

This page does not describe how to secure your Nginx server. It’s just for a demonstration.

Configurazioni locali

Per semplicità, puoi configurare il server con la codifica UTF-8 di default.

# 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

Nota

Devi inoltre configurare le altre applicazioni in modo che usino questa codifica di default.

Installare i pacchetti necessari

Avvertimento

Lizmap web client is based on Jelix 1.6. You must install at least the 5.6 version of PHP. The dom, simplexml, pcre, session, tokenizer and spl extensions are required (they are generally turned on in a standard PHP 5.6/7.x installation)

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

On debian 9, install these packages:

apt-get install php7.0-fpm php7.0-cli php7.0-bz2 php7.0-curl php7.0-gd php7.0-intl php7.0-json php7.0-mbstring php7.0-pgsql php7.0-sqlite3 php7.0-xml php7.0-ldap

On Ubuntu 18.04 or later, install these packages:

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

Web configuration

Create a new file /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.0-fpm.sock;
       fastcgi_param SERVER_NAME $http_host;
    }
}

You should declare the lizmap.local domain name somewhere (in your /etc/hosts, or into your DNS..), or replace it by your own domain name.

Enable the virtual host you just created:

ln -s /etc/nginx/sites-available/lizmap.conf /etc/nginx/sites-enabled/lizmap.conf

Generic Server Configuration with Apache2 server

To install QGIS-server on apache refer to the official QGIS documentation https://docs.qgis.org/3.10/en/docs/training_manual/qgis_server/install.html

Installare i pacchetti necessari

Avvertimento

Il web client Lizmap si basa su Jelix 1.6. Devi installare almeno la versione 5.4 di PHP. Le estensioni dom, simplexml, pcre, session, ** tokenizer** e spl sono richieste (generalmente sono attive nell’installazione standard di PHP 5.4)

Nota

At least the current version supports PHP 7, so it should be straight foreward to install it on current debian 9 or ubuntu 16.04.

sudo su # only necessary if you are not logged in as root
apt update # update package lists

On debian 9, install these packages:

apt install php7.0-fpm php7.0-cli php7.0-bz2 php7.0-curl php7.0-gd php7.0-intl php7.0-json php7.0-mbstring php7.0-pgsql php7.0-sqlite3 php7.0-xml php7.0-ldap

On 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

Abilita geolocalizzazione

The automatic geolocation provided by Lizmap relies on Google services. To enable it, your webGIS must be placed under a secure protocol, like HTTPS. See for more details:

https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-powerful-features-on-insecure-origins

https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-apache-in-ubuntu-16-04

Restart Nginx

You must restart the Nginx server to validate the configuration.

service nginx restart

Crea le cartelle per i dati

QGIS files and other cache files will be stored into these directories.

 mkdir /home/data
 mkdir /home/data/cache/
# optional
 mkdir /home/data/ftp
 mkdir /home/data/ftp/template/
 mkdir /home/data/ftp/template/qgis

DBMS spaziale: PostgreSQL

Nota

Questa sezione è opzionale

PostgreSQL e PostGIS possono essere molto utili per gestire dati spaziali in modo centralizzato sul server.

Installazione

# 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

Adatta la configurazione PostreSQL

We will use pgtune, an utility program that can automatically generate a PostgreSQL configuration file adapted to the properties of the server (memory, processors, 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

FTP Server: pure-ftpd

Nota

Questa sezione è opzionale

Installazione

apt-get install pure-ftpd pure-ftpd-common

Configura

# 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

Crea un accesso utente

# 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

Install Lizmap Web Client

cd /var/www/

Con ZIP file

Retrieve the latest available stable version from our Github release page.

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

Set rights for Nginx, so php scripts could write some temporary files or do changes.

cd /var/www/lizmap-web-client-$VERSION/
lizmap/install/set_rights.sh www-data www-data

Create lizmapConfig.ini.php, localconfig.ini.php and profiles.ini.php and edit them to set parameters specific to your installation. You can modify lizmapConfig.ini.php to set the url of qgis map server and other things, and profiles.ini.php to store data in a database other than an sqlite database.

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

In case you want to enable the demo repositories, just add to localconfig.ini.php the following:

[modules]
lizmap.installparam=demo

Poi puoi lanciare l’installer

php lizmap/install/installer.php

For testing launch: http://127.0.0.1/lizmap in your browser.

Se ottieni un errore 500 - internal server error, riesegui:

cd /var/www/lizmap-web-client-$VERSION/
lizmap/install/set_rights.sh www-data www-data

Development version with Git

Avvertimento

La versione di sviluppo è sempre in evoluzione e può presentare bugs. Non usarla in produzione.

  • First installation

The source code in the Git repository is missing external PHP and Javascript packages. In order to install and build some files, you need to install PHP Composer, NodeJs and Npm, as well as some other tools like Make. Read the CONTRIBUTING.md file, provided with the source code, to have details about how to install these tools

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
  • Per aggiornare dal repository principale.
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

You should then update dependencies (like external PHP and javascript packages). See the CONTRIBUTING.md file provided with the source code.

Nota

E “sempre bene fare un backup prima di aggiornare.

Dai gli appropriati diritti alle cartelle e ai file

cd /var/www/lizmap-web-client-$VERSION
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

Primo test

Go to the Lizmap Web Client home to see if the installation was performed correctly: http://localhost/lizmap

Nota

Sostituisci «localhost» con l’indirizzo o il numero IP del tuo server

In the administration panel, you should check the QGIS server version and the WMS server URL with the URL of QGIS Server.

If you didn’t install the demo, you can check that you have well installed Lizmap and configured QGIS Server within Lizmap by checking the qgis_server section in this URL: http://localhost/lizmap/index.php/view/app/metadata

{
    "qgis_server":{
        "test":"OK",
        "mime_type":"text\/xml; charset=utf-8"
    }
}

Lizmap è accessibile, senza ulteriori configurazioni, anche come WMS e WFS del server da un browser:

http://localhost/lizmap/index.php/lizmap/service/?repository=montpellier&project=montpellier&VERSION=1.3.0&SERVICE=WMS&REQUEST=GetCapabilities

http://localhost/lizmap/index.php/lizmap/service/?repository=montpellier&project=montpellier&SERVICE=WFS&REQUEST=GetCapabilities

e da QGIS:

http://localhost/lizmap/index.php/lizmap/service/?repository=montpellier&project=montpellier&VERSION=1.3.0&

http://localhost/lizmap/index.php/lizmap/service/?repository=montpellier&project=montpellier&

Nota

L’accesso ai servers WMS e WFS può essere limitato assegnando privilegi alle repositories specifiche, vedi la sezione di amministrazione.

Lizmap modules

Previously, we explained how we could add QGIS Server plugins to add more features to QGIS Server. Now that we have Lizmap Web Client up and running, we can add some Lizmap modules to add again some features.

The list is available in the Lizmap introduction. On their GitHub repository, their is usually their install instructions.

  • Extract the module in lizmap/lizmap-modules/. For instance, for the 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
  • Edit the lizmap/var/config/localconfig.ini.php, in the modules section, add a new line for the given module :
[modules]
pgmetadata.access=2
  • Run the installation :
php lizmap/install/installer.php
lizmap/install/clean_vartmp.sh
lizmap/install/set_rights.sh

Editing tool: Configure the server with the database support

Nota

Questa sezione è opzionale

PostgreSQL

Per la modifica di livelli PostGIS in Web Client Lizmap, installa il supporto di PostgreSQL per PHP.

sudo apt-get install php7.0-pgsql
sudo service nginx restart

Nota

Per l’editing, raccomandiamo fortemente l’uso di un database PostgreSQL. Ciò semplifica enormemente l’installazione ed il recupero dei dati immessi dagli utenti.

Spatialite

Abilita estensione Spatialite

Per usare l’editing su livelli spatialite, bisogna aggiungere l’estensione spatialite in PHP. Puoi seguire queste istruzioni, per farlo: http://www.gaia-gis.it/spatialite-2.4.0-4/splite-php.html

Lizmap Web Client verifica se è attivo il supporto spatialite in PHP. Se non lo è, allora i livelli spatialite non verranno usati nello strumento di editing. Puoi sempre usare dati PostgreSQL per modificare.

Imposta diritti appropriati alla cartella che contiene i databases Spatialite

So that Lizmap Web Client can modify the data contained in databases Spatialite, we must ensure that the webserver user (www-data) has well write access to the directory containing each Spatialite file

For example, if a directory contains a QGIS project, which uses a Spatialite database placed in a db directory at the same level as the QGIS project:

/path/to/a/lizmap_directory
|--- mon_projet.qgs
|--- bdd
   |--- my_spatialite_file.sqlite

So you have to give the rights in this way:

chown :www-data /path/to/a/lizmap_directory -R
chmod 775 /path/to/a/lizmap_directory -R

Nota

So if you want to install Lizmap to provide access to multiple map publishers, you should tell them to always create a db directory at the same level as the QGIS projects in the Lizmap Web Client directory. This will facilitate the admin work that just have to change the rights of this unique directory.