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

注釈

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

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

このドキュメントでは、Debian 9 ディストリビューションのサーバーを設定する例を示します。ベースシステムがインストールされ、アップデートされていることを前提としています。

警告

このページでは、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クライアントは、Jelix 1.6をベースにしています。少なくとも**5.6**バージョンのPHPをインストールする必要があります。domsimplexmlpcresessiontokenizerspl の各拡張モジュールが必要です(通常、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

debian 10では、これらのパッケージをインストールします。

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

Ubuntu 18.04以降では、これらのパッケージをインストールします。

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の設定

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

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

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

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

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

QGIS-server を apache にインストールするには、QGIS の公式ドキュメント https://docs.qgis.org/latest/en/docs/server_manual/index.html を参照してください。

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

警告

Lizmap Webクライアントは、Jelix 1.6をベースにしています。少なくとも**5.4**バージョンのPHPをインストールする必要があります。domsimplexmlpcresessiontokenizerspl の各拡張モジュールが必要です(通常、PHP 5.4の標準的なインストールでは、これらはオンになっています)。

注釈

少なくとも現在のバージョンはPHP 7をサポートしていますので、現行のdebian 9やubuntu 16.04にインストールするのは簡単でしょう。

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

debian 10では、これらのパッケージをインストールします。

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

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

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

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

Nginxの再起動

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

service nginx restart

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

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

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

‎空間データベース: PostgreSQL

注釈

‎このセクションは省略可能ですが、レイヤで編集機能を有効にする場合は必須です。参照‎ ‎前提条件‎

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

インストール

# 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

PostgreSQLの設定を変更する

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

# 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サーバー:pure-ftpd

注釈

このセクションはオプションです。

インストール

apt-get install pure-ftpd pure-ftpd-common

設定

# 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

ユーザーアカウントの作成

# 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

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

cd /var/www/

ZIPファイルを使用する場合

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

警告

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

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

Gitを使った開発版を使用する場合

警告

開発版は常に変化しており、バグが発生する可能性があります。本番では使用しないでください。

警告

GITからコードを使用する場合、 git clone やGitHubがオンザフライで作成した自動ZIPのいずれであっても、まずパッケージを ビルド する必要があります。このコードを 直接 使用することはできません。ビルドしたくない場合は、前のステップで書いたように、すぐにインストールできるLizmap Web ClientのZIPパッケージを使う 必要 があります。

  • 最初のインストール

Git リポジトリのソースコードには、PHP と Javascript の外部パッケージが含まれていません。いくつかのファイルをインストールしたりビルドしたりするためには、 PHP ComposerNodejsとNpm 、さらに Make などのツールをインストールする必要があります。これらのツールのインストール方法やパッケージのビルド方法の詳細については、ソースコードと一緒に提供されている CONTRIBUTING.md ファイルをお読みください。

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
  • マスターリポジトリから自分のブランチを更新する場合

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

その後、依存関係のあるモジュール(外部のPHPやjavascriptのパッケージなど)を更新する必要があります。ソースコードと一緒に提供されている CONTRIBUTING.md ファイルをご覧ください。

注釈

アップデートの前には必ずバックアップを取ることをお勧めします。

データベースをサポートする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のレイヤーを編集するためには、PHPをサポートするPostgreSQLをインストールする必要があります。

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

: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
chown :www-data lizmap/install/qgis/edition/ -R
chmod 775 lizmap/install/qgis/edition/ -R

初期設定

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

デモ用リポジトリを有効にしたい場合は、 localconfig.ini.php に以下の内容を追加してください。

[modules]
lizmap.installparam=demo

インストーラーの起動

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

php lizmap/install/installer.php

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

最初のテスト

試しに、ブラウザで 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 を確認します。

デモをインストールしていない場合は、この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"

新しいバージョンのモジュールをインストールしたい場合は、以下を実行してください。

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

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

インストールを終了するには、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
  • lizmap/var/config/localconfig.ini.php を編集し、``modules` セクションに、指定したモジュールのための新しい行を追加します(正しい値を設定するには、モジュールのドキュメントを確認してください)。

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

  • インストールを実行します。

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