生产使用

这一段分享了关于建立生产用地理网络的一些指导。

数据库

GeoNetwork提供了一个基于文件的H2数据库。在生产环境中,请确保切换到外部数据库系统,如PostGres、Oracle或sqlserver。关于数据库设置的更多信息 配置数据库

JNDI是一种允许GeoNetwork将数据库配置委托给Tomcat的技术。通过使用JNDI,可以轻松地配置数据库,而无需更改应用程序文件夹中的配置文件。

地理网络可能会耗尽数据库连接,特别是如果一个目录设置了许多收割机。您可以增加允许的连接数(如果数据库允许的话)。但也要考虑建立一些定期监测,以评估地理网络是否正在断开连接。如果连接不足,目录将抛出随机错误。

Java容器

GeoNetwork需要Java 8。Oracle JRE版本8即将结束,我们建议使用 openJDK .

geonnetwork带有一个名为Jetty的默认容器。Jetty是一个强大的最小容器实现。如果需要更多配置选项,请考虑使用Tomcat。可以使用其他容器,但用户体验并不多。阅读更多 使用WAR文件安装

如果在Tomcat前面运行Apache,请确保启用 AJP ,否则登录时可能会遇到“页面未找到”错误。在Apache2上,启用 mod_proxy_ajp 并设置 ProxyPassProxyPassReverse 在apache2.conf上,要在Tomcat URL和端口8009上使用AJP协议:

ProxyPass /geonetwork ajp://gn_tomcat_host:8009/geonetwork
ProxyPassReverse /geonetwork ajp://gn_tomcat_host:8009/geonetwork

在Tomcat9上,在端口8009上定义一个AJP连接器服务器.xml.

在生产使用中,一个常见的挑战是Java只有一组有限的本机信任的根证书。如果GeoNetwork试图访问一个安全服务器,而该服务器的证书不受Java信任,则会导致问题。管理员必须明确 load the certificate in to the Java keystore .

数据文件夹

GeoNetwork需要一个数据文件夹来存储管理员和管理者上传的对象以及一些配置选项。默认情况下,此文件夹位于 /geonetwork/WEB-INF/data . 在生产环境中,配置此文件夹在应用程序外部的位置,并确保已备份该文件夹。可以使用环境变量配置数据文件夹的位置。阅读更多 自定义数据目录

Memory

GeoNetwork是一个内存密集型应用程序。考虑提供至少2GB,但4GB可能更好。但不要超过6GB。有关Java应用程序内存的更多信息,请访问 geoserver documentation . 如果您正在设置弹性搜索的实例,请考虑至少为弹性搜索提供8GB。

缩放比例

GeoNetwork目前在负载平衡/故障转移配置中设置有挑战。搜索索引存储在内存中,不会注意到其他节点中所做记录的更改。优化的一个选择是引入一个主仆从模型;在主仆从收割主仆从中每隔一段时间进行修改。每个仆从都有一个本地数据库。存储在数据库中的典型方面(如组、设置、用户反馈和搜索统计信息)不会在节点之间同步。可以使用网络共享在节点之间共享数据文件夹。

GeoNetwork和Docker

Docker是一种流行的托管服务虚拟化技术。Docker的约定也可以在其他云环境中使用。作为GeoNetwork社区,我们维护一个 docker image on docker hub . 注意,对于每个版本,还有一个postgres标记,它使用远程postgres数据库。Docker的最佳实践是使用从Docker机器或编排中注入的环境变量参数化GeoNetwork。

Web代理

GeoNetwork包含一个web代理来绕过浏览器的跨浏览器通信限制。此代理用于例如:

  • 地图查看器/GetCapabilities文档检索

  • 地图查看器/加载WFS图层

  • 地图查看器/WMS GetFeatureInfo

  • 记录视图/列出atom提要资源

  • 编辑器/警告,如果链接返回http错误

  • CSW检索可查询字段的管理/收获/获取功能

  • 管理/同义词库/从INSPIRE注册表添加

最佳实践是列出一系列已知包含数据服务的服务器。但是,这里最好的指导是向任何数据提供者推荐 CORS 然后禁用web代理。CORS以适当的方式修复了跨浏览器通信限制。

如果设置不正确,远程用户可能会访问不应该访问的资源,或者在浏览web时冒充geonwork服务器。

GeoNetwork有2种模式限制通过代理的访问。在该配置中定义 WEB-INF/web.xml .

<init-param>
  <param-name>securityMode</param-name>
  <param-value>NONE</param-value>
</init-param>
  • 无:(dis)通过安全配置允许某些域(默认在3.10.3之前)

  • U.3.U连接后的默认值

建议使用DB_LINK_CHECK模式。以下规则适用:

  • 经过身份验证的用户可以对所有域使用代理。

  • 对于匿名用户,如果请求的URL的主机未在任何元数据记录链接中使用,则返回NotAllowedException。如果注册了WMS URL,则将接受所有GetCapabilities、GetFeatureInfo。这就是为什么只进行主机检查。

  • 如果请求不存在,则直接将请求返回给securityExist。这将其使用限制为具有目录会话的用户。

  • 目录审阅者必须使用元数据链接分析工具来注册代理允许的链接。该工具可在中的“记录和链接分析”中找到 Admin > Statistics & status 菜单。在将来,我们可能会触发链接分析作为后台任务,以获得最新的链接列表。现在,如果表是空的,这个异常会突出显示一个事实,即应该使用链接分析工具来填充列表。

匿名用户可能会遇到的一个问题是,如果使用地图查看器并且用户添加了一个WMS/WFS服务URL,该URL没有在任何元数据记录中注册,并且没有启用CORS。用户将无法从这些服务中添加任何层。

WEB

因为目录的一个重要部分表现得像一个普通的网站。建议采用网站最佳做法:

  • GeoNetwork具有登录功能,因此浏览器希望该站点在https上运行安全。但是,您必须考虑到https站点上的浏览器将阻止任何包含为http(混合内容)的内容。(存档的)元数据中的许多链接(缩略图、wms服务,…)可能仍然基于http。可以考虑在http和https上运行网站,并在用户登录时切换到https。

  • 与流行的搜索引擎接洽,以便在搜索结果中列出您的地理网络。在各种搜索引擎管理页面中注册geonnetwork站点地图,并监视爬网和搜索行为。它将带来有趣的见解,如搜索行为和元数据中的死链接。为了向搜索引擎证明自己的身份,您需要在网站的根目录中放置一个标识文件。在同一地点robots.txt文件链接到站点地图的文件。Robots.txt文件也可以用来引导搜索引擎不要爬行目录的某些部分。如果GeoNetwork安装在根文件夹中,robots.txt文件已经在正确的位置。

  • 验证记录和api的目录uri是否随时间而持久。其他网站可能会深入到目录链接中,这些链接不应该在迁移后被破坏。通过设置将流量转发到新url的转发规则来修复断开的链接。通过使用 cool uri's . 例如,不要在url中使用产品名(例如GeoNetwork)。

  • 在网站的页眉/页脚提供指向目录管理机构的链接、免责声明、cookie警告和/或隐私政策。

  • 使用zabbix、nagios或 geohealthcheck .