GeoServer2.17与Jetty9在Windows上的最佳安装实践

1 JDK的选择

我使用了adopted openjdk8.0.252,安装简便,只需添加2个环境变量(JAVA_HOME,JRE_HOME)便可。html

个人安装路径:java

C:\SDKs\adoptopen-jdk8.0.252git

因此环境变量:github

环境变量名
JAVA_HOME C:\SDKs\adoptopen-jdk8.0.252\
JRE_HOME C:\SDKs\adoptopen-jdk8.0.252\jre

2 Jetty 9

选择的理由是尝鲜,看看部署起来和tomcat有什么区别,虽然不是后端开发出身,不过喜欢体验新组合新事物。web

2.16的geoserver预编译包用的都是jetty了,就是下载的那个带bin字样的zip包。shell

安装路径:C:\WebServers\jetty-distribution-9.4.28.v20200408apache

修改端口

默认端口是8080,我打算改为6700windows

打开安装路径下的start.ini后端

找到注释行:跨域

# jetty.http.port=8080

解开注释,修改端口:

jetty.http.port=6700

做为Windows服务启动

不想每次都双击start.jar文件,Windows服务是一个不错的选择。

到github上下载一个叫Winsw的小工具,仓库地址:

https://github.com/winsw/winsw

到release页面下载合适的版本便可,把下载到的exe程序放到安装路径下,建立与exe文件名同样的xml文件:

<!-- 假设exe文件名被我改为winsw.exe,那么这个xml的文件名就是winsw.xml -->
<service>
    <id>Jetty9</id>
    <name>Apache Jetty 9</name>
    <description>你的描述</description>
    <executable>java</executable>
    <arguments>-jar start.jar</arguments>
</service>

id、name、description均可以本身写,只要你认得就能够,id要惟一。

executable是可执行程序,arguments是可执行程序传入的参数,这里就是说用java.exe程序执行参数-jar start.jar

固然,若是没有JAVA_HOME配置环境变量,那么就要写全java程序的绝对路径了。由于这个xml文件和start.jar同级,start.jar的路径就不须要绝对路径了。

而后打开cmd,定位到安装目录下,执行下列命令:

winsw.exe install

就能安装成Windows服务了:

3 war包安装geoserver

这一步很简单,下载stable版本的geoserver-war包,放到jetty安装目录下的webapps目录下,重启jetty服务,过一下子,访问这个路径就能够了:

http://localhost:6700/geoserver

4 跨域和gwc、默认数据路径配置

jetty9有个和tomcat9不太同样的地方,就是war包不会解压到webapps下,会解压到一个系统临时目录去。

这对于要增长geoserver插件、修改geoserver配置的任务来讲,有点不对劲。

查了查资料,jetty和tomcat对war包的处理方式并不同。

引用资料

jetty中处理war包解压的代码是:org.eclipse.jetty.util.resource.JarResource。使用JarInputStream来读取war文件,JarInputStream是首先处理可选的META-INF/MANIFEST.MF文件,也就是说getNextJarEntry方法不可能处理META-INF/MANIFEST.MF文件了,所以jetty会在处理完全部的JarEntry后,本身处理META-INF/MANIFEST.MF文件。可是,这样作的后果就是,不能设置解压出来的META-INF/MANIFEST.MF文件的最后修改时间。

tomcat中处理war包解压的代码:org.apache.catalina.startup.ExpandWar。使用JarFile来读取war文件,这样能够得到war中全部的JarEntry,不须要本身去处理META-INF/MANIFEST.MF文件。

显然,tomcat的作法更合理一些,其保证了解压出来的文件具备和war中文件同样的最后修改时间。

解压到jetty安装目录

在jetty安装目录下建立work文件夹,重启jetty后就能看到war包解压的文件了。

点进去就能找到WEB-INF/web.xml文件了,也能加jar包扩展geoserver了。

跨域很好解决,把WEB-INF/web.xml内有关的配置解开注释便可,与tomcat配置法相同,再也不赘述(须要添加额外的jar包请本身下载)。

gwc缓存路径设置

打开WEB-INF/web.xml后,添加一项:

重启后,GWC的缓存路径就从新定向了,妈妈不再用担忧个人webapp愈来愈肥。

GEOSERVER_DATADIR也同样。

版权全部,自主研究,转载请评论或私信告知。 http://www.javashuo.com/article/p-pgspuzmp-mo.html
更多GIS运维、开发博客见小专栏:https://xiaozhuanlan.com/gishome