Linux DebianまたはUbuntuへのLizmap Web Clientのインストール

注釈

もし、Lizmap Web Clientをいくつかのステップで素早くインストールしてテストしたい場合は、DockerとDocker-Composeを使用して、 以下の手順<https://github.com/3liz/lizmap-docker-compose> の通りに行います。

注釈

Debianディストリビューションでは、Ubuntuとは異なり、sudoを使わずに管理者( root でログイン)として作業することが可能です。

Nginxサーバーによる一般的なサーバーの設定

This documentation provides an example for configuring a server with the Debian 11 distribution. We assume you have base system installed and updated.

警告

このページでは、Nginxサーバをセキュアにする方法を説明していません。あくまでもデモンストレーションのためのものです。

ロケールの設定

簡単にするために、デフォルトのエンコーディングを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

注釈

また、他のソフトウェアがデフォルトのエンコーディングを使用していない場合は、このエンコーディングを使用するように設定する必要があります。

必要なパッケージのインストール

警告

Lizmap web client 3.6 is based on Jelix 1.8. You must install at least the 7.4 version of PHP. The dom, simplexml, pcre, session, tokenizer and spl extensions are required (they are generally turned on in a standard PHP 7/8 installation)

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

On Debian 11 or Ubuntu 20.04 LTS, install these packages:

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

Webの設定

新しい /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;
    }
}

lizmap.localのドメイン名をどこか(/etc/hostsやDNSなど)で宣言するか、独自のドメイン名で置き換える必要があります。

先ほど作成したバーチャルホストを有効にします。

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

Nginxの再起動

設定を有効にするには、Nginxサーバーを再起動する必要があります。

service nginx restart

ジオロケーションの有効化

Lizmapが提供する自動ジオロケーションは、Googleのサービスに依存しています。これを有効にするには、お使いのwebGISをHTTPSのような安全なプロトコル下に置く必要があります。詳しくはこちらをご覧ください。

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

データ用のディレクトリの作成

これらのディレクトリには、QGISファイルやその他のキャッシュファイルが格納されます。

mkdir /home/data
mkdir /home/data/cache/

‎空間データベース: PostgreSQL

注釈

このセクションは任意です。 PostgreSQL を読んでください。

PostgreSQLとPostGISは、空間データをサーバー上で一元管理するのに非常に便利です。

インストール

On Debian 11, you'll find PostgreSQL 13.

First install packages:

apt install postgresql postgresql-contrib postgis pgtune

You may have to recreate the cluster on a fresh install, in order to set the locale. You can jump this step if the locale is correctly set, or if you already have databases. Careful: these instructions destroy any existing databases!

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

Now You can create a user and a database for Lizmap, into Postgresql.

PostgreSQLの設定を変更する

ここでは、サーバーの特性(メモリ、プロセッサなど)に合わせてPostgreSQLの設定ファイルを自動的に生成するユーティリティープログラムである pgtune を使用します。

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

LizmapのテーブルをPostgreSQLのデータベースにインストールするには(デフォルトではSqLiteの代わりに)、次のセクションまで続けて、ファイル lizmap/var/config/profiles.ini.php を編集することが必要です。

Lizmap Web Clientのソースコードのインストール

最新の安定版は、 Githubのリリースページ から入手できます。

警告

GitHubがウェブサイト上で自動的に作成するZIPファイルは使用しないでください。リリースに添付されたZIPのみを使用してください。

We first set some variable to ease instructions. Let's set the version and the location where Lizmap will be installed. Adjust these values to your requirements.

VERSION=3.6.5
LOCATION=/var/www

Then you can install the zip file:

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

データベースをサポートするLizmapの設定

Lizmapは、自身のデータを保存したり、QGISプロジェクトで使用されるデータに編集ツールでアクセスするために、データベースを必要とします。

:file:`profiles.ini.php.dist`をコピーして、 :file:`profiles.ini.php`ファイルを :file:`lizmap/var/config`に作成します。

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

PostgreSQL

Web Client LizmapでPostGISのレイヤーを編集するためには、PostgreSQLをサポートするPHPをインストールする必要があります。PostgreSQLのレイヤーを編集するために、設定ファイルの編集は必要ありません。Lizmapサーバーが、QGISプロジェクトに保存されている資格情報(またはPostgreSQLサービスファイル)でデータベースにアクセスできることだけを確認する必要があります。

apt install php7.4-pgsql
service php7.4-fpm restart

Lizmapのログ、ユーザー、グループについては、SqLiteまたはPostgreSQLのいずれかに保存することができます。これらの情報をPostgreSQLに格納する場合は、以下の手順で行ってください。

:file:`lizmap/var/config/profiles.ini.php`を新しくコピーすると、以下のようになっているはずです。

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

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

これはデフォルトでSqliteを使用するための設定です。Postgresqlを使用するためには、これらのセクションを変更し、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

lizmapのテーブルを格納するために特定のスキーマを使用することができます。そして、lizmapが他のスキーマにアクセスできるようにすることもできます。その場合、search_pathを正しく設定する必要があります。例えば、

search_path=lizmap,my_schema,public

postgresqlのサービスファイルをサーバにセットアップしている場合、loginやpasswordなどの代わりにpostgresqlのサービスを示したい場合があります。その場合は、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

Spatialite拡張機能を有効にする

spatialiteでのレイヤー編集を使用するには、PHPにspatialite拡張を追加する必要があります。以下の手順で行うことができます。http://www.gaia-gis.it/gaia-sins/spatialite-cookbook-fr/html/php.html

Lizmap Web Clientは、PHPでspatialiteサポートが有効になっているかどうかをテストします。有効になっていない場合は、編集ツールでspatialiteレイヤーは使用されません。編集には常にPostgreSQLデータを使用することができます。

Spatialiteのデータベースがあるディレクトリに適切な権限を与える。

Lizmap Web ClientがデータベースSpatialiteに含まれるデータを変更できるようにするためには、 ウェブサーバーのユーザー(www-data)が、各Spatialiteファイルを含むディレクトリに書き込み権限を持っていること を確実にする必要があります。

例えば、あるディレクトリにQGISプロジェクトがあり、QGISプロジェクトと同じ階層の db ディレクトリに置かれたSpatialiteデータベースを使用している場合などです。

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

だから、このように権限を与える必要があります。

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

注釈

したがって、Lizmapをインストールして複数の地図公開者へのアクセスを提供したい場合は、Lizmap Web Clientディレクトリ内のQGISプロジェクトと同じ階層に、常に db ディレクトリを作成するように指示する必要があります。これにより、この固有のディレクトリの権限を変更するだけの管理作業が容易になります。

Lizmapの設定とインストーラーの起動

ディレクトリやファイルに適切な権限を与える

Nginx/Apacheの権限を設定し、PHPスクリプトが一時ファイルを書き込んだり、変更を行えるようしてください。

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

初期設定

lizmapConfig.ini.phplocalconfig.ini.php を作成し、それらを編集して、インストールに固有のパラメータを設定します。lizmapConfig.ini.php を変更して、qgisマップサーバーのURLなどを設定することができます。

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

インストーラーの起動

設定ファイルを作成した後、インストーラーを起動します。

php lizmap/install/installer.php

これでインストールが完了し、Lizmapが必要とするすべてのSQLテーブルが作成されます。

Adding some demonstration projects

If you want to test Lizmap with some demonstration projects, you must install unzip and either wget or curl.

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

最初のテスト

試しに、ブラウザで http://localhost/lizmap を開いてみてください。

万が一、500 - internal server error が発生した場合は、再度実行してください。

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

注釈

localhost をお使いのサーバーのアドレスまたはIPアドレスに置き換えてください。

管理パネルで、QGISサーバのURLに合わせて、QGISサーバのバージョン と、WMSサーバのURL を確認します。

警告

LizmapでQGISプロジェクトを動作させる前に、QGIS ServerとLizmap Web Clientの間の通信が正しく動作している必要があります。QGIS Serverプラグインのバージョンは、管理インターフェイスから見えるようになっていなければなりません。 Lizmap QGISサーバープラグイン をお読みください。

デモをインストールしていない場合は、このURLの qgis_server セクションをチェックすることで、Lizmapが正しくインストールされ、Lizmap内にQGIS Serverが設定されているかどうかを確認することができます。http://localhost/lizmap/index.php/view/app/metadata

{
    "qgis_server":{
        "test":"OK",
        "mime_type":"text\/xml; charset=utf-8"
    }
}

Lizmapは、WMSやWFSのサーバーとしても、ブラウザから追加設定なしでアクセス可能です。

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

そして、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&

注釈

WMSおよびWFSサーバーへのアクセスは、特定のリポジトリに権限を割り当てることで制限することができます。管理セクションを参照してください。

Lizmapのモジュール

以前、QGIS Serverに機能を追加するためにQGIS Serverプラグインを追加する方法を説明しました。今回は、Lizmap Web Clientが稼働したので、いくつかのLizmapモジュールを追加して、再度機能を追加してみます。

リストは、 Lizmap introduction でご覧いただけます。GitHubリポジトリには、通常、インストール手順が書かれています。その指示に従ってください。しかし、ここでは、モジュールをインストールするための主な手順を説明します。

‎コンポーザーを使用したモジュールのインストール‎

‎PHP のパッケージマネージャである Composer を使用してモジュールをインストールできます。もちろん、モジュールの作成者が自分のモジュールのパッケージを作成した場合にのみ可能です。‎‎このようなパッケージには、例えば, lizmap/lizmap-pgmetadata-module のような名前が付けられ,‎‎モジュールのドキュメントで示す必要があります。‎

Composerをインストールする必要があります。ウェブサイト( http://getcomposer.org )で説明をご覧ください。

このディレクトリから composer.json.dist をコピーして、 lizmap/my-packages/composer.json ファイルを作成する必要があります。そして、最初のComposeを起動します。

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

次に、モジュールのパッケージをインストールします。

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

If you want to install a new version of the module, execute:

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

モジュールを設定するための追加手順があるかどうかは、モジュールのドキュメントをお読みください。

You will have at least to launch the configurator of the module with this command:

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

インストールを終了するには、Lizmapのインストーラーを再度実行してください。

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

Composerを使わずにモジュールをインストールする

Composerを使わずにモジュールをインストールするには、モジュールのZIPファイルを取得します。

  • モジュールを lizmap/lizmap-modules/ に展開します。例えば、モジュール 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
  • モジュールを設定するための追加手順があるかどうかは、モジュールのドキュメントをお読みください。

You will have at least to launch the configurator of the module with this command:

php lizmap/install/configurator.php name_of_the_module
# example:
php lizmap/install/configurator.php pgmetadata
  • インストールを実行します。

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