Instalação do Lizmap Web Client em Linux Debian ou Ubuntu

Configuração Genérica do Servidor

Esta documentação fornece um exemplo para configurar um servidor com a distribuição Debian ou Ubuntu Server. Presumimos que tenha o sistema base instalado e atualizado.

Aviso

Esta página não descreve a forma de proteger o servidor Apache.

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

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

A versão atual suporta PHP 7, sendo direta a sua instalação a partir das distribuições debian 9 ou ubuntu 16.04.

sudo su # only necessary if you are not logged in as root
apt update # update package lists
# On Ubuntu 14.04 LTS install the following packages
apt-get install xauth htop curl apache2 libapache2-mod-fcgid libapache2-mod-php5 php5-cgi php5-gd php5-sqlite php5-curl php5-xmlrpc python-simplejson python-software-properties
# On Ubuntu 18.04 LTS
apt install xauth htop curl apache2 libapache2-mod-fcgid libapache2-mod-php7.2 php7.2-cgi php7.2-gd php7.2-sqlite php7.2-curl php7.2-xmlrpc php7.2-xml python-simplejson software-properties-common

Configuração php7

Neste exemplo, utilizamos Apache mpm-worker. Portanto, devemos configurar manualmente a ativação do php5.

cat > /etc/apache2/conf-available/php.conf << EOF
<Directory /usr/share>
  AddHandler fcgid-script .php
  FCGIWrapper /usr/lib/cgi-bin/php5 .php
  Options ExecCGI FollowSymlinks Indexes
</Directory>

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

Nota

Em versões mais antigas do Apache, a configuração do php-cgi encontra-se em /etc/apache2/conf.d/php.conf. Copie o texto acima e, em seguida:

a2enconf php

Configuração do mpm-worker

Modificamos o ficheiro de configuração do Apache para adaptar as opções à configuração do servidor mpm_worker.

# configuring worker
nano /etc/apache2/apache2.conf # aller au worker et mettre par exemple
<IfModule mpm_worker_module>
  StartServers       4
  MinSpareThreads    25
  MaxSpareThreads    100
  ThreadLimit          64
  ThreadsPerChild      25
  MaxClients        150
  MaxRequestsPerChild   0
</IfModule>

Configuração do mod_fcgid

O QGIS Server executa o modo fcgi. Portanto, devemos configurar o mod_fcgid do Apache para adequá-lo às capacidades do servidor.

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

Definir a compressão

nano /etc/apache2/conf-available/mod_deflate.conf # y ajouter
<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>

Nota

Em versões mais antigas do Apache, a configuração para DEFLATE compression encontra-se em /etc/ apache2/conf.d/mod_deflate.conf.

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:

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

Reiniciar o Apache

Deve reiniciar o servidor Apache para validar a configuração.

service apache2 restart

Criar diretórios para os dados

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

Spatial DBMS: PostgreSQL

Nota

Esta secção é opcional

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 php5-pgsql

# A cluster is created in order to specify the storage directory
mkdir /home/data/postgresql
service postgresql stop
pg_dropcluster --stop 9.5 main
chown postgres:postgres /home/data/postgresql
pg_createcluster 9.5 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

Utilizaremos o pgtune, um programa utilitário que pode gerar automaticamente um ficheiro de configuração do PostgreSQL adaptado às propriedades do servidor (memória, processadores, etc.)

# PostgreSQL Tuning with pgtune
pgtune -i /etc/postgresql/9.5/main/postgresql.conf -o /etc/postgresql/9.5/main/postgresql.conf.pgtune --type Web
cp /etc/postgresql/9.5/main/postgresql.conf /etc/postgresql/9.5/main/postgresql.conf.backup
cp /etc/postgresql/9.5/main/postgresql.conf.pgtune /etc/postgresql/9.5/main/postgresql.conf
nano /etc/postgresql/9.5/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

Map server: QGIS Server

Nota

Os detalhes da instalação podem ser diferentes para versões específicas do sistema operativo. Consulte http://qgis.org/en/site/forusers/download.html para obter documentação atualizada.

Instalar

# Add the repository UbuntuGis
cat /etc/apt/sources.list.d/debian-gis.list
deb http://qgis.org/debian trusty main
deb-src http://qgis.org/debian trusty main

# Add keys
sudo gpg --recv-key CAEB3DC3BDF7FB45
sudo gpg --export --armor CAEB3DC3BDF7FB45 | sudo apt-key add -

# Update package list
sudo apt-get update

# Install QGIS Server
sudo apt-get install qgis-server python-qgis

Descarregar e instalar o Lizmap Web Client

cd /var/www/

Com um ficheiro ZIP

Descarregue a versão estável mais recente disponível em https://github.com/3liz/lizmap-web-client/releases/

cd /var/www/
# Options
VERSION=3.2.3
# Archive recovery with wget
wget https://github.com/3liz/lizmap-web-client/archive/$VERSION.zip
# Unzip archive
unzip $VERSION.zip
# virtual link for http://localhost/lm
ln -s /var/www/lizmap-web-client-$VERSION/lizmap/www/ /var/www/html/lm
# Remove archive
rm $VERSION.zip

Definir permissões para o Apache, para que os scripts php possam escrever alguns ficheiros temporários ou fazer alterações.

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

Crie os ficheiros lizmapConfig.ini.php, localconfig.ini.php e profiles.ini.php e edite-os para definir parâmetros específicos para a sua instalação. Pode modificar o lizmapConfig.ini.php para definir o URL do servidor de mapas qgis e outros parâmetros e profiles.ini.php para armazenar dados numa base de dados diferente da base de dados SQLite.

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

Caso pretenda ativar os repositórios de demonstração, basta adicionar ao localconfig.ini.php o seguinte:

[modules]
lizmap.installparam=demo

De seguida pode executar o instalador

php lizmap/install/installer.php

Para testar digite o seguinte endereço no seu navegador: http://127.0.0.1/lm.

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

Versão de desenvolvimento com o 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.

  • A primeira vez

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

Nota

É sempre bom fazer um backup antes de atualizar.

Atribua as permissões apropriadas aos diretórios e ficheiros

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

Primeiro teste

Vá para a página inicial do Lizmap Web Client para ver se a instalação foi executada corretamente: http://localhost/lm

Nota

Substitua localhost pelo endereço IP do seu servidor.

O Lizmap deverá estar também acessível, sem configurações adicionais, como servidores WMS e WFS a partir de um navegador:

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

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

E também a partir do QGIS:

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

http://localhost/lm/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.

Ferramenta de edição: Configure o servidor com suporte para base de dados

Nota

Esta secção é opcional

PostgreSQL

Para a edição de camadas PostGIS funcionar no Lizmap Web Client, instale o suporte PostgreSQL para PHP.

sudo apt-get install php5-pgsql
sudo service apache2 restart

Nota

Para edição, é altamente recomendável utilizar uma base de dados PostgreSQL. Isso simplifica muito a instalação e recuperação de dados introduzidos pelos utilizadores.

Spatialite

Ativar a extensão Spatialite

Para utilizar a edição em camadas spatiatlite, é necessário adicionar a extensão spatialite para PHP. Pode seguir estas instruções para fazê-lo: http://www.gaia-gis.it/spatialite-2.4.0-4/splite-php.html

O Lizmap Web Client verifica se o suporte spatialite está habilitado no PHP. Se não estiver, as camadas espaciais não serão utilizadas na ferramenta de edição. Poderá sempre utilizar dados do PostgreSQL para edição.

Atribua as permissões apropriadas ao diretório que contém as bases de dados Spatialite

Para que o Lizmap Web Client possa modificar os dados contidos nas bases de dados Spatialite, deve assegurar-se que o utilizador Apache (www-data) tenha garantido acesso de escrita ao diretório que contém cada ficheiro Spatialite

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

Se quiser instalar o Lizmap para fornecer acesso a várias publicações de mapas, deve configurar-lo de forma a criar sempre um diretório db no mesmo nível que os projetos QGIS no diretório do Lizmap Web Client. Isto facilitará o trabalho do administrador que apenas tem que alterar as permissões desse diretório único.