Linux DebianまたはUbuntuへのLizmap Web Clientのインストール
注釈
もし、Lizmap Web Clientをいくつかのステップで素早くインストールしてテストしたい場合は、DockerとDocker-Composeを使用して、 取扱説明書<https://github.com/3liz/lizmap-docker-compose> に従うことができます。
注釈
Debianディストリビューションでは、Ubuntuとは異なり、sudoを使わずに管理者(``root``でログイン)として作業することが可能です。
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
注釈
また、他のソフトウェアがデフォルトのエンコーディングを使用していない場合は、このエンコーディングを使用するように設定する必要があります。
Nginx Serverの構成
このドキュメントでは、Debian 9 ディストリビューションのサーバーを設定する例を示します。ベースシステムがインストールされ、アップデートされていることを前提としています。
警告
このページでは、Nginxサーバをセキュアにする方法を説明していません。あくまでもデモンストレーションのためのものです。
必要なパッケージのインストール
警告
Lizmap Webクライアントは、Jelix 1.6をベースにしています。少なくとも**5.6**バージョンのPHPをインストールする必要があります。dom、simplexml、pcre、session、tokenizer、spl の各拡張モジュールが必要です(通常、PHP 5.6/7.xの標準的なインストールでは、これらはオンになっています)。
sudo su # only necessary if you are not logged in as root
apt update # update packages list
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
Nginxの再起動
設定を有効にするには、Nginxサーバーを再起動する必要があります。
service nginx restart
Apache Serverの設定
このドキュメントは、Debian 10 ディストリビューションでサーバを設定する例を示しています。ここでは、基本システムのインストールとアップデートが完了していることを前提としています。
警告
このページでは、Apacheサーバーの安全性を確保する方法については説明しません。あくまでもデモ用です。
必要なパッケージのインストール
まず、パッケージリストを更新し、これらのパッケージをインストールしてください。
sudo su # only necessary if you are not logged in as root
apt update
apt-get install xauth htop curl apache2 libapache2-mod-fcgid
apt-get install libapache2-mod-php7.3 php7.3-cgi php7.3-gd php7.3-sqlite php7.3-curl php7.3-xmlrpc php7.3-xml python-simplejson software-properties-common
PHP 7.3 の設定
この例では、Apache mpm-workerを使用しています。そのため、PHP 7.3 を有効にするための設定を手動で行う必要があります。
# Create the configuration file
nano /etc/apache2/conf-available/php.conf
# Copy the following text in it
<Directory /usr/share>
AddHandler fcgid-script .php
FCGIWrapper /usr/lib/cgi-bin/php7.3 .php
Options ExecCGI FollowSymlinks Indexes
</Directory>
<Files ~ (\.php)>
AddHandler fcgid-script .php
FCGIWrapper /usr/lib/cgi-bin/php7.3 .php
Options +ExecCGI
allow from all
</Files>
以下のコマンドラインで設定を有効にします。
a2enconf php
Webの設定
mpm-worker 設定
Apacheの設定ファイルを修正して、オプションをmpm_workerのサーバー構成に合わせます。
nano /etc/apache2/apache2.conf
<IfModule mpm_worker_module>
StartServers 4
MinSpareThreads 25
MaxSpareThreads 100
ThreadLimit 64
ThreadsPerChild 25
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
mod_fcgid configuration
QGISサーバーはFastCGIプロトコル(別名fcgi)で動作しています。したがって、サーバーの能力に合うようにApacheのmod_fcgidを設定する必要があります。
# 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>
圧縮率の設定
nano /etc/apache2/conf-available/mod_deflate.conf
# Add the bellow text in the file
<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>
Apacheを再起動する
設定を確認するために、Apacheサーバーを再起動する必要があります。
service apache2 restart
# or
systemctl restart apache2
ジオロケーションの有効化
Lizmapが提供する自動ジオロケーションは、Googleのサービスに依存しています。これを有効にするには、お使いのwebGISをHTTPSのような安全なプロトコル下に置く必要があります。詳しくはこちらをご覧ください。
データ用のディレクトリの作成
これらのディレクトリには、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 を読んでください。
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 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
を編集することが必要です。
FTPサーバー:pure-ftpd
注釈
このセクションはオプションで、QGIS GIS技術者からLizmapサーバーにデータを転送する方法を独自に設定することができます。
インストール
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 account
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のソースコードのインストール
最新の安定版は、 Githubのリリースページ から入手できます。
警告
GitHubがウェブサイト上で自動的に作成するZIPファイルは使用しないでください。リリースに添付されたZIPのみを使用してください。
# Options
# Check the latest version available, maybe it's not 3.5.1 anymore
# https://github.com/3liz/lizmap-web-client/releases
VERSION=3.5.1
# chose location where download your zip (e.g. /var/www or your home)
LOCATION=/var/www
# Archive recovery with wget
cd $LOCATION
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 $LOCATION/lizmap-web-client-$VERSION/lizmap/www/ /var/www/html/lizmap
# Remove archive
rm $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サービスファイル)でデータベースにアクセスできることだけを確認する必要があります。
sudo apt-get install php7.3-pgsql
sudo service nginx 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
chown :www-data lizmap/install/qgis/edition/ -R
chmod 775 lizmap/install/qgis/edition/ -R
初期設定
lizmapConfig.ini.php
、localconfig.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 Server plugin をお読みください。
デモをインストールしていない場合は、この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のサーバーとしても、ブラウザから追加設定なしでアクセス可能です。
そして、QGISからのアクセスも可能です。
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