前期准备:下载geoserver
直接用我上传的geoserver或者是去官网下https://geoserver.org/release/stable/
压缩包的geoserver版本是:2.25.1
jdk要求版本是:jdk11以上
tomcat版本:可选8或者9,建议用9
windows选择Windows Installer,linux或者tomcat部署,选择Web Archive
下载完,把压缩包里面的这个geoserver.war解压出来
linux的安装
一:先更新宝塔的版本,要大于等于8.2.0版本,不然没有自定义tomcat的java版本,因为默认用的是1.8,运行不了geoserver,点主页右上角的更新按钮
二、安装jdk11,点到网站这里,选择Java环境管理,然后点击JDK管理,选择jdk11安装
三、安装tomcat,建议选择8或者9,7太低了容易出bug。点了安装按钮后,选择jdk版本,这个一定不能选默认,因为默认是1.8
安装完能看到tomcat的端口和使用的jdk路径,这端口后面有用,用来配置nginx的请求
四、接着我们创建一个应用,点击添加Java项目,然后选择内置应用
1.项目域名填这种:你的域名,不需要https和http
2.项目路径会给你生成一个和域名相同的文件夹,可以修改到别的地方
3.tomcat用我们刚刚配置的那个,jdk版本要大于11的
然后部署下ssl证书,然后开启强制https(可选),点击配置文件,增加下面的代码,proxy_pass里面127.0.0.1:端口,这里要把端口换成上面tomcat的端口,tomcat9默认是8233,然后点保存就可以了
location / {proxy_pass http://127.0.0.1:8233;proxy_set_header Host gisserver.3dy.me:$server_port;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header REMOTE-HOST $remote_addr;add_header X-Cache $upstream_cache_status;proxy_set_header X-Host $host:$server_port;proxy_set_header X-Scheme $scheme;proxy_connect_timeout 30s;proxy_read_timeout 86400s;proxy_send_timeout 30s;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";}
五、然后我们去项目路径,把geoserver.war传上去,然后右键选择解压
解压出来是这样的,然后把geoserver.war删掉。去重启这个java项目,就能通过域名访问到了,输入域名就会自动给我们跳转到geoserver的管理页面,默认账号是admin
,默认密码是geoserver
成功访问的图片如下
六、替换data目录(可选)
先把Java程序停了
然后去网站目录,备份一下文件夹。然后把复制过来的文件夹命名成data就行,就向下面一样
然后去启动geoserver就行了,然后重新进geoserver的管理页面,然后点图层预览,就能看到之前的数据了
遇到的其他问题
Geoserver跨域配置:
一:设置geoserver的跨域
先关闭tomcat和部署的服务。然后在geoserver的数据目录的WEB-INF的web.xml下配置下面命令
<filter><filter-name>CorsFilter</filter-name><filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
</filter>
<filter-mapping><filter-name>CorsFilter</filter-name><url-pattern>/*</url-pattern>
</filter-mapping>
二:设置tomcat跨域
在tomcat的web.xml
里面配置下面的命令,宝塔的tomcat在 /usr/local/bttomcat
目录下
<filter><filter-name>CorsFilter</filter-name><filter-class>org.apache.catalina.filters.CorsFilter</filter-class><init-param><param-name>cors.allowed.origins</param-name><param-value>*</param-value></init-param><init-param><param-name>cors.allowed.methods</param-name><param-value>GET,POST,HEAD,OPTIONS,PUT</param-value></init-param><init-param><param-name>cors.allowed.headers</param-name><param-value>*</param-value></init-param><init-param><param-name>cors.exposed.headers</param-name><param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value></init-param>
</filter>
<filter-mapping><filter-name>CorsFilter</filter-name><url-pattern>/*</url-pattern>
</filter-mapping>
然后再去重启tomcat,点这个tomcat管理,点启动,然后再点重载配置,保险起见,下面的GeoServer服务也重启一下
解决提交表单报错的问题
一、主要还是参考官网(https://docs.geoserver.org/latest/en/user/security/webadmin/csrf.html)的解决方法,核心问题还是geoserver自动给你开了CRSF保护,所以需要给一个白名单或者直接关闭这个保护就好了,主要就是给根目录下的:.\webapps\geoserver\WEB-INF\web.xml中增加一个配置,这个原先文件没有,需要自己加(domain.com替换成自己的域名)。
<context-param>
<param-name>GEOSERVER_CSRF_WHITELIST</param-name>
<param-value>domain.com</param-value>
</context-param>