Installare Lizmap Web Client su Linux Debian o Ubuntu

Nota

Se vuoi installare e testare velocemente Lizmap Web Client in pochi passi, puoi seguire queste istruzioni.

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.

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 package lists
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

Configurazione Generica del Server con il server Apache2

Per installare QGIS-server su apache fate riferimento alla documentazione ufficiale di QGIS https://docs.qgis.org/latest/en/docs/server_manual/index.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

Almeno la versione attuale supporta PHP 7, quindi dovrebbe essere semplice installarla sull’attuale debian 9 o ubuntu 16.04.

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

Su debian 10, installare questi pacchetti:

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

Su 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

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

Riavviare Nginx

È necessario riavviare il server Nginx per convalidare la configurazione.

service nginx restart

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, ma necessaria se vuoi abilitare le capacità di editing su un livello. Vedi Prerequisiti.

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

# 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

Installazione dei sorgenti di Lizmap Web Client

cd /var/www/

Con ZIP file

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.

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

Versione di sviluppo con Git

Avvertimento

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

Avvertimento

Usando il codice da GIT, sia dal git clone che dallo ZIP automatico creato da GitHub al volo, bisogna prima costruire il pacchetto. Non è possibile usare questo codice direttamente. Se non si vuole costruire, si devono utilizzare alcuni pacchetti ZIP di Lizmap Web Client che sono pronti per essere installati, come scritto nel passo precedente.

  • Prima installazione

Il codice sorgente nel repository Git è privo di pacchetti esterni PHP e Javascript. Per installare e compilare alcuni file, è necessario installare PHP Composer, NodeJs e Npm, così come alcuni altri strumenti come Make. Leggi il file CONTRIBUTING.md, fornito con il codice sorgente, per avere dettagli su come installare questi strumenti e costruire il pacchetto.

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

Dovresti quindi aggiornare le dipendenze (come i pacchetti PHP e javascript esterni). Vedere il file CONTRIBUTING.md fornito con il codice sorgente.

Nota

E “sempre bene fare un backup prima di aggiornare.

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 di livelli PostGIS in Web Client Lizmap, installa il supporto di PostgreSQL per PHP.

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

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.

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