参数化目录设置

环境参数化允许通过模板机制将Geoserver目录中的一些设置参数化,以根据运行环境定制Geoserver的设置。

例如,可能需要移动在计算机上运行的Geoserver实例所做的最新更改 A 到计算机上运行的另一个实例 B ,但两种环境的设置方式有一些不同(例如,用于连接到数据库的密码不同)。在这种情况下,如果对实例中的目录进行简单备份 A 在实例上创建和恢复 B ,数据库上配置的存储将无法访问,相应的层将无法正常工作。

另一个示例可能是需要针对池中可用连接的最大数量,为两个不同的Geoserver实例提供不同的连接池配置。

要启用环境参数化,需要通过系统变量将以下标志设置为Geoserver的环境:

-DALLOW_ENV_PARAMETRIZATION=true

A properties 需要创建保存参数设置的文件。可以通过命名它来提供它 geoserver-environment.properties 并将其放置在Geoserver的DATA_DIR的根目录中。

Geoserver还能够使用 properties Geoserver的DATA_DIR之外的文件。在本例中,指向 properties 必须以下列方式之一定义文件:

  • 通过提供系统变量 -DENV_PROPERTIES={properties filepath}

  • 通过提供一个名为 ENV_PROPERTIES 并将属性文件的路径作为值。

  • 通过在 WEB-INF/web.xml Geoserver应用程序的文件:

<web-app>
  ...
  <context-param>
    <param-name>ENV_PROPERTIES</param-name>
    <param-value>/var/lib/geoserver_data</param-value>
  </context-param>
  ...
</web-app>

曾经是一种加载 ENV_PROPERTIES 已定义和设置,则可以编辑需要参数化源机器的Geoserver配置文件。例如,让我们将商店的URL参数化(这也可以通过Geoserver管理用户界面来完成):

vim coveragestore.xml ::

...
 <enabled>true</enabled>
  <workspace>
    <id>WorkspaceInfoImpl--134aa31e:1564c12ef68:-7ffe</id>
  </workspace>
  <__default>false</__default>
  <url>${store_url}</url>
</coverageStore>

变量的定义 store_url 需要添加到

geoserver-environment.properties ::

store_url = file:///var/geoserver/store/teststore

重新启动Geoserver后,现在就可以看到“连接参数”设置中的URL引用该变量 store_url 其值在 geoserver-environment.properties 文件。

../_images/configtemplate001.png

另一个常见用例是对矢量数据存储的连接详细信息进行参数化。数据库的主机名、凭据和连接池参数往往会因环境而异。在中设置变量后 geoserver-environment.properties 文件中,可以按如下方式配置数据存储区:

../_images/configtemplate002.png