1.从官网下载代码
geoserver/geoserver: Official GeoServer repository (github.com)
2.环境
注意java11和17
3.操作手册
GeoServer Developer Manual — GeoServer 2.26.x Developer Manual
我看的是idea的启动
4.运行代码
发现wcs1.1老是过不去,按照3的快速启动操作来一波
IntelliJ QuickStart — GeoServer 2.26.x Developer Manual
专门针对这个模块,直到生成这个文件夹
5.启动完测试没问题了可以打包
包在
6.把包放入tomcat运行,如果报错很可能是你jdk没配好,可以对tomcat配置jdk
7.如果直接运行没问题 但是部署有问题。可以检查一下本机的GEOSERVER开头的环境变量,例如GEOSERVER_DATA_DIR2,如果有geoserver会读取这个文件夹下的图层信息,可能会报错建议删除,如果没有配置则会读取geoserver包中web.xml中地址,部署时候建议配一下,如果没配会使用部署项目中的data_dir文件夹,重新部署war包可能会被删除,导致之前存的图层消失
8.geoserver前端调用跨域亲测有效,记得版本一定要对,可以在源码中搜索jetty.version,
还有记得要的包是util,servlets,我之前有用servlet包然后一直不行,结果发现少了sgeoserver完美跨域解决方式 - 知乎 (zhihu.com)
9.geoserver部署后列表展示图层,空间可以,新增功能报400,重点在
Using NGINX to put Geoserver HTTPS - DEV Community
10.nginx代理配置本来想直接代理如 http://127.0.0.1:80/aaa/geoserver 代理http://127.0.0.1:8080/geoserver,发现老是跳到http://127.0.0.1:80/geoserver/index.html,但是这个aaa是我服务器必须带的,后面通过tomcat配置也就是,http://127.0.0.1:80/aaa/geoserver 代理http://127.0.0.1:8080/aaa/geoserver,才可以的,而且代理过后端口也被吃了,只能再改
location /aaa/geoserver/ {
proxy_pass http://127.0.0.1:8080/aaa/geoserver/;
proxy_set_header Host $host:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 4000m;
fastcgi_buffer_size 4k;
fastcgi_buffers 8 4k;
#proxy_pass http://mape.shanghai-map.net/arcgis/;
#index index.html index.htm;
# 指定允许跨域的方法,*代表所有
add_header Access-Control-Allow-Methods *;
# 预检命令的缓存,如果不缓存每次会发送两次请求
add_header Access-Control-Max-Age 3600;
# 带cookie请求需要加上这个字段,并设置为true
add_header Access-Control-Allow-Credentials true;
# 表示允许这个域跨域调用(客户端发送请求的域名和端口)
# $http_origin动态获取请求客户端请求的域 不用*的原因是带cookie的请求不支持*号
add_header Access-Control-Allow-Origin $http_origin;
# 表示请求头的字段 动态获取
add_header Access-Control-Allow-Headers
$http_access_control_request_headers;
}
至此所有坑都踩完了