如何通过frp、geoserver发布家里电脑的空间数据教程

2024-01-20 22:52

本文主要是介绍如何通过frp、geoserver发布家里电脑的空间数据教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

如何通过家里电脑的geoserver发布空间数据的教程

简介

大家好,我是锐多宝,最近我在开发一个新网站的时候遇到一个需求,这里记录一下以帮助需要用到的网友。

我的需求是:用户通过网站前端上传空间数据后,即可在前端展示影像。需要注意,我的geoserver和网站后端都部署在家里的电脑上。具体需求如下:

(1)发布图层

通过我自己家里的电脑发布geoserver的图层;

(2)域名访问

用户需要通过域名访问图层;

(3)SSL证书配置

图层的域名需要进行https加密;

(4)前后端交互开发

实现上面的步骤后,开发前端和网站后端实现:用户上传数据,服务端自动发布数据并返回wmts。

我画了一个简单的流程图展示相关的实现过程:

流程图

windows端geoserver的安装

windows端安装geoserver按照官网的要求安装即可,先下载geoserver的安装包以及对应版本的java,安装java,配置java环境,再安装geoserver。

(1)下载geoserver安装包和对应版本的java

进入官网(https://geoserver.org/download/),下载最新的geoserver安装包:

下载java版本的时候需要注意版本,geoserver提供了版本参考,这里我强烈推荐使用java 11,而不是java 17(因为java17我安装了好几次,但geoserver运行始终有bug,换成java 11才稳定下来)。java版本参考网站:https://docs.geoserver.org/main/en/user/production/java.html

知道了java版本,就到甲骨文公司的官网下载所需的java11安装包,进入网站(https://www.oracle.com/java/technologies/downloads/)下载:

(2)安装java

一路点击安装和下一步即可,记住安装路径,比如我是C:\Program Files\Java\jdk-11。

等待安装完毕之后,打开环境变量编辑,配置java的环境变量:

在系统变量中点击新建,配置变量名:JAVA_HOME,路径是你的安装路径,我的是:C:\Program Files\Java\jdk-11。

然后点击系统变量的Path

在Path中,配置下面的路径:%JAVA_HOME%\bin

配置后之后,在powershell中输入:java -version 。安装成功后的输出如下所示:

(3)安装geoserver

一直点击下一步即可,没有说明安装难度。需要注意,最后选择服务启动选择方式:不要选择以服务启动,选择手动启动。安装完成后,进入geoserver的bin目录。

调出powershell,启动starup.bat:

使用**.\startup.bat** ,即可启动成功。在浏览器端输入网址:http://localhost:8080/或者http://127.0.0.1:8080/访问。用户名:admin,密码:geoserver,即可进入管理界面。

(4)使用geoserver发布图层

创建一个新的工作空间用来发布数据,比如我创建了一个ruiduobao的空间:

然后在这个空间设置wmts,

发布一个全国DEM数据试一试效果:

可以看到发布的数据打开开发者界面,是一个wmts瓦片,到此geoserver安装成功。

内网穿透安装

内网穿透是一种技术手段,它允许外部网络(如互联网上的计算机)能够穿过 NAT(网络地址转换)或防火墙访问内网(局域网)中的服务。这在你需要从任何地方远程访问位于内网的某台计算机或设备时非常有用,比如访问内网的 Web 服务器、远程桌面、数据库等。

frp工作原理示意图

FRP 是一个高性能的反向代理应用,用于帮助用户实现内网穿透(请参考:https://github.com/fatedier/frp,该项目的标星已超过7w)。FRP 主要由两部分组成:

  1. frps:即 FRP 服务端,部署在具有公网 IP 的服务器上。
  2. frpc:即 FRP 客户端,部署在需要进行内网穿透的内网机器上。

现在我们开始frp的服务器、客户端的安装以及通过frp连接服务器端和客户端。

内网穿透的服务器端安装

首先大家先进入frp的官网https://gofrp.org/,里面有详细的安装和使用教程:

首先是安装,进入网站:https://github.com/fatedier/frp/releases 下载最新版的frp,

frps 复制到拥有公网 IP 地址的机器上,并将它们放在任意目录。然后编辑frps.toml文件。大家可以参考我的编写,

每个人的情况不一样,frps的配置尽量查看官网(https://gofrp.org/zh-cn/docs/examples/vhost-http/),里面有详细的配置说明:

配置文件完成后,输入*./frps -c ./frps.toml*启动服务。

查看frps的运行情况,输入systemctl status frps即可:

内网穿透的客户端安装

进入网站:https://github.com/fatedier/frp/releases 下载适合自己的电脑的windows版本(大部分电脑都是amd64)。

配套服务器端frps,编写frpc的配置文件,比如我的就是这样。请参考官网,配置自己的toml文件,一般来说配置好服务器的地址、端口,本地的网络监听端口和网络连接类型即可。serverPort是frps的服务器开放端口,需要在云服务厂商开放7000端口,并且在云服务器的防火墙设置上也开放7000端口。

1705749876829.jpg

然后输入

./frpc -c ./frpc.toml

serverAdd是服务器ip,serverPort是frps的服务器开放端口,localport 是你内网中运行 web 服务的端口。customdomains 应该和服务端配置中的一致。启动客户端即可。服务器端口设置为自己的geoserver端口,比如8080,域名为你打算部署的域名。

图层的域名配置和https加密

宝塔面板新建一个网站,域名是frp的代理域名,比如我的代理域名就是frp2.ruiduobao.cn:

因为域名访问的一般是80端口,我们需要将域名重定向为fpr的代理网站端口,我的代理端口是7501:

设置完成后,已经可以通过域名访问本地的geoserver服务了,但此时是http连接。我们需要配置一个https。前往云服务商申请一个SSL证书,将证书部署到宝塔面板中:

配置网站的SSL

输入frp代理的域名,即可访问geoserver的管理界面,并且已经是https。

选择一个本地geoserver发布的图层的wmts链接,随意选择一个瓦片,将地址转为frp的代理地址,加载到浏览器中,此时即可以通过https访问本地服务器发布的geoserver法服务。

后端自动发布geosever图层

当接受到用户的上传文件后,可以写一个后端的函数,将文件通过geoserver自动发布,并返回一个wmts链接。开始之前,可以看看电脑上的geoserver的rest接口网站:

在收到用户文件后,可以先连接geoserver,然后将文件推送到geoserver的数据目录,再发布即可实现自动发布geoserver数据。我写了一个express的后端代码可以参考:

// 调用geoserver参数
let geoserver_Url = process.env.geoserver_Url;
const geoserver_username = process.env.geoserver_username;
const geoserver_password = process.env.geoserver_password;
const geoserver_workspace = process.env.geoserver_workspace;
const geoserver_publish_directory = process.env.geoserver_directory;
const geoserver_directory = process.env.geoserver_directory;//创建栅格通过geoserver发布的路由
const publishRasterData = async (workspace, storename, coverageName, filePath) => {// 这里需要根据实际的用户名和密码进行替换const username =geoserver_username; const password =geoserver_password;const geoserverUrl =geoserver_Url;const data = fs.readFileSync(filePath);// 设置基本认证信息const auth = { username, password };//数据上传到指定的工作区await axios.put(`http://localhost:8080/geoserver/rest/workspaces/${workspace}/coveragestores/${coverageName}/file.geotiff`,data, // 上传文件的二进制数据{headers: {'Content-Type': 'image/tiff' // 设置正确的内容类型},auth: auth});// 构建WMTS服务链接const wmtsLink =geoserver_Url+`/${workspace}/gwc/service/wmts?layer=${workspace}%3A${coverageName}&style=&tilematrixset=EPSG%3A4326&Service=WMTS&Request=GetTile&Version=1.0.0&Format=image%2Fjpeg&TileMatrix=EPSG%3A4326%3A7&TileCol=214&TileRow=37`return wmtsLink;                
}

因为发布数据需要时间,可以使用异步函数调用的方式,待数据发布完成后,使用websocket发送数据发送成功到前端。

这样,我们就完成了用户上传数据,后端将数据发布到geoserver,并将wmts链接地址发送给前端,实现用户上传空间数据后,即可加载数据到网页前端。

总结

总结一下技术路线:

通过家里电脑的geoserver发布图层,使用内网穿透frp连接云服务器,云服务器配置访问图层的域名和SSL证书,用户即可通过https的方式访问家里电脑发布的图层。比如我通过家里电脑发布了一个全国DEM数据,可通过一个域名访问:

通过家里电脑的geoserver发布图层有以下好处:

(1)云服务器的存储空间一般较少,而地信遥感的数据数据一般很大,通过内网穿透能在本地电脑发布大量数据,降低运营成本。如果用户有特别多的数据需要发布,完全可以在自己家的电脑上发布然后分享给用户。

(2)通过云服务器发布空间数据产品还需要上传数据到服务器,而内网穿透直接跳过了数据上传到服务器的步骤。比如说一个遥感数据可能是几个G,数据在本地即可发布,提升了效率。

(3)方便空间数据管理。

参考

https://gofrp.org/

https://geoserver.org/

https://github.com/fatedier/frp

这篇关于如何通过frp、geoserver发布家里电脑的空间数据教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/627616

相关文章

Python pandas库自学超详细教程

《Pythonpandas库自学超详细教程》文章介绍了Pandas库的基本功能、安装方法及核心操作,涵盖数据导入(CSV/Excel等)、数据结构(Series、DataFrame)、数据清洗、转换... 目录一、什么是Pandas库(1)、Pandas 应用(2)、Pandas 功能(3)、数据结构二、安

2025版mysql8.0.41 winx64 手动安装详细教程

《2025版mysql8.0.41winx64手动安装详细教程》本文指导Windows系统下MySQL安装配置,包含解压、设置环境变量、my.ini配置、初始化密码获取、服务安装与手动启动等步骤,... 目录一、下载安装包二、配置环境变量三、安装配置四、启动 mysql 服务,修改密码一、下载安装包安装地

电脑提示d3dx11_43.dll缺失怎么办? DLL文件丢失的多种修复教程

《电脑提示d3dx11_43.dll缺失怎么办?DLL文件丢失的多种修复教程》在使用电脑玩游戏或运行某些图形处理软件时,有时会遇到系统提示“d3dx11_43.dll缺失”的错误,下面我们就来分享超... 在计算机使用过程中,我们可能会遇到一些错误提示,其中之一就是缺失某个dll文件。其中,d3dx11_4

Linux下在线安装启动VNC教程

《Linux下在线安装启动VNC教程》本文指导在CentOS7上在线安装VNC,包含安装、配置密码、启动/停止、清理重启步骤及注意事项,强调需安装VNC桌面以避免黑屏,并解决端口冲突和目录权限问题... 目录描述安装VNC安装 VNC 桌面可能遇到的问题总结描js述linux中的VNC就类似于Window

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

Java JDK1.8 安装和环境配置教程详解

《JavaJDK1.8安装和环境配置教程详解》文章简要介绍了JDK1.8的安装流程,包括官网下载对应系统版本、安装时选择非系统盘路径、配置JAVA_HOME、CLASSPATH和Path环境变量,... 目录1.下载JDK2.安装JDK3.配置环境变量4.检验JDK官网下载地址:Java Downloads

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实

Java Web实现类似Excel表格锁定功能实战教程

《JavaWeb实现类似Excel表格锁定功能实战教程》本文将详细介绍通过创建特定div元素并利用CSS布局和JavaScript事件监听来实现类似Excel的锁定行和列效果的方法,感兴趣的朋友跟随... 目录1. 模拟Excel表格锁定功能2. 创建3个div元素实现表格锁定2.1 div元素布局设计2.