6. 高级配置

6.1. 日志记录

要记录发送到服务器的请求,您必须设置以下环境变量:

通过以下变量,可以进一步定制日志记录:

6.2. 环境变量

您可以通过设置来配置QGIS服务器的某些方面 environment variables

根据HTTP服务器和您运行QGIS服务器的方式,有几种方法可以定义这些变量。有关这一点,请参阅 阿帕奇HTTP服务器

名字

描述

默认

服务

QGIS_OPTIONS_PATH

指定带有设置的目录的路径。它的工作方式与QGIS应用程序相同 --optionspath 选择。它正在查找中的设置文件 <QGIS_OPTIONS_PATH>/QGIS/QGIS3.ini

‘’

QGIS_PLUGINPATH

如果您使用的是服务器的Python插件,这将设置搜索Python插件的文件夹,这很有用。

‘’

QGIS_PROJECT_FILE

这个 .qgs.qgz 项目文件,通常作为查询字符串中的参数传递(带有 MAP ),您还可以将其设置为环境变量(例如,使用 mod_rewrite 阿帕奇模块)。

请注意,您也可以指明存储在PostgreSQL中的项目,例如 postgresql://localhost:5432?sslmode=disable&dbname=mydb&schema=myschema&project=myproject

‘’

QGIS_SERVER_ALLOWED_EXTRA_SQL_TOKENS

以逗号分隔的字符串列表,表示作为功能筛选器组件接受的允许的额外SQL令牌。

‘’

WMS

QGIS_SERVER_API_RESOURCES_DIRECTORY

所有OGC API(如OAPIF/WFS3)静态资源(HTML模板、CSS、JS等)的基本目录

取决于包装

OAPIF/WFS3

QGIS_SERVER_APPLICATION_NAME

要使用的应用程序的名称,例如在连接到数据库以标识所连接的QGIS服务器实例时

QGIS3服务器

QGIS_SERVER_API_WFS3_MAX_LIMIT

的最大值 limit 在OAPIF/WFS3功能请求中。

10000

OAPIF/WFS3

QGIS_SERVER_CACHE_DIRECTORY

指定文件系统上的网络缓存目录。

cache 在配置文件目录中

QGIS_SERVER_CACHE_SIZE

以MB为单位设置网络缓存大小。

50 MB

QGIS_SERVER_CAPABILITIES_CACHE_SIZE

要缓存的项目功能的最大数量。

40

QGIS_SERVER_DISABLE_GETPRINT

这是项目级别的一个选项,可通过禁用布局加载来缩短项目读取时间。

激活此选项将禁用QGIS WMS GetPrint请求。将此QGIS项目标志设置为不加载布局。

错误

WMS

QGIS_SERVER_FORCE_READONLY_LAYERS

强制QGIS服务器以只读模式打开所有图层

错误

QGIS_SERVER_IGNORE_BAD_LAYERS

“Bad”层是指无法加载的层。QGIS Server的默认行为是,如果项目包含错误的层,则认为该项目不可用。

通过将此变量设置为,可以覆盖默认行为 1true 。在这种情况下,“坏”层将被忽略,该项目将被认为是有效和可用的。

错误

QGIS_SERVER_LANDING_PAGE_PREFIX

登录页面基本URL的路径组件的前缀

“”

QGIS_SERVER_LANDING_PAGE_PROJECTS_DIRECTORIES

登录页服务用于查找.qgs和.qgz项目的目录

“”

QGIS_SERVER_LANDING_PAGE_PROJECTS_PG_CONNECTIONS

登录页面服务用于查找项目的PostgreSQL连接字符串

“”

QGIS_SERVER_LOG_FILE

指定路径和文件名。确保服务器具有写入文件的适当权限。文件应该是自动创建的,只需向服务器发送一些请求。如果不在那里,请检查权限。

警告

QGIS_SERVER_LOG_FILE从QGIS 3.4起已弃用,请改用QGIS_SERVER_LOG_STDERR。QGIS4.0中将不再支持文件日志记录。

‘’

QGIS_SERVER_LOG_LEVEL

指定所需的日志级别。可选值为:

  • 0INFO (记录所有请求)

  • 1 or WARNING

  • 2CRITICAL (只记录关键错误,适用于生产目的)

0

QGIS_SERVER_LOG_PROFILE

将详细的配置文件信息添加到日志中,仅当QGIS_SERVER_LOG_LEVEL=0时有效

错误

QGIS_SERVER_LOG_STDERR

激活到stderr的日志记录。此变量在以下情况下不起作用 QGIS_SERVER_LOG_FILE 已经设置好了。

  • 0false (不区分大小写)

  • 1true (不区分大小写)

错误

QGIS_SERVER_MAX_THREADS

激活并行渲染时要使用的线程数。如果值为 -1 它使用处理器核心的数量。

-1

QGIS_SERVER_OVERRIDE_SYSTEM_LOCALE

设置QGIS服务器要使用的区域设置。默认值为空(无替代)。

示例: de_CH.utf8

‘’

QGIS_SERVER_PARALLEL_RENDERING

激活WMS GetMap请求的并行呈现。它被禁用了 (false )默认情况下。可选值为:

  • 0false (不区分大小写)

  • 1true (不区分大小写)

错误

WMS

QGIS_SERVER_PROJECT_CACHE_CHECK_INTERVAL

控制缓存失效的定期策略间隔

QGIS_SERVER_PROJECT_CACHE_STRATEGY

定义使项目缓存无效的方法。可用的策略包括:

  • filesystem :使用文件系统观察器策略

  • periodic :使用上次修改的项目值检查对项目配置的更改。在非典型文件系统(如NFS)上很方便,或者当项目文件存储在数据库系统(如PostgreSQL)中时。

  • off :完全禁用内部缓存失效

文件系统

QGIS_SERVER_SERVICE_URL

这是一个选项,用于设置项目中不存在的服务URL。

服务URL定义自(按优先顺序):

  • 每项服务在项目中定义的价值

  • 这个 QGIS_SERVER_<service>_SERVICE_URL 环境变量

  • 这个 QGIS_SERVER_SERVICE_URL 环境变量

  • 这个 X-Qgis-<service>-Service-Url 标题

  • 这个 X-Qgis-Service-Url 标题

  • Forwarded 标题

  • X-Forwarded-HostX-Forwarded-Proto 标题

  • Host 标头和服务器协议

  • 从服务器名称和服务器协议构建。

在后四种情况下,生成的服务URL基于 MAP 在查询字符串和传入路径请求上提供的参数。

‘’

QGIS_SERVER_SHOW_GROUP_SEPARATOR

定义组分隔符(例如,千位分隔符)是否应用于数值(例如,在GetFeatureInfo响应中)。缺省值为 0

  • 0false (不区分大小写)

  • 1true (不区分大小写)

错误

WMS

QGIS_SERVER_TRUST_LAYER_METADATA

这是项目级别的一个选项,可通过使用项目元数据中定义的矢量图层范围并禁用检查PostgreSQL/PostGIS图层主关键字唯一性来缩短项目读取时间。

通过将此变量设置为,可以强制信任图层元数据 1true 。然后,向量层的范围将是项目中定义的范围,并且在数据源中定义的PostgreSQL/PostGIS图层的主键将被视为唯一的,无需检查。

如果在项目使用过程中没有固定图层范围,请不要使用它。

错误

QGIS_SERVER_WCS_SERVICE_URL

这是一个选项,用于设置项目中不存在的服务URL。看见 QGIS_SERVER_SERVICE_URL 以获取更多信息。

‘’

WCS

QGIS_SERVER_WFS_SERVICE_URL

这是一个选项,用于设置项目中不存在的服务URL。看见 QGIS_SERVER_SERVICE_URL 以获取更多信息。

‘’

WFS

QGIS_SERVER_WMS_MAX_HEIGH/QGIS_SERVER_WMS_MAX_WIDTH

WMS请求的最大高度/宽度。在这个和项目1之间使用的是最保守的。如果该值为 -1 ,这意味着没有最大值集合。

-1

WMS

QGIS_SERVER_WMS_SERVICE_URL

这是一个选项,用于设置项目中不存在的服务URL。看见 QGIS_SERVER_SERVICE_URL 以获取更多信息。

‘’

WMS

QGIS_SERVER_WMTS_SERVICE_URL

这是一个选项,用于设置项目中不存在的服务URL。看见 QGIS_SERVER_SERVICE_URL 以获取更多信息。

‘’

WMTS

QUERY_STRING

查询字符串,通常由Web服务器传递。在从命令行测试QGIS服务器二进制文件时,此变量非常有用。

例如,要在命令行上测试对也需要在pg_service.conf文件中定义的PostgreSQL连接的项目的GetCapability请求:

PGSERVICEFILE=/etc/pg_service.conf \
QUERY_STRING="MAP=/home/projects/world.qgs&SERVICE=WMS&REQUEST=GetCapabilities" \
/usr/lib/cgi-bin/qgis_mapserv.fcgi

结果应该是GetCapability响应的内容,或者如果出现问题,则是一条错误消息。

‘’

6.3. 设置摘要

当QGIS服务器启动时,您可以根据环境变量获得所有可配置参数的摘要。此外,还会显示当前使用的值和来源。

例如,使用spawn-fcgi:

export QGIS_OPTIONS_PATH=/home/user/.local/share/QGIS/QGIS3/profiles/default/
export QGIS_SERVER_LOG_STDERR=1
export QGIS_SERVER_LOG_LEVEL=2
spawn-fcgi -f /usr/lib/cgi-bin/qgis_mapserv.fcgi -s /tmp/qgisserver.sock -U www-data -G www-data -n

 QGIS Server Settings:

   - QGIS_OPTIONS_PATH / '' (Override the default path for user configuration): '/home/user/.local/share/QGIS/QGIS3/profiles/default/' (read from ENVIRONMENT_VARIABLE)

   - QGIS_SERVER_PARALLEL_RENDERING / '/qgis/parallel_rendering' (Activate/Deactivate parallel rendering for WMS getMap request): 'true' (read from INI_FILE)

   - QGIS_SERVER_MAX_THREADS / '/qgis/max_threads' (Number of threads to use when parallel rendering is activated): '4' (read from INI_FILE)

   - QGIS_SERVER_LOG_LEVEL / '' (Log level): '2' (read from ENVIRONMENT_VARIABLE)

   - QGIS_SERVER_LOG_STDERR / '' (Activate/Deactivate logging to stderr): '1' (read from ENVIRONMENT_VARIABLE)

   - QGIS_PROJECT_FILE / '' (QGIS project file): '' (read from DEFAULT_VALUE)

   - MAX_CACHE_LAYERS / '' (Specify the maximum number of cached layers): '100' (read from DEFAULT_VALUE)

   - QGIS_SERVER_CACHE_DIRECTORY / '/cache/directory' (Specify the cache directory): '/root/.local/share/QGIS/QGIS3/profiles/default/cache' (read from DEFAULT_VALUE)

   - QGIS_SERVER_CACHE_SIZE / '/cache/size' (Specify the cache size): '52428800' (read from INI_FILE)

 Ini file used to initialize settings: /home/user/.local/share/QGIS/QGIS3/profiles/default/QGIS/QGIS3.ini

在这个特殊的案例中,我们知道 QGIS_SERVER_MAX_THREADSQGIS_SERVER_PARALLEL_RENDERING 值是从位于 QGIS_OPTIONS_PATH 目录(通过环境变量定义)。Ini文件中的相应条目为 /qgis/max_threads/qgis/parallel_rendering 他们的价值观是 true4 线。

6.4. 连接到服务文件

为了使Apache了解PostgreSQL服务文件(请参阅 PostgreSQL服务连接文件 部分)您需要使您的 *.conf 文件如下所示:

SetEnv PGSERVICEFILE /home/web/.pg_service.conf

<Directory "/home/web/apps2/bin/">
  AllowOverride None
.....

6.5. 将字体添加到您的Linux服务器

请记住,您可以使用指向其他计算机上默认不存在的字体的QGIS项目。这意味着,如果您共享项目,它在其他计算机上可能看起来不同(如果目标计算机上不存在字体)。

为了确保这种情况不会发生,您只需在目标计算机上安装缺少的字体。在桌面系统上执行此操作通常很简单(双击字体)。

对于Linux,如果您没有安装桌面环境(或者您更喜欢使用命令行),则需要:

  • 在基于Debian的系统上:

    sudo su
    mkdir -p /usr/local/share/fonts/truetype/myfonts && cd /usr/local/share/fonts/truetype/myfonts
    
    # copy the fonts from their location
    cp /fonts_location/* .
    
    chown root *
    cd .. && fc-cache -f -v
    
  • 在基于Fedora的系统上:

    sudo su
    mkdir /usr/share/fonts/myfonts && cd /usr/share/fonts/myfonts
    
    # copy the fonts from their location
    cp /fonts_location/* .
    
    chown root *
    cd .. && fc-cache -f -v