Instalação do Lizmap Web Client em Linux Debian ou 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.
Aviso
This page does not describe how to secure your Nginx server. It’s just for a demonstration.
Configurar Idiomas
Para simplificar, é importante configurar o servidor com a codificação padrão 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
Nota
Também é necessário configurar outro software para que o mesmo passe a utilizar esta codificação padrão, se não for esse o caso.
Instalação dos pacotes necessários
Aviso
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 10, 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
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.3-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/latest/en/docs/server_manual/index.html
Instalação dos pacotes necessários
Aviso
O Lizmap web client baseia-se no Jelix 1.6. Deverá instalar pelo menos a versão 5.4 do PHP. As extensões dom, simplexml, pcre, session, tokenizer e spl são obrigatórias (geralmente encontram-se ativadas numa instalação padrão PHP 5.4)
Nota
At least the current version supports PHP 7, so it should be straight forward 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 10, install these packages:
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
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
Ativar a geolocalização
A geolocalização automática fornecida pelo Lizmap depende dos serviços da Google. Para ativação da mesma o site webGIS deve ser colocado sob um protocolo seguro, como o HTTPS. Para mais detalhes ver:
Restart Nginx
You must restart the Nginx server to validate the configuration.
service nginx restart
Criar diretórios para os dados
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
Spatial Database: PostgreSQL
Nota
This section is optional, but required if you want to enable editing capabilities on a layer. See Pré-requisitos.
PostgreSQL e PostGIS podem ser muito úteis para a gestão de dados espaciais de forma centralizada no servidor.
Instalar
# 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
Adaptação da configuração do PostgreSQL
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
Servidor FTP: pure-ftpd
Nota
Esta secção é opcional
Instalar
apt-get install pure-ftpd pure-ftpd-common
Configurar
# 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
Criar uma conta de utilizador
# 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
Installing sources of Lizmap Web Client
cd /var/www/
Com um ficheiro ZIP
Retrieve the latest available stable version from our Github release page.
Aviso
Do not use the automatic ZIP file created by GitHub on the website. Only use ZIP attached to a 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
Development version with Git
Aviso
A versão de desenvolvimento está frequentemente a sofrer alterações, devido a isso podem ocorrer alguns bugs. Não a utilize em ambiente de produção.
Aviso
Using the code from GIT, either from the git clone
or the automatic ZIP created by GitHub on-the-fly,
needs to build the package first. It is not possible to use this code directly. If you don’t want
to build, you must use some Lizmap Web Client ZIP packages which are ready to be installed, as
written in the step before.
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 and to build the package.
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
Para atualizar sua versão a partir do repositório principal
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
É sempre bom fazer um backup antes de atualizar.
Configure Lizmap with the database support
Lizmap needs a database to store its own data and to access to data used in your Qgis projects, with its editing tool.
Create profiles.ini.php
into lizmap/var/config
by copying profiles.ini.php.dist
.
cd lizmap/var/config
cp profiles.ini.php.dist profiles.ini.php
cd ../../..
PostgreSQL
Para a edição de camadas PostGIS funcionar no Lizmap Web Client, instale o suporte PostgreSQL para PHP.
sudo apt-get install php7.3-pgsql
sudo service nginx restart
Into a fresh copy of lizmap/var/config/profiles.ini.php
, you should have:
[jdb:jauth]
driver=sqlite3
database="var:db/jauth.db"
[jdb:lizlog]
driver=sqlite3
database="var:db/logs.db"
This is the configuration by default to use Sqlite. You should change these sections to use Postgresql, and indicate several parameters to access to your Postgresql database:
[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
You can use a specific schema to store lizmap tables. And you may want that lizmap could access to other schema. You then have to set search_path correctly. Example:
search_path=lizmap,my_schema,public
If you have setup a service file for postgresql onto your server, you may want to indicate a postgresql service instead of indicating login, password and so on. Use then the service parameter:
[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
Ativar a extensão Spatialite
To use editing on layers spatialite,you have to add the spatialite extension in PHP. You can follow these instructions to do so: http://www.gaia-gis.it/gaia-sins/spatialite-cookbook-fr/html/php.html
Lizmap Web Client tests whether the spatialite support is enabled in PHP. If it is not, then spatialite layers will not be used in the editing tool. You can always use PostgreSQL data for editing.
Atribua as permissões apropriadas ao diretório que contém as bases de dados 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
Por exemplo, se um diretório contém um projeto QGIS, que utiliza uma base de dados Spatialite colocada num diretório db no mesmo nível do projeto QGIS:
/path/to/a/lizmap_directory
|--- mon_projet.qgs
|--- bdd
|--- my_spatialite_file.sqlite
Então terá que atribuir as permissões desta forma:
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.
Configuring Lizmap and launching the installer
Atribua as permissões apropriadas aos diretórios e ficheiros
Set rights for Nginx/Apache, 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
chown :www-data lizmap/install/qgis/edition/ -R
chmod 775 lizmap/install/qgis/edition/ -R
Setup configuration
Create lizmapConfig.ini.php
, localconfig.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.
cd lizmap/var/config
cp lizmapConfig.ini.php.dist lizmapConfig.ini.php
cp localconfig.ini.php.dist localconfig.ini.php
cd ../../..
In case you want to enable the demo repositories, just add to localconfig.ini.php
the following:
[modules]
lizmap.installparam=demo
Launching the installer
After creating configuration files, you can launch the installer
php lizmap/install/installer.php
It will finished the installation, and will create all SQL tables needed by Lizmap.
Primeiro teste
For testing launch: http://localhost/lizmap
in your browser.
Caso apareça a mensagem 500 - internal server error
, execute novamente o instalador:
cd /var/www/lizmap-web-client-$VERSION/
lizmap/install/set_rights.sh www-data www-data
Nota
Substitua localhost
pelo endereço IP do seu servidor.
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"
}
}
O Lizmap deverá estar também acessível, sem configurações adicionais, como servidores WMS e WFS a partir de um navegador:
E também a partir do QGIS:
http://localhost/lizmap/index.php/lizmap/service/?repository=montpellier&project=montpellier&
Nota
O acesso aos servidores WMS e WFS pode ser limitado pela atribuição de privilégios a repositórios específicos, consulte a secção de administração.
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. You should follow them. However here are the main instructions to install a module.
Installing modules with Composer
You can install modules with Composer, the package manager for PHP. Of course it is possible only if the author of the module has created a package of his module. A such package has a name, for example lizmap/lizmap-pgmetadata-module`. The documentation of the module should indicate it.
You must install Composer. See instructions on its web site http://getcomposer.org.
You must create a composer.json
file into lizmap/my-packages/
by copying the composer.json.dist
from this directory. And launching
a first time Compose
cp -n lizmap/my-packages/composer.json.dist lizmap/my-packages/composer.json
composer install --working-dir=lizmap/my-packages
Then you can install the package of the module
composer require --working-dir=lizmap/my-packages "lizmap/lizmap-pgmetadata-module"
If you want to install a new version of the module, just execute:
composer update --working-dir=lizmap/my-packages
Read the documentation of the module to know if there are additional steps to configure it.
To finish the installation, run again the installer of Lizmap:
php lizmap/install/installer.php
lizmap/install/clean_vartmp.sh
lizmap/install/set_rights.sh
installing modules without Composer
To install a module without Composer, retrieve the zip file of the module.
Extract the module into
lizmap/lizmap-modules/
. For instance, for the modulePgMetadata
:
$ 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 themodules
section, add a new line for the given module (check the documentation of the module to setup the correct values):
[modules]
pgmetadata.access=2
Read the documentation of the module to know if there are additional steps to configure it.
Run the installation :
php lizmap/install/installer.php
lizmap/install/clean_vartmp.sh
lizmap/install/set_rights.sh