基于 Jetty9.4 的 GeoServer 配置与部署
GeoServer2.16.exe安装包,默认使用 Jetty 发布地图服务。
本篇介绍了通过 jetty 与 GeoServer 编译包 geoserver.war 发布地图服务。
配置环境:windows10;jetty-distribution-9.4.49.v20220914;GeoServer2.20.6;
1 安装与配置 Java
与 tomcat 一样,jetty 运行也需要 java 环境。
进入Java官网 https://www.java.com/zh_CN/
或者直接百度搜索 Java,按操作系统,下载对应版本并安装。
配置环境变量JAVA_HOME
为Java安装的根路径
将 Java 的 bin 与 jre 路径加入到 Path 环境变量中
通过快捷键win+r
输入cmd
,启动控制台,执行java -version
出现Java版本号,说明配置成功。
2 安装与配置 Jetty
通过Jetty官网https://www.eclipse.org/jetty/
下载Jetty。
本次使用的是 9.4 版本,并没有用11、10版本是因为版本差异较大,如:
在9.4版中,通过 start.ini
配置文件,找到注释行 # jetty.http.port=8080
,修改为 jetty.http.port=8086
,实现修改服务端口,但是在11、10版中没有发现该文件
3 安装与配置 GeoServer
通过GeoServer官网https://geoserver.org/release/maintain/
下载 web包。
将 geoserver.war 放入 jetty 的 webapps 文件夹,同时建立与 webapps 同级的 work 文件夹。
打开 cmd, 进入 jetty 根目录下,执行java -jar start.jar
运行 jetty,同时发现 work 文件夹中存在了 geoserver.war 解压的文件。
PS: 这就是 jetty 和 tomcat 不太一样的地方,即 war包不会解压到 webapps下,会解压到 work 文件夹中(如果没有 work 文件夹,则存在系统临时目录去)。
在 work 文件夹中,进入 geoserver 解压文件夹,找到WEB-INF/web.xml
文件,编辑web.xml内容,修改geoserver管理数据与缓存切片的位置如下:
<context-param>
<param-name>GEOSERVER_DATA_DIR</param-name>
<param-value>C:\geoserver_data</param-value>
</context-param>
同时,也可以将 geoserver 其它功能扩展的jar包
拷贝到WEB-INF/lib
文件夹中。
4 解决跨域访问
通过上面方法,发布 GeoServer 地图切片,在前端访问的时候,会出现跨域问题。
打开上面提到的,work 文件夹下,geoserver 服务的WEB-INF/web.xml
文件,找到下面两段被注释的代码,并解除注释。
<!-- Uncomment following filter to enable CORS in Jetty. Do not forget the second config block further down.
<filter>
<filter-name>cross-origin</filter-name>
<filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class>
<init-param>
<param-name>chainPreflight</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>allowedOrigins</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>allowedMethods</param-name>
<param-value>GET,POST,PUT,DELETE,HEAD,OPTIONS</param-value>
</init-param>
<init-param>
<param-name>allowedHeaders</param-name>
<param-value>*</param-value>
</init-param>
</filter>
-->
<!-- Uncomment following filter to enable CORS
<filter-mapping>
<filter-name>cross-origin</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
-->
重启 jetty。如果发现 geoserver 无法正常启动,则在 Jetty 根目录下的lib
文件夹中,找到jetty-servlets-xxx.jar
与jetty-util-xxx.jar
两个jar包(xxx为对应版本号)
将上面的两个jar包拷贝到 work 文件夹下,geoserver 服务的WEB-INF/lib
文件夹中,再次重启 jetty。