用 Grok Bot 在腾讯云装 GeoServer,并把公开样例发成 WFS
实操记录。文中图层来自 Natural Earth 公开数据(世界国家边界 110m),不是任何项目或客户数据。
环境:腾讯云 Ubuntu + Docker;GeoServer 映射宿主机 8082。
结果:工作区 demo,图层 demo:countries,WFS 可查询约 177 个面要素。
⚠️ 写进博客、发到公网 GeoServer 的数据,等于对外可见。签过保密协议的行政区、项目红线、内部台账,不要用来演示;用公开样例即可把流程讲清楚。
一、这件事为什么适合交给 Grok Bot
装 GeoServer、建工作区、上传 Shapefile、验 WFS,步骤多但模式固定。Grok Bot 适合:
你负责:服务器、安全组、选「能公开」的数据、改默认密码。
二、先把 GeoServer 装起来(Docker)
1. 摸底
free -h
docker ps
ss -lntp | grep -E '8080|8082'
若 8080 已被占用,把 GeoServer 映射到 8082,并在云厂商安全组放行 TCP 8082。
约 4G 内存的机器上,GeoServer(Java)和其他容器抢内存时,可能出现 SSH 假死、外网端口间歇不通。做法:临时停掉不急用的容器,并给 GeoServer 加 -m 1536m。
2. 镜像与启动
国内拉官方镜像经常超时,可用:
kartoza/geoserver:2.24.2
docker rm -f geoserver
docker run -d –name geoserver \\
–restart unless-stopped \\
-p 8082:8080 \\
-e GEOSERVER_ADMIN_USER=admin \\
-e GEOSERVER_ADMIN_PASSWORD=请改成强密码 \\
-v geoserver_data:/opt/geoserver/data_dir \\
-m 1536m \\
kartoza/geoserver:2.24.2
检查:
docker ps –filter name=geoserver
curl -I http://127.0.0.1:8082/geoserver/web/
浏览器:http://你的公网IP:8082/geoserver/
默认管理员务必尽快改密,公网裸奔只适合试验。
3. 常见坑
| 8080 冲突 | 改映射 8082 + 安全组放行 |
| 整机假死 | 停多余容器,限 -m 1536m |
| 官方镜像拉不动 | 换 kartoza/geoserver |
三、用公开样例发一层 WFS
1. 数据从哪来
这次用的是 Natural Earth 的 ne_110m_admin_0_countries(世界国家,约 177 个面,WGS84 / EPSG:4326)。下载页或 CDN 均可,例如:
把 .shp/.shx/.dbf/.prj 打成 zip,图层在 GeoServer 里命名为 countries,工作区用 demo,标题写成 World Countries (Natural Earth demo),和任何客户项目脱钩。
2. REST 发布(Grok Bot 实际路径)
# 建工作区
curl -u admin:**** -H "Content-type: application/json" \\
-d '{"workspace":{"name":"demo"}}' \\
http://你的IP:8082/geoserver/rest/workspaces
# 上传 shapefile zip
curl -u admin:**** -XPUT \\
-H "Content-type: application/zip" \\
–data-binary @countries.zip \\
"http://你的IP:8082/geoserver/rest/workspaces/demo/datastores/countries/file.shp?configure=all"
验收页应看到工作区 demo、图层 countries:
WMS 预览(世界国家面):
3. WFS 怎么验
http://你的IP:8082/geoserver/demo/wfs?service=WFS&version=2.0.0&request=GetCapabilities
命中数(约 177):
…/demo/wfs?service=WFS&version=2.0.0&request=GetFeature&typeNames=demo:countries&resultType=hits
拉一条 GeoJSON:
…/demo/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=demo:countries&outputFormat=application/json&maxFeatures=1
4. QGIS
数据源管理 → WFS → URL:http://你的IP:8082/geoserver/demo/wfs → 勾选 demo:countries → 添加。
四、保密协议场景下怎么发教程
| Natural Earth、OSM 导出的公开边界、自造假数据 | 行政区红线、项目红线、内部台账、未公开规划 |
| 脱敏后的示意图层 | 带真实地名+编码的客户库直出 |
哪怕只是「演示一下流程」,把内部 Shapefile 推到公网 IP,也等于多了一个可被 GetFeature 拉全量的出口。教程用公开数据,流程一点不少。
若服务器上曾经发过敏感图层:在后台删除工作区/图层,并确认 REST 与 WFS Capabilities 里已无对应名称;需要更稳可轮换管理员密码、限制安全组来源 IP。
五、验收清单
- geoserver 容器 Up,:8082/geoserver/web/ 可开
- 工作区 demo,图层 countries
- WFS hits 约为 177
- QGIS / 浏览器能出图
- 默认管理员密码已改
- 博客与截图中无客户地名、文号、内部路径
六、收束
装 GeoServer 是运维题,发 WFS 是数据题。Grok Bot 适合把「起容器 → 打包公开样例 → REST 发布 → GetFeature 验收」串成一次对话;写文章时用公开数据,既讲清步骤,也不踩保密红线。
下一步常见:PostGIS 动态库、Nginx + HTTPS、WMS 样式。需要可再开一篇。





