如何才能让自己写的项目不在服务器部署也能访问?

简介: frp 主要由 客户端(frpc) 和 服务端(frps) 组成,服务端通常部署在具有公网 IP 的机器上,客户端通常部署在需要穿透的内网服务所在的机器上。

image.png


当自己有时候写项目玩又还没写好,却想要它现在能给别人访问怎么办呢?


那当然是今天的主角——内网穿透


使用啥工具进行内网穿透


主要原因:①免费(ps:能不花钱我绝不花钱)②用起来特简单(我太笨了,只适合简单好用的)


废话少说,直接开始!


环境说明

云服务器:CentOS7.6-Docker20


本地机器:Windows 系统


要干哪些事?

先了解其大概原理:


frp 主要由 客户端(frpc) 和 服务端(frps) 组成,服务端通常部署在具有公网 IP 的机器上,客户端通常部署在需要穿透的内网服务所在的机器上。


用户通过访问服务端的 frps,由 frp 负责根据请求的端口或其他信息将请求路由到对应的内网机器,从而实现通信。


由上可知,我们要配置的就两个:frp 服务端和客户端


服务端配置


先切换到root目录,(到哪都行)但为了方便你后面可以直接 cv ,所以跟我一样方便一些


cd~

下载frp


wget https://github.com/fatedier/frp/releases/download/v0.36.2/frp_0.36.2_linux_amd64.tar.gz

然后解压


tar -zxvf frp_0.36.2_linux_amd64.tar.gz

文件夹改个名,方便使用


mv -r frp_0.36.2_linux_amd64 frp

进入该目录


cd frp

查看一下文件


ls -a

我们需要关注一下这4个文件


frps frps.ini 这两个是服务端使用的

frpc frpc.ini 这两个是客户端使用的,这里可以直接删掉,也可以不删,随你


编辑 frps.ini 文件


vi frps.ini

这个文件应有如下格式,编辑完成后保存


[common]
bind_port = 7000

bind_port 表示用于客户端和服务端连接的端口,随便一个未占用的端口即可,后面客户端也会用到


然后我们就可以运行frps的服务端了


./frps -c frps.ini

如果在启动后输出内容最后看到 Start frps success,那恭喜你,已经成功了一半


为了方便日后使用,我们使用 systemctl 的方式 管理 frp服务


切换到 /lib/systemd/system


cd /lib/systemd/system

创建一个文件 frps.service


touch frps.service

编辑 frps.service


vi frps.service

将下面这段直接 c v


[Unit]
Description=frps service
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
#启动服务的命令(此处写你的frps的实际安装目录)
#ExecStart=/your/path/frps -c /your/path/frps.ini
ExecStart=/root/frp/frps -c /root/frp/frps.ini
[Install]
WantedBy=multi-user.target

然后就可以通过下面指令对 frps 进行操作了


启动

systemctl start frps


设置自启动

systemctl enable frps


停止

systemctl stop frps


重启

systemctl restart frps


查看应用的日志

systemctl status frps


客户端配置


下载: frp_0.36.2_windows_amd64.zip


解压在随便哪个喜欢的目录下,因为现在这里是客户端,所以也可以直接删除其中的 frps 和 frps.ini 文件。随你


打开frpc.ini,进行如下配置

[common]
server_addr = x.x.x.x
server_port = 7000
[web]
type = tcp
local_ip = 127.0.0.1
local_port = 8081
remote_port = 8081
#如果想多几个端口能被访问则像下面这样加就行了,[] 里名字要不一样 
#[web1]
#type = tcp
#local_ip = 127.0.0.1
#local_port = 8082
#remote_port = 8082


其中common字段下的三项即为服务端的设置。


  • server_addr为服务端IP地址,填入即可。
  • server_port为服务器端口,填入你设置的端口号即可,如果未改变就是7000

web字段都是自己定义的规则,自定义端口对应时格式如下。

  • [xxx] 表示一个规则名称,自己定义,此处由于我部署的是web服务,所以起名为web。
  • type 表示转发的协议类型,有TCP、UDP、HTTP、HTTPS等选项可以选择,如有需要请自行查询frp手册。
    当然你只要跟我一样就行了
  • local_iplocal_port 配置为本地需要暴露到公网的服务地址和端口。local_ip可以填你本地虚拟机的ip
  • remote_port 表示在 frp 服务端监听的端口,访问此端口的流量将会被转发到本地服务对应的端口。
  • 简而言之:当其他人访问server_addr:remote_port时就能访问到local_ip:local_port


配置完成 frpc.ini 后,就可以运行frpc了,frpc程序不能直接双击运行!


然后在上方地址栏中输入:powershell 后 回车


image.png


然后输入:


./frpc -c frpc.ini


image.png


(ps:这是之前用到时记下的,所以日期不对不必大惊小怪)


不要关闭此窗口,此时别人就可以通过server_addr:remote_port,访问你本地机器了,并且在窗口上会动态输出访问信息


如果有其它使用需求,请查看官方文frps.cn/11.html


其它的应用


除了能让自己项目在未部署的情况下也能访问之外,它还有什么作用呢?以下就举例两个我遇到的吧,如果还有啥好用的欢迎评论区补充。


①在学redis分片集群的时候总感觉三主三从全放一台机器上不对味,又没钱搞几台服务器,咋办呢?当然是用本地虚拟机里面的了,但怎么才能让本地虚拟机里的和服务器联系起来呢,就用上面说的内网穿透就🆗


②旧电脑卖出去也值不了啥钱,有啥办法利用一下呢?咱直接以后买云服务器的时候买最low的,然后项目之间在本地部署,电脑不关机当服务器用好了


image.png

目录
相关文章
|
23天前
|
弹性计算 监控 负载均衡
|
17天前
|
弹性计算 开发工具 git
2分钟在阿里云ECS控制台部署个人应用(图文示例)
作为一名程序员,我在部署托管于Github/Gitee的代码到阿里云ECS服务器时,经常遇到繁琐的手动配置问题。近期,阿里云ECS控制台推出了一键构建部署功能,简化了这一过程,支持Gitee和GitHub仓库,自动处理git、docker等安装配置,无需手动登录服务器执行命令,大大提升了部署效率。本文将详细介绍该功能的使用方法和适用场景。
2分钟在阿里云ECS控制台部署个人应用(图文示例)
|
24天前
|
PHP 数据库 数据安全/隐私保护
布谷直播源码部署服务器关于数据库配置的详细说明
布谷直播系统源码搭建部署时数据库配置明细!
|
2月前
|
关系型数据库 MySQL Linux
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
278 3
|
2月前
|
NoSQL Linux PHP
|
2月前
|
弹性计算 数据库连接 Nacos
阿里云ECS服务器在docker中部署nacos
docker pull nacos 失败,docker部署nacos遇到的问题,nacos数据库连接,nacos端口映射
114 1
|
2月前
|
监控 网络安全 调度
Quartz.Net整合NetCore3.1,部署到IIS服务器上后台定时Job不被调度的解决方案
解决Quartz.NET在.NET Core 3.1应用中部署到IIS服务器上不被调度的问题,通常需要综合考虑应用配置、IIS设置、日志分析等多个方面。采用上述策略,结合细致的测试和监控,可以有效地提高定时任务的稳定性和可靠性。在实施任何更改后,务必进行充分的测试,以验证问题是否得到解决,并监控生产环境的表现,确保长期稳定性。
68 1
|
2月前
|
Apache 数据中心 Windows
将网站迁移到阿里云Windows系统云服务器,访问该站点提示连接被拒绝,如何处理?
将网站迁移到阿里云Windows系统云服务器,访问该站点提示连接被拒绝,如何处理?
|
2月前
|
域名解析 缓存 网络协议
Windows系统云服务器自定义域名解析导致网站无法访问怎么解决?
Windows系统云服务器自定义域名解析导致网站无法访问怎么解决?
|
10天前
|
人工智能 弹性计算 编解码
阿里云GPU云服务器性能、应用场景及收费标准和活动价格参考
GPU云服务器作为阿里云提供的一种高性能计算服务,通过结合GPU与CPU的计算能力,为用户在人工智能、高性能计算等领域提供了强大的支持。其具备覆盖范围广、超强计算能力、网络性能出色等优势,且计费方式灵活多样,能够满足不同用户的需求。目前用户购买阿里云gpu云服务器gn5 规格族(P100-16G)、gn6i 规格族(T4-16G)、gn6v 规格族(V100-16G)有优惠,本文为大家详细介绍阿里云gpu云服务器的相关性能及收费标准与最新活动价格情况,以供参考和选择。
下一篇
无影云桌面