如何通过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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/637979.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

视频监控需求记录

记录一下最近要做的需求,我个人任务还是稍微比较复杂的 需求:需要实现一个视频实时监控、视频回放、视频设备管理,以上都是与组织架构有关 大概的界面长这个样子 听着需求好像很简单,但是~我们需要在一个界面上显示两个厂商的视…

第四十周:文献阅读+GAN

目录 摘要 Abstract 文献阅读:结合小波变换和主成分分析的长短期记忆神经网络深度学习在城市日需水量预测中的应用 现有问题 创新点 方法论 PCA(主要成分分析法) DWT(离散小波变换) DWT-PCA-LSTM模型 研究实…

【Docker】在Windows操作系统安装Docker前配置环境

欢迎来到《小5讲堂》,大家好,我是全栈小5。 这是《Docker容器》序列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对…

139基于matlab多旅行商MTSP问题

基于matlab多旅行商MTSP问题,利用遗传算法求解多旅行商问题的算法设计,输出MTSP路径。相互独立路径,同一起点路径。程序已调通,可直接运行。 139 matlab多旅行熵M-TSP (xiaohongshu.com)https://www.xiaohongshu.com/explore/65ab…

浅谈 ret2text

文章目录 ret2text无需传参重构传参函数调用约定x86x64 ret2text ret2text就是执行程序中已有的代码,例如程序中写有system等系统的调用函数 无需传参 如果程序的后门函数参数已经满足 getshell 的需求,那么就可以直接溢出覆盖 ret 地址不用考虑传参问…

2024最新 8 款电脑数据恢复软件推荐分享

数据恢复是一个涉及从设备硬盘驱动器检索已删除文件的过程。这可能需要存储在工作站、笔记本电脑、移动设备、服务器、相机、闪存驱动器上的数据——任何在独立或镜像/阵列驱动器上存储数据的东西,无论是内部还是外部。 在某些情况下,文件可能被意外或故…

AtCoder Beginner Contest 337 (ABCDEG题)

A - Scoreboard Problem Statement Team Takahashi and Team Aoki played N N N matches. In the i i i-th match ( 1 ≤ i ≤ N ) (1\leq i\leq N) (1≤i≤N), Team Takahashi scored X i X _ i Xi​ points, and Team Aoki scored Y i Y _ i Yi​ points. The team wi…

大数据关联规则挖掘:Apriori算法的深度探讨

文章目录 大数据关联规则挖掘:Apriori算法的深度探讨一、简介什么是关联规则挖掘?什么是频繁项集?什么是支持度与置信度?Apriori算法的重要性应用场景 二、理论基础项和项集支持度(Support)置信度&#xff…

第135期 一周游历(上)(20240120)

数据库管理135期 2024-01-20 第135期 一周游历(上)(20240120)1 PolarDB开发者大会2 工作3 Oracle甲骨文4 Oracle ACE总结 第135期 一周游历(上)(20240120) 作者:胖头鱼的鱼缸(尹海文) Oracle AC…

JS-WebAPIs-本地存储(五)

• 本地存储介绍 以前我们页面写的数据一刷新页面就没有了,是不是?随着互联网的快速发展,基于网页的应用越来越普遍,同时也变的越来越复杂,为了满足各种各样的需求,会经常 性在本地存储大量的数据&#xf…

运筹说 第107期 | 排队论创始人——阿格纳·克拉鲁普·爱尔朗

前面我们已经了解了非线性规划的相关内容,相信大家一定也有所收获,下面我们将带着大家继续了解排队论的相关内容,在本次文章中我们将一起走近排队论的奠基人——阿格纳克拉鲁普爱尔朗(Agner Krarup Erlang)&#xff0c…

基于Elasticsearch+Logstash+Kibana+Filebeat的日志收集分析及可视化

sudo rm /var/lib/dpkg/lock* sudo dpkg --configure -a apt update tail -f /var/log/car.log 1.1、项目概述 海量的业务应用,也带来了海量的日志数据,给业务应用的运维带来了新的挑战。例如,我们常用的网约车应用,单个平台…

I.MX8QM EC20适配

Android SDK:imx8_13.0.0_1.2.0(android 13 u-boot 2022.04 kernel 5.15.74) 一、内核修改 添加PID、VID。在“drivers/usb/serial/option.c”中可以看到EC25的PID和VID已经添加,而且这个EC25的PID和VID与EC20的相同,所以这里可以不用修改…

Traceroute 详解

前言 如果您是网络管理员,系统管理员或任何系统操作团队的一员,那么您可能已经听说过名为TRACEROUTE的工具。默认情况下,它是大多数操作系统中都提供的非常方便的工具。 网络管理员和系统管理员在日常活动中最常使用此工具。它基本上是一个…

二叉树 - 堆 | 数据结构中的小技巧大作用

📷 江池俊: 个人主页 🔥个人专栏: ✅数据结构冒险记 ✅C语言进阶之路 🌅 有航道的人,再渺小也不会迷途。 文章目录 一、堆的概念及介绍二、结构图示三、堆的代码实现(图解)3.1 创…

HackTheBox - Medium - Linux - Noter

Noter Noter 是一种中型 Linux 机器,其特点是利用了 Python Flask 应用程序,该应用程序使用易受远程代码执行影响的“节点”模块。由于“MySQL”守护进程以用户“root”身份运行,因此可以通过利用“MySQL”的用户定义函数来利用它来获得RCE并…

快速上手的AI工具-文心3.5vs文心4.0

前言 大家好晚上好,现在AI技术的发展,它已经渗透到我们生活的各个层面。对于普通人来说,理解并有效利用AI技术不仅能增强个人竞争力,还能在日常生活中带来便利。无论是提高工作效率,还是优化日常任务,AI工…

一篇文章看懂云渲染,云渲染是什么?云渲染如何计费?云渲染怎么选择

云渲染是近年兴起的新行业,很多初学者对它不是很了解,云渲染是什么?为什么要选择云渲染?它是如何计费的又怎么选择?这篇文章我们就带大家了解下吧。 云渲染是什么 云渲染简单来说就是把本地的渲染工作迁移到云端进行的…

以超市数据微案例-fineBI可视化分析

一、入门案例: 2.分析思路: 数据清晰界面中添加毛利额计算 **所以在新增步骤之后,必须点击保存并更新,否则可视化界面中无法使用最新的数据 4、数据可视化分析 1)销售额最高的十大商品种类 为1-8月超市数据&#xff…

响应式编程

Reactive-Stream Reactive Streams是JVM面向流的库的标准和规范 1、处理可能无限数量的元素 2、有序 3、在组件之间异步传递元素 4、强制性非阻塞,背压模式 在Java中,常用的背压机制是响应式流编程中的反压(Reactive Streams Backpressure)。反压是一种生产者-消费者模型,…