自定义数据目录

数据目录是文件系统中目录存储其自定义配置和上载文件的位置。此配置定义如下:

  • 地理网络使用的是什么词表?

  • GeoNetwork中插入了什么模式?

数据目录还包含目录用于各种目的的许多支持文件:

  • Lucene指数

  • 空间索引

  • 标志

  • 已上载附加到元数据记录的文档

  • 缩略图

在投入生产时,最好定义一个外部数据目录,以便将来更容易地进行更新。数据目录允许在需要时以只读模式运行WAR。

创建新的数据目录

在启动目录之前,需要创建数据目录。它必须是可读写的用户启动目录。

如果数据目录是空文件夹,则目录将使用 INSTALL_DIR/web/geonetwork/WEB-INF/data .

如果未设置数据目录,则当应用程序启动时,日志中将显示以下消息:

2015-12-16 07:59:17,108 WARN  [geonetwork.data.directory] -     - Data directory properties is not set. Use geonetwork.dir or geonetwork.dir properties.
2015-12-16 07:59:17,108 WARN  [geonetwork.data.directory] -     - Data directory provided could not be used. Using default location: /data/dev/gn/3.0.x/web/src/main/webapp/WEB-INF/data

如果用户无法访问数据目录,则日志显示:

2015-12-16 08:09:17,723 WARN  [geonetwork.data.directory] -     - Data directory '/tmp/gndatadir' is not writable. Set read/write privileges to user starting the catalogue (ie. francois).
2015-12-16 08:09:17,723 WARN  [geonetwork.data.directory] -     - Data directory provided could not be used. Using default location: /data/dev/gn/3.0.x/web/src/main/webapp/WEB-INF/data

设置数据目录

可以使用以下方法设置数据目录变量:

  • Java环境变量

  • Servlet上下文参数

  • 系统环境变量

  • Bean配置(添加在版本3.0.4中)

对于Java环境变量和servlet上下文参数,请使用:

  • <webappName>.dir,如果不使用地理网络.dir

对于系统环境变量的使用:

  • <webappName>目录,如果未使用geonnetwork目录设置

解析顺序为:

  1. <webappname>.dir

  1. Java环境变量(即-D<webappname>.dir=/a/data/dir)

  2. Servlet上下文参数(即。web.xml文件)

  3. 配置.xmlappHandler参数(即。配置.xml)

  4. 系统环境变量(即<webappname>u dir=/a/data/dir)。”env变量中不支持

  1. geonetwork.dir

  1. Java环境变量(即-Dgeonetwork.dir=/a/data/dir)

  2. Servlet上下文参数(即。web.xml文件)

  3. 配置.xmlappHandler参数(即。配置.xml)

  4. 系统环境变量(即geonnetwork_dir=/a/data/dir)。”env变量中不支持

Java系统属性

根据使用的servlet容器,还可以使用Java系统属性指定数据目录位置。

对于Tomcat,配置是:

CATALINA_OPTS="-Dgeonetwork.dir=/var/lib/geonetwork_data"

Bean配置

3.0.4 新版功能.

要使用自定义bean配置配置数据目录,请在 source file core/src/main/resources/config-spring-geonetwork.xml

<bean id="GeonetworkDataDirectory" class="org.fao.geonet.kernel.GeonetworkDataDirectory" lazy-init="true">
  <property name="systemDataDir" ref="GNSystemDataDir"/>
  <property name="schemaPluginsDir" ref="GNSchemaPluginsDir"/>
</bean>
<bean id="GNSystemDataDir" class="java.nio.file.Paths" factory-method="get">
   <constructor-arg index="0" value="/path/to/gn/dir"/>
   <constructor-arg index="1"><array /></constructor-arg>
</bean>
<bean id="GNSchemaPluginsDir" class="java.nio.file.Paths" factory-method="get">
    <constructor-arg index="0" value="/path/to/schema/dir"/>
    <constructor-arg index="1"><array /></constructor-arg>
</bean>

使用S3对象存储

如果您的基础设施没有可用的持久性存储,您可以将geonwork配置为使用Amazon S3(或兼容的)对象存储来存储图像和数据。

为此,必须使用自定义bean配置。更换 source file filesystemStoresource file resourceStoresource file resources 豆子 source file core/src/main/resources/config-spring-geonetwork.xml 像这样的:

<bean id="s3credentials" class="org.fao.geonet.resources.S3Credentials">
  <property name="region" value="eu-west-1"/>
  <property name="bucket" value="geonetwork-test"/>
  <property name="keyPrefix" value="geonetwork"/>
  <!-- Only needed if you don't have a ~/.aws/credentials -->
  <property name="accessKey" value="MyAccessKey"/>
  <property name="secretKey" value="MySecretKey"/>
  <!-- Only needed when not using Amazon S3-->
  <property name="endpoint" value="sos-ch-dk-2.exo.io"/>
</bean>
<bean id="filesystemStore" class="org.fao.geonet.api.records.attachments.S3Store" />
<bean id="resourceStore"
      class="org.fao.geonet.api.records.attachments.ResourceLoggerStore">
  <constructor-arg index="0" ref="filesystemStore"/>
</bean>
<bean id="resources" class="org.fao.geonet.resources.S3Resources"/>

这个 source file s3credentials bean可以保留为空,并且可以使用以下系统环境变量来配置它(在容器环境中很方便):

  • AWS_S3_PREFIX

  • AWS_S3_BUCKET

  • AWS_DEFAULT_REGION

  • AWS_S3_ENDPOINT

  • AWS_ACCESS_KEY_ID

  • AWS_SECRET_ACCESS_KEY

数据目录的结构

数据目录包含:

data_directory/
 |--config: Extra configuration (eg. could contain overrides)
 |   |--schemaplugin-uri-catalog.xml
 |   |--codelist: The thesauri in SKOS format
 |   |--schemaPlugins: The directory used to store new metadata standards
 |
 |--data
 |   |--metadata_data: The data related to metadata records
 |   |--resources:
 |   |     |--htmlcache
 |   |     |--images
 |   |     |   |--harvesting
 |   |     |   |--logos
 |   |     |   |--statTmp
 |   |
 |   |--metadata_subversion: The subversion repository
 |   |--backup: Folder containing removed metadata
 |
 |--index: All indexes used for search
 |   |--nonspatial: Lucene index
 |   |--spatialindex.*: ESRI Shapefile for the index (if not using spatial db)

高级数据目录配置

所有子目录可以使用Java系统属性单独配置。例如,要将索引目录放入自定义位置,请使用:

  • <webappName>。lucene.dir公司如果未设置,则使用:

  • geonetwork.lucene.dir

实例:

  • 添加以下Java属性以启动-地理网络.sh脚本:

java -Xms1g -Xmx1g -Xss2M -XX:MaxPermSize=128m -Dgeonetwork.dir=/app/geonetwork_data_dir -Dgeonetwork.lucene.dir=/ssd/geonetwork_lucene_dir
  • 添加以下系统属性以启动-地理网络.sh脚本:

export geonetwork_dir=/app/geonetwork_data_dir
export geonetwork_lucene_dir=/ssd/geonetwork_lucene_dir
  • 如果没有对同义词库或模式进行任何更改,则可能与使用webapp中的版本有关。在这种情况下,设置:

-Dgeonetwork.dir=/data/catalogue
-Dgeonetwork.schema.dir=/app/tomcat/webapps/geonetwork/WEB-INF/data/config/schema_plugins
-Dgeonetwork.codeList.dir=/app/tomcat/webapps/geonetwork/WEB-INF/data/config/codelist

可以设置的属性列表如下:

  • geonetwork.dir

  • geonetwork.lucene.dir

  • geonetwork.spatial.dir

  • geonetwork.config.dir

  • geonetwork.codeList.dir

  • geonetwork.schema.dir

  • geonetwork.data.dir

  • geonetwork.resources.dir

  • geonetwork.svn.dir

  • geonetwork.upload.dir

  • geonetwork.backup.dir

  • geonetwork.formatter.dir

  • geonetwork.htmlcache.dir

检查配置

启动后,在 Admin console > Statistics and status > Information 页。

../_images/datadirectory.png