11.1. 课: 安装 QGIS Server

本课目标: 了解如何在 Debian Stretch 安装 QGIS Server 。您也可以在任何基于Debian的发行版 (如Ubuntu及其衍生系统) 中安装与使用,只是有点微不足道的差异。

备注

在Ubuntu中,您可以是普通用户身份,并在使用 sudo 命令时获取管理员权限。在Debian中,您可以作为管理员 (root) 工作,而无需使用 sudo

11.1.1. moderate 跟我做: 从软件包安装

在本课,我们将只从 此处 所示的软件包中进行安装。

安装 QGIS Server 使用:

apt install qgis-server --no-install-recommends --no-install-suggests

# if you want to install server plugins, also:
apt install python-qgis

QGIS Server 不应与 QGIS Desktop (以及附带的X服务器) 安装在同一台机器的情况下用于生产环境。

11.1.2. moderate 跟我做: QGIS Server 可执行文件

QGIS Server 可执行文件是 qgis_mapserv.fcgi 。您可以通过运行 find / -name 'qgis_mapserv.fcgi' 来检查它的安装位置,应该输出如 /usr/lib/cgi-bin/qgis_mapserv.fcgi 这样的内容。

或者,如果此时要执行命令行测试,可以运行 /usr/lib/cgi-bin/qgis_mapserv.fcgi --version 命令,应该输出如下内容:

QGIS 3.21.0-Master 'Master' (1c70953f1e)
QGIS code revision 1c70953f1e
Qt version 5.15.2
Python version 3.9.5
GDAL/OGR version 3.2.2
PROJ version 7.2.1
EPSG Registry database version v10.008 (2020-12-16)
GEOS version 3.9.0-CAPI-1.16.2
SQLite version 3.34.1
OS Ubuntu 21.04

稍后我们将了解如何发出WMS请求。

11.1.3. hard HTTP Server 配置

为了从互联网浏览器访问已安装的QGIS服务器,我们需要使用HTTP服务器。Apache HTTP服务器的安装方法在 Apache HTTP Server 一节中有详细说明。

备注

如果安装 QGIS Server 时没有运行 X 服务器 (包含在 Linux Desktop 中),并且还想使用 GetPrint 命令,那么应该安装一个模拟 X 服务器,并告诉QGIS服务器使用它。您可以通过学习 Xvfb安装方法 来实现。

11.1.4. moderate 跟我做: 创建另一个虚拟主机

让我们创建另一个指向QGIS服务器的Apache虚拟主机。可以选择任何您喜欢的名称 (coco.bango, super.duper.training, example.com 等等),但为了简单起见,我们将使用 myhost

  • 让我们使用以下命令: sh -c "echo '127.0.0.1 myhost' >> /etc/hosts" ,或手动编辑文件 gedit /etc/hosts ,将 127.0.0.1 x 添加到 /etc/hosts 来设置 myhost 名称以指向本地主机IP。

  • 可以通过在终端运行 ping myhost 命令来检查 myhost 是否指向本地主机,该命令应输出:

qgis@qgis:~$ ping myhost
PING myhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.024 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.029 ms
  • 让我们尝试一下是否可以通过执行以下命令从 myhost 站点访问QGIS服务器: curl http://myhost/cgi-bin/qgis_mapserv.fcgi 或者从 Debian box 浏览器访问URL。您可能会得到:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /cgi-bin/qgis_mapserv.fcgi was not found on this server.</p>
<hr>
<address>Apache/2.4.25 (Debian) Server at myhost Port 80</address>
</body></html>
  • Apache不知道他应该回答指向名为 myhost 服务器的请求。为了设置虚拟主机,最简单的方法是在 /etc/apache2/sites-available 目录中创建一个 myhost.conf 文件,其内容与 qgis.demo.conf 相同,但 ServerName 行应为 ServerName myhost 。您还可以更改日志的位置,否则两个虚拟主机的日志将被共享,但这是可选的。

  • 现在让我们使用 a2ensite myhost.conf 启用虚拟主机,然后使用 service apache2 reload 重新加载Apache服务。

  • 如果您再次尝试访问 http://myhost/cgi-bin/qgis_mapserv.fcgi URL,您会注意到现在一切正常!

11.1.5. 综上所述

您学习了如何从软件包中安装不同的QGIS服务器版本,如何在基于Debian的Linux发行版使用QGIS服务器配置Apache。

11.1.6. 下节引言

现在您已经安装了QGIS服务器,并且可以通过HTTP协议访问,我们需要了解如何访问它可以提供的一些服务。下一课的主题是学习如何访问 QGIS Server WMS 服务。