Installare Lizmap Web Client su Linux Debian o Ubuntu

Nota

Se volete installare e testare rapidamente Lizmap Web Client in pochi passi, potete seguire queste istruzioni usando Docker e Docker-Compose.

Nota

Nelle distribuzioni Debian, si può lavorare come amministratore ( accedendo con root), senza usare sudo al contrario di Ubuntu.

Configurazione generica del server con il server Nginx

Questa documentazione fornisce un esempio per configurare un server con la distribuzione Debian 9. Si presume che il sistema di base sia installato e aggiornato.

Avvertimento

Questa pagina non descrive come rendere sicuro il vostro server Nginx. È solo una dimostrazione.

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.

Configurazione Server Nginx

Questa documentazione fornisce un esempio per configurare un server con la distribuzione Debian 9. Si presume che il sistema di base sia installato e aggiornato.

Avvertimento

Questa pagina non descrive come rendere sicuro il vostro server Nginx. È solo una dimostrazione.

Installare i pacchetti necessari

Avvertimento

Il client web Lizmap è basato su Jelix 1.6. Devi installare almeno la versione 5.6 di PHP. Le estensioni dom, simplexml, pcre, session, tokenizer e spl sono richieste (sono generalmente attivate in una installazione standard di PHP 5.6/7.x)

sudo su # only necessary if you are not logged in as root
apt update # update packages list
apt-get install curl openssl libssl1.1 nginx-full nginx nginx-common

Su debian 10, installare questi pacchetti:

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

Su Ubuntu 18.04 o successivo, installate questi pacchetti:

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

Configurazione web

Creare un nuovo 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.3-fpm.sock;
       fastcgi_param SERVER_NAME $http_host;
    }
}

Dovresti dichiarare il nome di dominio lizmap.local da qualche parte (nel tuo /etc/hosts, o nel tuo DNS…), o sostituirlo con il tuo nome di dominio.

Abilita l’host virtuale che hai appena creato:

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

Riavviare Nginx

È necessario riavviare il server Nginx per convalidare la configurazione.

service nginx restart

Configurazione Server Apache

Questa documentazione fornisce un esempio di configurazione di un server con la distribuzione Debian 10. Si presume che il sistema di base sia installato e aggiornato.

Avvertimento

Questa pagina non descrive come rendere sicuro il vostro server Apache. È solo dimostrativa.

Installare i pacchetti necessari

Per prima cosa aggiornate la lista dei pacchetti, poi installate questi pacchetti:

sudo su # only necessary if you are not logged in as root
apt update
apt-get install xauth htop curl apache2 libapache2-mod-fcgid
apt-get install libapache2-mod-php7.3 php7.3-cgi php7.3-gd php7.3-sqlite php7.3-curl php7.3-xmlrpc php7.3-xml python-simplejson software-properties-common

Configurazione PHP 7.3

In questo esempio, usiamo Apache mpm-worker. Quindi dobbiamo configurare manualmente l’attivazione di PHP 7.3.

# Create the configuration file
nano /etc/apache2/conf-available/php.conf
# Copy the following text in it
<Directory /usr/share>
   AddHandler fcgid-script .php
   FCGIWrapper /usr/lib/cgi-bin/php7.3 .php
   Options ExecCGI FollowSymlinks Indexes
</Directory>

<Files ~ (\.php)>
   AddHandler fcgid-script .php
   FCGIWrapper /usr/lib/cgi-bin/php7.3 .php
   Options +ExecCGI
   allow from all
</Files>

Abilitate la configurazione con la seguente linea di comando:

a2enconf php

Configurazione web

Configurazione mpm-worker

Modifica il file di configurazione di Apache per adattare le opzioni alla configurazione del server mpm_worker.

nano /etc/apache2/apache2.conf
<IfModule mpm_worker_module>
StartServers       4
MinSpareThreads    25
MaxSpareThreads    100
ThreadLimit          64
ThreadsPerChild      25
MaxClients        150
MaxRequestsPerChild   0
</IfModule>

Configurazione mod_fcgid

QGIS Server funziona con il protocolo FastCGI (a.k.a. fcgi). Dobbiamo quindi configurare il mod_fcgid di Apache per adattarlo alle capacità del server.

# Open the mod_fcgid configuration file
 nano /etc/apache2/mods-enabled/fcgid.conf
 # Paste the following content and adapt it
 <IfModule mod_fcgid.c>
    AddHandler    fcgid-script .fcgi
    FcgidConnectTimeout 300
    FcgidIOTimeout 300
    FcgidMaxProcessesPerClass 50
    FcgidMinProcessesPerClass 20
    FcgidMaxRequestsPerProcess 500
    IdleTimeout   300
    BusyTimeout   300
 </IfModule>

Impostazione della compressione

nano /etc/apache2/conf-available/mod_deflate.conf
# Add the bellow text in the file
<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>

Riavvio Apache

Devi riavviare il server Apache per convalidare la configurazione.

service apache2 restart
# or
systemctl restart apache2

Abilita geolocalizzazione

La geolocalizzazione automatica fornita da Lizmap si basa sui servizi di Google. Per abilitarlo, il tuo webGIS deve essere posto sotto un protocollo sicuro, come HTTPS. Vedi per maggiori dettagli:

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

Crea le cartelle per i dati

I file QGIS e altri file della cache saranno memorizzati in queste directory.

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

Database spaziale: PostgreSQL

Nota

Questa sezione è opzionale. Si prega di leggere prerequisiti-postgresql.

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

Useremo pgtune, un programma di utilità che può generare automaticamente un file di configurazione PostgreSQL adattato alle proprietà del server (memoria, processori, ecc.)

https://pgtune.leopard.in.ua/

# 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 increase 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

Per installare le tabelle Lizmap nel database PostgreSQL (invece di SqLite per impostazione predefinita), si può continuare fino alla prossima sezione qui sotto quando è necessario modificare il file lizmap/var/config/profiles.ini.php.

FTP Server: pure-ftpd

Nota

Questa sezione è opzionale, è possibile impostare il proprio modo di trasferire i dati dai tecnici GIS QGIS al server Lizmap.

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 account
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

Installazione dei sorgenti di Lizmap Web Client

Recupera l’ultima versione stabile disponibile dalla nostra pagina di rilascio su Github.

Avvertimento

Non usare il file ZIP automatico creato da GitHub sul sito web. Usa solo lo ZIP allegato a una release.

# Options
# Check the latest version available, maybe it's not 3.5.1 anymore
# https://github.com/3liz/lizmap-web-client/releases
VERSION=3.5.1
# chose location where download your zip (e.g. /var/www or your home)
LOCATION=/var/www
# Archive recovery with wget
cd $LOCATION
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 $LOCATION/lizmap-web-client-$VERSION/lizmap/www/ /var/www/html/lizmap
# Remove archive
rm $VERSION.zip

Configurare Lizmap con il supporto del database

Lizmap ha bisogno di un database per memorizzare i propri dati e per accedere ai dati utilizzati nei vostri progetti Qgis, con il suo strumento di editing.

Creare profiles.ini.php in lizmap/var/config copiando profiles.ini.php.dist.

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

PostgreSQL

Per la modifica dei livelli PostGIS in Web Client Lizmap, installare il supporto PostgreSQL per PHP. Nessun file di configurazione necessita di essere modificato per modificare i livelli PostgreSQL. Bisogna solo controllare che il server Lizmap possa accedere al database con le credenziali che sono memorizzate nel progetto QGIS (o con un file di servizio PostgreSQL).

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

Per i log di Lizmap, gli utenti e i gruppi, possono essere memorizzati in SqLite o PostgreSQL. Per memorizzare queste informazioni in PostgreSQL, seguire queste istruzioni.

In una nuova copia di lizmap/var/config/profiles.ini.php, dovresti avere:

[jdb:jauth]
driver=sqlite3
database="var:db/jauth.db"

[jdb:lizlog]
driver=sqlite3
database="var:db/logs.db"

Questa è la configurazione di default per usare Sqlite. Dovresti cambiare queste sezioni per usare Postgresql, e indicare diversi parametri per accedere al tuo database 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

È possibile utilizzare uno schema specifico per memorizzare le tabelle di lizmap. E potreste desiderare che lizmap possa accedere ad altri schemi. Dovete quindi impostare il search_path correttamente. Esempio:

search_path=lizmap,my_schema,public

Se avete impostato un file di servizio per postgresql sul vostro server, potreste voler indicare un servizio postgresql invece di indicare login, password e così via. Usate quindi il parametro 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

Abilita estensione Spatialite

Per usare l’editing sui livelli spatialite, dovete aggiungere l’estensione spatialite in PHP. Potete seguire queste istruzioni per farlo: http://www.gaia-gis.it/gaia-sins/spatialite-cookbook-fr/html/php.html

Lizmap Web Client verifica se il supporto spatialite è abilitato in PHP. Se non lo è, allora i livelli spatialite non saranno utilizzati nello strumento di editing. È sempre possibile utilizzare i dati PostgreSQL per l’editing.

Imposta diritti appropriati alla cartella che contiene i databases Spatialite

Affinché Lizmap Web Client possa modificare i dati contenuti nei database Spatialite, dobbiamo assicurarci che l’utente del webserver (www-data) abbia accesso in scrittura alla directory contenente ogni file Spatialite

Per esempio, se una directory contiene un progetto QGIS, che utilizza un database Spatialite posto in una directory db allo stesso livello del progetto QGIS:

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

Quindi dovete dare i diritti in questo modo:

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

Nota

Quindi se si vuole installare Lizmap per fornire accesso a più editori di mappe, si dovrebbe dire loro di creare sempre una directory db allo stesso livello dei progetti QGIS nella directory Lizmap Web Client. Questo faciliterà il lavoro dell’amministratore che deve solo cambiare i diritti di questa unica directory.

Configurare Lizmap e lanciare il programma di installazione

Dai gli appropriati diritti alle cartelle e ai file

Impostare i diritti per Nginx/Apache, cosicché gli script PHP possano scrivere alcuni file temporanei o fare modifiche.

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

Configurazione dell’installazione

Create lizmapConfig.ini.php, localconfig.ini.php e modificateli per impostare i parametri specifici della vostra installazione. Potete modificare lizmapConfig.ini.php per impostare l’url di qgis map server e altre cose.

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

Nel caso in cui vogliate abilitare i repository demo, basta aggiungere al localconfig.ini.php quanto segue:

[modules]
lizmap.installparam=demo

Lanciare il programma di installazione

Dopo aver creato i file di configurazione, potete lanciare il programma di installazione

php lizmap/install/installer.php

Finirà l’installazione e creerà tutte le tabelle SQL necessarie a Lizmap.

Primo test

Per testare lanciare: http://localhost/lizmap nel vostro 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

Nota

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

Nel pannello di amministrazione, dovreste controllare la QGIS server version e la WMS server URL con l’URL di QGIS Server.

Avvertimento

Prima di provare a far funzionare un progetto QGIS in Lizmap, è necessario che la comunicazione tra QGIS Server e Lizmap Web Client funzioni correttamente. Le versioni dei plugin del QGIS Server devono essere visibili dall’interfaccia di amministrazione. Si prega di leggere Lizmap QGIS Server plugins.

Se non avete installato la demo, potete controllare di aver ben installato Lizmap e configurato QGIS Server all’interno di Lizmap controllando la sezione qgis_server in questo 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.

Moduli Lizmap

In precedenza, abbiamo spiegato come possiamo aggiungere i plugin di QGIS Server per aggiungere più funzioni a QGIS Server. Ora che abbiamo il Lizmap Web Client attivo e funzionante, possiamo aggiungere alcuni moduli Lizmap per aggiungere ancora alcune funzionalità.

La lista è disponibile nella Lizmap<additional_lizmap_modules>`. Sul loro repository GitHub, di solito ci sono le loro istruzioni di installazione. Dovresti seguirle. Comunque qui ci sono le istruzioni principali per installare un modulo.

Installare moduli con Composer

Puoi installare i moduli con Composer, il gestore di pacchetti per PHP. Naturalmente è possibile solo se l’autore del modulo ha creato un pacchetto del suo modulo. Un tale pacchetto ha un nome, per esempio lizmap/lizmap-pgmetadata-module`. La documentazione del modulo dovrebbe indicarlo.

Dovete installare Composer. Vedere le istruzioni sul suo sito web http://getcomposer.org.

Dovete creare un file composer.json in lizmap/my-packages/ copiando il composer.json.dist da questa directory. E lanciando per la prima volta Compose

cp -n lizmap/my-packages/composer.json.dist lizmap/my-packages/composer.json
composer install --working-dir=lizmap/my-packages

In seguito si può installare il pacchetto del modulo

composer require --working-dir=lizmap/my-packages "lizmap/lizmap-pgmetadata-module"

Se volete installare una nuova versione del modulo, basta eseguire:

composer update --working-dir=lizmap/my-packages

Leggete la documentazione del modulo per sapere se ci sono passi aggiuntivi per configurarlo.

Per finire l’installazione, eseguite nuovamente il programma di installazione di Lizmap:

php lizmap/install/installer.php
lizmap/install/clean_vartmp.sh
lizmap/install/set_rights.sh

installare moduli senza Composer

Per installare un modulo senza Composer, recupera il file zip del modulo.

  • Estrai il modulo in lizmap/lizmap-modules/. Per esempio, per il modulo 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
  • Modifica il lizmap/var/config/localconfig.ini.php, nella sezione moduli, aggiungi una nuova linea per il modulo dato (controlla la documentazione del modulo per impostare i valori corretti):
[modules]
pgmetadata.access=2
  • Leggete la documentazione del modulo per sapere se ci sono passi aggiuntivi per configurarlo.
  • Eseguire l’installazione :
php lizmap/install/installer.php
lizmap/install/clean_vartmp.sh
lizmap/install/set_rights.sh