QGIS Serverをインストールする!(Ubuntu Server 22.04)

Ubuntu Server 22.04に、QGIS Serverをインストールします。

使用する環境を確認する!

使用する環境を確認します。

$ hostnamectl
 Static hostname: vmsgis21
       Icon name: computer-vm
         Chassis: vm
      Machine ID: e18a27fbe8ac4dbcb89641f30b005d2e
         Boot ID: 68b9de348cf84f0ea516901b323f91b9
  Virtualization: oracle
Operating System: Ubuntu 22.04.3 LTS              
          Kernel: Linux 5.15.0-84-generic
    Architecture: x86-64
 Hardware Vendor: innotek GmbH
  Hardware Model: VirtualBox

前提パッケージをインストールする!

今回使用するUbuntu Server 22.04では、前提となるパッケージはインストール済みでした。

$ sudo apt install gnupg software-properties-common
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
gnupg is already the newest version (2.2.27-3ubuntu2.1).
gnupg set to manually installed.
software-properties-common is already the newest version (0.99.22.7).
software-properties-common set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.

QGISのリポジトリを登録する!

QGISのキーリングをダウンロードします。

$ sudo wget -O /etc/apt/keyrings/qgis-archive-keyring.gpg https://download.qgis.org/downloads/qgis-archive-keyring.gpg
--2024-01-06 08:07:01--  https://download.qgis.org/downloads/qgis-archive-keyring.gpg
Resolving download.qgis.org (download.qgis.org)... 104.21.71.41, 172.67.143.23, 2606:4700:3035::ac43:8f17, ...
Connecting to download.qgis.org (download.qgis.org)|104.21.71.41|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1969 (1.9K)
Saving to: ‘/etc/apt/keyrings/qgis-archive-keyring.gpg’

/etc/apt/keyrings/qgis-archiv 100%[=================================================>]   1.92K  --.-KB/s    in 0.003s  

2024-01-06 08:07:02 (726 KB/s) - ‘/etc/apt/keyrings/qgis-archive-keyring.gpg’ saved [1969/1969]

QGISのリポジトリを登録します。

$ sudo cat <<EOF | sudo tee /etc/apt/sources.list.d/qgis.sources
Types: deb deb-src
URIs: https://qgis.org/ubuntu
Suites: jammy
Architectures: amd64
Components: main
Signed-By: /etc/apt/keyrings/qgis-archive-keyring.gpg
EOF
Types: deb deb-src
URIs: https://qgis.org/ubuntu
Suites: jammy
Architectures: amd64
Components: main
Signed-By: /etc/apt/keyrings/qgis-archive-keyring.gpg

リポジトリの情報を最新化します。

$ sudo apt update

QGIS Serverをインストールする!

$ sudo apt install qgis qgis-plugin-grass qgis-server

インストール状態を確認します。

$ /usr/lib/cgi-bin/qgis_mapserv.fcgi
Application path not initialized
Application path not initialized
Application path not initialized
Application path not initialized
Warning 1: Unable to find driver ECW to unload from GDAL_SKIP environment variable.
Warning 1: Unable to find driver ECW to unload from GDAL_SKIP environment variable.
Warning 1: Unable to find driver JP2ECW to unload from GDAL_SKIP environment variable.
"Loading native module /usr/lib/qgis/server/libdummy.so"
"Loading native module /usr/lib/qgis/server/liblandingpage.so"
"Loading native module /usr/lib/qgis/server/libwcs.so"
"Loading native module /usr/lib/qgis/server/libwfs.so"
"Loading native module /usr/lib/qgis/server/libwfs3.so"
"Loading native module /usr/lib/qgis/server/libwms.so"
"Loading native module /usr/lib/qgis/server/libwmts.so"
Content-Length: 0
Location: http:/index.json
Server:  QGIS FCGI server - QGIS version 3.34.2-Prizren
Status:  302

サンプルのQGISのプロジェクトを配置する!

動作確認のためサンプルのQGISのプロジェクトを配置します。

$ sudo apt install unzip
$ sudo mkdir -p /home/qgis/projects/
$ cd /home/qgis/projects/
$ sudo wget https://github.com/qgis/QGIS-Training-Data/archive/release_3.22.zip
$ sudo unzip release_3.22.zip
$ sudo mv QGIS-Training-Data-release_3.22/exercise_data/qgis-server-tutorial-data/world.qgs .
$ sudo mv QGIS-Training-Data-release_3.22/exercise_data/qgis-server-tutorial-data/naturalearth.sqlite .

Apacheをインストールする!

QGIS Serverを動作させるWebサーバとして、Apacheをインストールします。

$ sudo apt install apache2 libapache2-mod-fcgid

仮想ホストを作成する!

QGIS Server用の仮想ホストを作成します。

sudo cat <<EOF | sudo tee /etc/apache2/sites-available/qgis.demo.conf
<VirtualHost *:80>
  ServerAdmin webmaster@localhost
  ServerName qgis.demo

  DocumentRoot /var/www/html

  # Apache logs (different than QGIS Server log)
  ErrorLog ${APACHE_LOG_DIR}/qgis.demo.error.log
  CustomLog ${APACHE_LOG_DIR}/qgis.demo.access.log combined

  # Longer timeout for WPS... default = 40
  FcgidIOTimeout 120

  FcgidInitialEnv LC_ALL "en_US.UTF-8"
  FcgidInitialEnv PYTHONIOENCODING UTF-8
  FcgidInitialEnv LANG "en_US.UTF-8"

  # QGIS log
  FcgidInitialEnv QGIS_SERVER_LOG_STDERR 1
  FcgidInitialEnv QGIS_SERVER_LOG_LEVEL 0

  # default QGIS project
  SetEnv QGIS_PROJECT_FILE /home/qgis/projects/world.qgs

  # QGIS_AUTH_DB_DIR_PATH must lead to a directory writeable by the Server's FCGI process user
  FcgidInitialEnv QGIS_AUTH_DB_DIR_PATH "/home/qgis/qgisserverdb/"
  FcgidInitialEnv QGIS_AUTH_PASSWORD_FILE "/home/qgis/qgisserverdb/qgis-auth.db"

  # Set pg access via pg_service file
  SetEnv PGSERVICEFILE /home/qgis/.pg_service.conf
  FcgidInitialEnv PGPASSFILE "/home/qgis/.pgpass"

  # if qgis-server is installed from packages in debian based distros this is usually /usr/lib/cgi-bin/
  # run "locate qgis_mapserv.fcgi" if you don't know where qgis_mapserv.fcgi is
  ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
  <Directory "/usr/lib/cgi-bin/">
    AllowOverride None
    Options +ExecCGI -MultiViews -SymLinksIfOwnerMatch
    Require all granted
  </Directory>

  <IfModule mod_fcgid.c>
  FcgidMaxRequestLen 26214400
  FcgidConnectTimeout 60
  </IfModule>

</VirtualHost>
EOF

仮想ホスト用のディレクトリを作成します。

$ sudo mkdir -p /var/log/qgis/
$ sudo chown www-data:www-data /var/log/qgis
$ sudo mkdir -p /home/qgis/qgisserverdb
$ sudo chown www-data:www-data /home/qgis/qgisserverdb

仮想ホストを有効化します。

$ sudo a2enmod fcgid
$ sudo a2ensite qgis.demo
$ sudo a2dissite 000-default.conf
$ sudo systemctl restart apache2

QGIS Serverにアクセスするためにhostsを編集する!

QGIS Serverにアクセスするクライアント用のマシンのhostsにQGIS Serverを登録します。

XXX.XXX.XXX.XXX qgis.demo

QGISサーバにアクセスする!

以下のURLでアクセスしてみます。XMLファイルが表示されれば成功です。

http://qgis.demo/cgi-bin/qgis_mapserv.fcgi?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities

QGISサーバのプロジェクトにアクセスする!

以下のURLでQGISサーバのプロジェクトにアクセスしてみます。世界地図が表示されれば成功です。

http://qgis.demo/cgi-bin/qgis_mapserv.fcgi?
  MAP=/home/qgis/projects/world.qgs&
  LAYERS=countries&
  SERVICE=WMS&
  VERSION=1.3.0&
  REQUEST=GetMap&
  CRS=EPSG:4326&
  WIDTH=400&
  HEIGHT=200&
  BBOX=-90,-180,90,180

おわりに

Ubuntu Server 22.04を使用すると、QGISのリポジトリから容易にQGIS Serverをインストールすることができます。

関連記事

参考情報

QGIS Server - Installation on Debian-based systems