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 la configurazione di un server con la distribuzione Debian 11. Presumiamo che tu abbia il sistema di base 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.

Installare i pacchetti necessari

Avvertimento

Il client web Lizmap 3.6 è basato su Jelix 1.8. È necessario installare almeno la versione 7.4 di PHP. Le estensioni dom, simplexml, pcre, session, tokenizer e spl sono richieste (generalmente sono già attivate in una installazione standard di PHP 7/8)

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

Su Debian 11 o Ubuntu 20.04 LTS, installa questi pacchetti:

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

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

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/

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

Su Debian 11 troverai PostgreSQL 13.

Prima installazione dei pacchetti:

apt install postgresql postgresql-contrib postgis pgtune

Potrebbe essere necessario ricreare il cluster in una nuova installazione per impostare il locale. Puoi saltare questo passaggio se le impostazioni locali sono impostate correttamente o se disponi già di database. Attenzione: queste istruzioni distruggono tutti i database esistenti!

service postgresql stop
pg_dropcluster --stop 13 main
pg_createcluster 13 main --locale fr_FR.UTF8 -p 5432 --start

Ora puoi creare un utente e un database per Lizmap, in Postgresql.

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/13/main/postgresql.conf -o /etc/postgresql/13/main/postgresql.conf.pgtune --type Web
cp /etc/postgresql/13/main/postgresql.conf /etc/postgresql/13/main/postgresql.conf.backup
cp /etc/postgresql/13/main/postgresql.conf.pgtune /etc/postgresql/13/main/postgresql.conf
nano /etc/postgresql/13/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.

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.

Per prima cosa impostiamo alcune variabili per facilitare le istruzioni. Impostiamo la versione e la posizione in cui verrà installato Lizmap. Adatta questi valori alle tue esigenze.

VERSION=3.6.5
LOCATION=/var/www

Quindi puoi installare il file zip:

cd $LOCATION
wget https://github.com/3liz/lizmap-web-client/releases/download/$VERSION/lizmap-web-client-$VERSION.zip
# Unzip archive
unzip lizmap-web-client-$VERSION.zip

# virtual link for http://localhost/lizmap/
ln -s $LOCATION/lizmap-web-client-$VERSION/lizmap/www/ /var/www/html/lizmap
# Remove archive
rm lizmap-web-client-$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).

apt install php7.4-pgsql
service php7.4-fpm 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

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

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.

Aggiunta di alcuni progetti dimostrativi

Se vuoi testare Lizmap con alcuni progetti dimostrativi, devi installare unzip e wget o curl.

lizmap/install/reset.sh --keep-config --demo

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 vuoi installare una nuova versione del modulo, esegui:

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

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

Dovrai almeno lanciare il configuratore del modulo con questo comando:

php lizmap/install/configurator.php name_of_the_module
# example:
php lizmap/install/configurator.php pgmetadata

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
  • Leggete la documentazione del modulo per sapere se ci sono passi aggiuntivi per configurarlo.

Dovrai almeno lanciare il configuratore del modulo con questo comando:

php lizmap/install/configurator.php name_of_the_module
# example:
php lizmap/install/configurator.php pgmetadata
  • Eseguire l’installazione :

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