动物园内核配置

主配置文件

Zoo内核常规设置是在名为 main.cfg .此文件与zoo kernel存储在同一目录中 (/usr/lib/cgi-bin/ 在大多数情况下)。它提供了关于动物园内核安装的有用元数据信息。

警告

动物园内核 (/usr/lib/cgi-bin/zoo_loader.cgi )及其配置文件 (/usr/lib/cgi-bin/main.cfg )必须在同一目录中。

注解

所含信息 /usr/lib/cgi-bin/main.cfg 在运行时可从WPS服务访问,因此 执行 使用请求。

默认主.cfg

一个例子 main.cfg 此处提供文件作为参考。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
[headers]
X-Powered-By=ZOO@ZOO-Project

[main]
version=1.0.0
encoding=utf-8
dataPath=/var/data
tmpPath=/var/www/temp
cacheDir=/var/www/cache
sessPath=/tmp
serverAddress=http://localhost/cgi-bin/zoo_loader.cgi
lang=fr-FR,ja-JP
language=en-US
mapserverAddress=http://localhost/cgi-bin/mapserv.cgi
msOgcVersion=1.0.0
tmpUrl=http:/localhost/temp/
cors=false

[identification]
keywords=t,ZOO-Project, ZOO-Kernel,WPS,GIS
title=ZOO-Project demo instance
abstract= This is ZOO-Project, the Open WPS platform.
accessConstraints=none
fees=None

[provider]
positionName=Developer
providerName=GeoLabs SARL
addressAdministrativeArea=False
addressDeliveryPoint=1280, avenue des Platanes
addressCountry=fr
phoneVoice=+33467430995
addressPostalCode=34970
role=Dev
providerSite=http://geolabs.fr
phoneFacsimile=False
addressElectronicMailAddress=gerald@geolabs.fr
addressCity=Lattes
individualName=Gerald FENOY

主要部分

主.cfg [main] 截面参数解释如下。

  • version :支持的WPS版本。

  • encoding :WPS响应的默认编码。

  • dataPath :存储数据文件的目录的路径(用于在激活MapServer支持时存储映射文件和数据)。

  • tmpPath :存储临时文件的目录路径(例如 ExecuteResponse 什么时候? 存储执行响应 设置为真)。

  • tmpUrl :访问临时文件目录的URL(参见 tmpPath

  • cacheDir :缓存请求文件的目录路径 1 存储(可选)。

  • serverAddress :动物园内核实例的URL。

  • mapservAddress :映射服务器实例的URL(可选)。

  • msOgcVersion :所有支持的OGC Web服务输出的版本 2 (可选)。

  • lang :支持昏迷分隔的自然语言(第一种是默认语言);

  • cors: Define if the ZOO-Kernel should support Cross-Origin Resource Sharing .如果没有定义这个参数,那么zoo内核将不支持cors。

  • servicePath :定义特定位置以搜索服务,而不是使用zoo内核目录。如果未定义此参数,则zoo内核将使用其目录搜索服务。

  • libPath :(可选)指向Zoo内核应在其中搜索服务提供者的目录的路径,例如,带有服务实现的共享库(the serviceProvider 服务配置(.zcfg)文件中的参数)。

  • memory :(可选)可以获取值 load 确保输入数据的值字段将由动物园内核或 protected 只有 cache_file 填满。

  • handleText :(可选)设置为 true 获取包含不需要单个CDATA节点的文本的复杂数据节点。请注意,如果您在那里使用了任何HTML或XML,那么您将需要重新构建字符串以从服务代码中获取文本的原始格式。如果不添加handleText或将其值设置为true,则只需使用Execute请求中提供的单个CDATA节点中提供的值。

警告

这个 libPath 参数目前只被C/C++或PHP中实现的服务所识别,并且可以在将来的版本中移动到另一节。

警告

取决于 memory 参数WPS服务将接收不同的字段 (valuecache_file

如果您激活了MapServer支持,请参阅 this specific section .

身份和提供者

这个 [identification] and [provider] sections are not ZOO-Project specific. They provide OGC metadata 3 and should be set according to the XML Schema Document 它编码了常用的ISO 19115部分 ServiceIdentificationServiceProvider 部分 GetCapabilities 操作响应,称为服务元数据XML文档。

通用OWS 1.1.0的详细信息 ServiceIdentification 可在此中找到节 XML Schema Document .

通用OWS 1.1.0的详细信息 ServiceProvider 可在此中找到节 XML Schema Document .

附加部分

以下章节中描述的所有附加章节都是可选的。

标题部分

这个 [headers] 可以设置节以定义特定的HTTP响应头,该头将用于每个响应。例如,您可以使用 curl 命令行工具并注意特定的标题 X-Powered-By: Zoo-Project@Trac .

如果您想允许CORS支持来自 myhost.net ,则应在此部分中定义以下最小参数:

1
2
3
Access-Control-Allow-Origin=myhost.net
Access-Control-Allow-Methods=POST
Access-Control-Allow-Headers=content-type

卷曲截面

这个 [curl] section is used on windows platform to specify, using the cainfo parameter, where is located the cacert.pem 在您的计算机上归档。下面提供一个示例来说明设置。

1
2
[curl]
cainfo=./cacert.pem

ENV部分

这个 [env] 节可用于存储要在加载之前设置的特定环境变量 服务提供商 以及服务执行。

一个典型的例子是当服务需要访问运行在 帧缓冲区 ,用于设置显示环境变量,如下所示:

1
2
[env]
DISPLAY=:1

如果您激活了OTB支持,请参阅 this specific section .

Lenv段

这个 lenv Zoo内核在执行WPS服务之前使用部分存储运行时信息,它包含以下参数:

  • sid (R):WPS服务唯一标识符,

  • status (rw):当前进度值(0到100%之间的值)( % )),请

  • cwd (R):动物园内核的当前工作目录,

  • message (rw):当 SERVICE_FAILED 返回(可选),

  • cookie (rw):要返回到客户机的cookie(例如用于身份验证)。

  • file.pid (R):动物园内核用来存储进程标识符的文件。

  • file.sid (R):zoo内核用来存储服务标识符的文件。

  • file.responseInit (R):zoo内核用来存储初始(然后是最终)WPS响应的文件。

  • file.responseFinal (R):动物园内核用来临时存储最终WPS响应的文件。

钢筋截面

这个 renv 部分由zoo内核在执行WPS服务之前自动创建,它包含运行时可用的所有环境变量(因此,如果通过HTTP使用,则包括头字段,请参阅 [https://tools.ietf.org/html/rfc3875 rfc3875] 了解更多详细信息)。

Senv段

这个 senv 部分可用于在服务器端存储会话信息。然后,如果使用有效的cookie(如中定义的)请求服务器,则可以从服务自动访问这些信息。 lenv 第节)。动物园内核将存储在 senv 在磁盘上映射,加载它并动态地将其内容替换为 main.cfg . 这个 senv 节必须至少包含以下参数:

  • XXX :会话唯一标识符,其中 XXX 返回的cookie中包含的名称。

conf["lenv"]["cookie"]="XXX=XXX1000000; path=/"
conf["senv"]={"XXX": "XXX1000000","login": "demoUser"}

意味着动物园内核将创建一个名为 sess_XXX1000000.cfgcacheDir 目录,并将指定的cookie返回到客户端。每次客户端使用这个cookie请求zoo内核时,它都会自动加载服务执行前存储的值。

安全科

这个 [security] 节可用于定义请求中动物园内核最初接收到的头文件应传递给其他服务器以访问资源(例如WMS、WFS、WCS或作为引用传递的任何其他文件)。本节包含两个参数:

  • attributes :要传递给其他服务器的头(如授权、cookie、用户代理…),

  • hosts :应用限制的主机(可以是“*”将头转发到每台服务器,也可以是以昏迷分隔的主机名、域、IP列表)。

这两个参数都是必需的。

假设您需要将授权、cookie和用户代理共享到每个服务器以访问资源,那么yo ucan使用以下部分定义:

[security]
attributes=Authorization,Cookie,User-Agent
hosts=*

如果只有本地服务器需要这样的头转发,您可以使用以下定义:

[security]
attributes=Authorization,Cookie,User-Agent
hosts=localhost,127.0.0.1

可选,您还可以定义共享的URL,这意味着即使资源要求访问身份验证,也不会使用此身份验证来定义存储文件的名称。因此,具有不同身份验证的两个用户将使用与共享文件相同的文件。下面是包含共享参数的示例安全部分。在本例中,使用共享参数中定义的URL访问覆盖率的每个请求 (myHost/cgi-bin/WCS_Server )将在用户之间共享。

[security]
attributes=Authorization,Cookie,User-Agent
hosts=localhost,127.0.0.1
shared=myHost/cgi-bin/WCS_Server

数据库部分

数据库部分允许配置 ZOO-Kernel optional database support .

[database]
dbname=zoo_project
port=5432
user=username
host=127.0.0.1
type=PG
schema=public

这将生成要传递给gdal以连接数据库服务器的字符串:

<type>:host=<host> port=<port>  user=<user> dbname=<dbname>

对于上一个数据库部分,它将给出以下内容:

PG:"dbname=zoo_project host=127.0.0.1 port=5432 user=username"

请参考这个 section 了解如何设置数据库。

MetaDB部分

metadb部分允许将zoo内核配置为访问 the metadata information about WPS Services 除了zcfg文件之外,还使用了postgresql数据库。

[metadb]
dbname=zoo_metadb
port=5432
user=username
host=127.0.0.1
type=PG

这将生成要传递给gdal以连接数据库服务器的字符串:

<type>:host=<host> port=<port>  user=<user> dbname=<dbname>

对于上一个数据库部分,它将给出以下内容:

PG:"dbname=zoo_metadb host=127.0.0.1 port=5432 user=username"

请参考这个 section 了解如何设置数据库。

包含节

这个 [include] 部分(可选)明确列出了Zoo内核应该解析的一组服务配置文件,例如,

1
2
3
[include]
servicename1 = /my/service/repository/service1.zcfg
servicename2 = /my/service/repository/service2.zcfg

这个 [include] 部分可用于控制哪些服务向特定用户组公开。虽然服务配置文件(.zcfg)可能位于公共存储库或任意文件夹中,但不同URL的main.cfg文件可能包含不同的服务子集。

当zoo内核处理请求时,它将首先检查是否存在 [include] 然后在当前工作目录(cwd)和子目录中搜索其他.zcfg文件。如果包含的服务恰好位于cwd(sub)目录中,它将以其名称在 [include] 第节。例如,服务 /[CWD]/name/space/myService.zcfg 通常发布为name.space.myservice,但如果它列在 [include] 第节它将简单地作为myservice发布:

1
2
[include]
myService =  /[CWD]/name/space/myService.zcfg

另一方面,

1
2
[include]
myService =  /some/other/dir/myService.zcfg

将分别以myservice和name.space.myservice的形式发布两个不同的服务,使用两个不同的zcfg文件。

注解

与当前实现的一样,zoo内核在cwd中搜索包含服务的库文件,如果 libPath 未设置参数。

OpenAPI规范配置文件

从ZOO内核的949修订版开始,现在可以激活ogcapi处理支持。在这种情况下,你需要 oas.cfg 文件位于同一目录中 main.cfg 是。

这个 oas.cfg 文件的语法规则与 main.cfg . ZOO内核使用此文件生成有关它所引用的openapi规范的信息。

oas.cfg 文件应该是 [openapi] . 它包含以下参数:

  • rootUrl :使用OGC API-Processing访问ZOO内核的URL

  • links :从根目录提供的链接

  • paths :完整路径列表

  • parameters :在路径中定义的参数列表

  • header_parameters :参数列表客户端应用程序可以作为标头发送

  • version :开放式API规范版本

  • license_name :服务的许可证名称

  • license_url :许可证URL

  • full_html_support :将其设置为true以激活Accept头的支持,以便在text/html或application/json格式之间进行选择

  • partial_html_support: set it to true in case you have the display service from the open-api directory 你想在链接中确认text/html格式

  • wsUrl :将客户端订阅到redis的WebSocket URL

  • publisherUrl :用于发布状态更新的URL

对于任何链接和路径 /A defined, you will have a corresponding [/A] and [A] sections. In the [/A] section you will define the rel, type and title used from the root URL to produce the links 列表和 paths object 从。在相应的 [A] 部分中,您将定义以下参数:

  • method :用于访问此资源的HTTP方法

  • title :资源标题

  • abstract :资源描述

  • tags :用于分类此资源的标记

  • tags_description :标记说明

  • schema :指定资源的架构

如果要定义多个方法来访问资源,那么可以使用length参数定义要解析的参数组的数量,然后使用 method_1title_1abstract_1tags_1tags_description_1schema_1 依此类推,向该资源添加一个或多个访问方法(和其他属性)。

在声明资源访问时,您可能需要在请求中添加一个参数。在这种情况下,您可以添加名为“parameters”的参数,该参数包含受支持的参数列表。定义的所有参数都应以“组件”字段为根。可以在路径中使用的参数将由 {{NAME}} 并将得到其定义的特定部分:

  • type :参数的性质(即字符串)

  • title :参数标题

  • abstract :参数说明

  • in :可以使用参数的位置(即路径、标头、查询)

  • required :定义参数是可选的(false)还是不是(true)

  • example :(可选)提供示例值/URL

除了前面定义的部分之外,还有三个我们还没有涉及的部分。这些部分包括:

  • [requestBody] :定义请求正文抽象(description)、类型(application/json)和架构(reference)。

  • [exception] :定义异常bastract(description)、类型(application/json)和架构(reference)。

  • [conformTo] :引用服务器实现并遵循的需求类的链接列表

万一你已经准备好了 partial_html_support or partial_html_support set to true, then you can add a corresponding [A.html] section providing the link informations. Also, it means that you are willing to let the client choose in between application/json and text/html format by providing the corresponding Accept header in its request, when full_html_support is set to true or by using the .html extension in the URL, in case partial_html_support was set true. Also, the user interface provided in the open-api directory 将让客户端一直运行到执行作业。如果您希望此功能正常工作,我们邀请您使用 .htaccess equivalent to the one provided here . 也可以使用WebSocket在与 subscriber.py 脚本,最后需要添加 publish.py 在web服务器的cgi-bin目录中编写脚本。

有关如何与此WPS REST绑定交互的更多信息,请参阅 page 或者使用 Swagger UI . 有一个活动实例可用 here .

脚注

1

如果传递了GET请求 xlink:href 对于Zoo内核,后者将第一次执行请求并将结果存储在磁盘上。下次执行相同的请求时,将使用缓存文件,这将使进程运行得更快。如果 cachedir 未在中指定 main.cfg 然后 tmpPath 将使用值。

2

有用的时候 可选的MapServer支持 已激活(自动物园项目1.3.0版起可用)。

3

Zoo内核和MapServer为OGC Web服务共享相同的元数据,如果 可选的MapServer支持 被激活。