前言
今年研三咯,本次寒假也会成为人生中最后一次寒假。
回家之后翻出了家里的一台老电脑,是 20 年买的好像,大学读本科用的,8g 内存,英特尔八代处理器,小米笔记本 pro 15.6。好像现在小米都不搞笔记本了?
这台电脑下岗后,就用来给我妈看视频用,现在大家都刷抖音去了,这台电脑也直接吃灰。首先先进行经典清灰换硅脂处理,接下来就要思考这玩意该怎么利用起来了。
之前有一个问题一直困扰我,就是我买的阿里云云服务器太弱鸡了,2 核 2g ,用 docker 起了一个 wordpress,内存占用直接干到 80%,这就导致其他很多服务我都没法挂了,而且用 wordpress 的插件随便备份一下就有可能直接爆内存死机…
那能不能用这台老电脑替代云服务器,来挂载我的 wordpress 服务呢?可以的兄弟!还好当初是用docker 部署的,windows pc 分分钟就能迁移过去!
思路与策略
有了 idea 之后,就是考虑如何实现了。想法很简单,云服务器拥有公网 ip,用以作为用户访问的通道,用户访问 ip:80 端口时,将其转发到旧电脑的 5001 端口上(暂定),然后 5001 端口上挂载由 docker 部署的 wordpress 就可以了!
这就需要用到内网穿透技术,这个东西展开讲也可以讲很久,由于并不是本文的重点,因此有兴趣的大家可以自搜或者问 AI。
反正最后选择了部署FRP作为实现上述策略的方案,部署简单,占用资源少,且完全免费开源。
FRP 的部署
安装包的下载
从这里下载安装包:
https://github.com/fatedier/frp/releases
我的服务端是Ubuntu20.04,用以下命令查看CPU 架构:
lscpu
打印如下
(base) ➜ ~ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 46 bits physical, 48 bits virtual
Byte Order: Little Endian
...
因此得知是x86 架构,选择安装包为frp_0.61.1_linux_amd64.tar.gz
然后 windows 端一般就是x86 64 位,选择安装包为frp_0.61.1_windows_amd64.zip
下面是一个常见架构名称的等价关系清单:
ARMv8 = ARM64 = AArch64
ARMv7 = armv7l = ARM
x86_64 = x64 = amd64
x86 = x86_32
诸位可以根据自己的系统选择需要的安装包。
说是安装包,其实就是把对应系统的可执行文件打包了一份,直接解压就能用。
开放端口
必要开放的端口是云服务器端的 7000-7002 端口,不同服务器提供商操作方式不一样,这里就不赘述了。
本案例还需要开放 5000 端口作为与 windows 内网穿透的端口,同时 windows 端也需要开放,windows 端开放端口的方法这里也不赘述。
服务端配置
将安装包文件移动到服务器端然后解压,进入目录。
一般来说,frp 所有端的安装包都拥有一套类似的文件体系,拿 linux 举例:
(base) ➜ frp ls
frpc frpc.toml frps frps.toml LICENSE
LICENSE文件忽略,剩下来四个文件其实是两组,首先是frpc frpc.toml,c 的意思就是 client(客户端),那么另外一组 s 的意思就是 server(服务端),我们的服务器是服务端,因此只需要修改frps.toml文件即可,vim 一下 frps.toml,然后改成如下形式:
bindPort = 7000
# 接收http请求
vhostHTTPPort = 7001
# 客户端需要配置对应的token才允许映射
auth.token = "xxxxx"
#仅允许服务器上的指定端口/端口范围 避免滥用端口
allowPorts = [
# 范围指定
{ start = 5000, end = 5500},
# 单独指定
# { single = 5501},
]
# 仪表盘配置
# The default value is 127.0.0.1. Change it to 0.0.0.0 when you want to access it from a public network.
webServer.addr = "0.0.0.0"
webServer.port = 7002
# dashboard's username and password are both optional
webServer.user = "qzq"
webServer.password = "xxxxx"
然后启动!
./frps -c ./frps.toml
效果如下
(base) ➜ frp ./frps -c ./frps.toml
2025-01-25 11:07:33.335 [I] [frps/root.go:105] frps uses config file: ./frps.toml
2025-01-25 11:07:33.601 [I] [server/service.go:237] frps tcp listen on 0.0.0.0:7000
2025-01-25 11:07:33.601 [I] [server/service.go:305] http service listen on 0.0.0.0:7001
2025-01-25 11:07:33.601 [I] [frps/root.go:114] frps started successfully
2025-01-25 11:07:33.601 [I] [server/service.go:351] dashboard listen on 0.0.0.0:7002
此时可以访问 ip:7002 去观赏一下 frp 的仪表盘~
客户端配置
解压 windows 安装包到任意目录,windows 就编辑 frpc 文件即可,可以直接用记事本打开,然后搞成这样:
serverAddr = "服务器的公网ip"
serverPort = 7000
auth.token = "xxxx"
[[proxies]]
name = "test"
type = "tcp"
localIP = "0.0.0.0"
#本机需要映射的端口
localPort = 5000
#映射到云服务器的哪个端口
remotePort = 5000
然后进入 cmd,到 frpc 目录下运行如下命令
frpc.exe -c frpc.toml
启动效果应是和服务端差不多的,这里就不粘贴了。
此时到 ip:7002,也就是服务端的仪表盘处,可以看到这个链接的状态。
到目前为止就算部署好了,访问 ip:5000 理论上就可以访问到windows笔记本5000 端口挂载的服务,只是我们的笔记本的 5000 端口目前是空的,没有服务,因此就算现在访问 ip:5000 也啥都不会有~
因此我们就用 docker 起一个简单的服务好了:
docker run -p 5000:80 nginx
然后就可以访问公网 ip:5000 端口检验效果了!
然后,部署 wordpress 的话,我反正是按照我之前的文章重新部署了一次,感兴趣的移步:
https://www.qzq.world/我在2024年用docker-compose优雅地在ubuntu云服务器上部署了wordpress,并/
后记
后来我还是放弃了这个方案,主要是太慢了!
我的云服务带宽就 3M,如果要在本地部署 wordpress,流量本来是传送到服务器之后直接返回用户端;现在的话需要传送到服务器,转发到我的本地电脑,本地电脑回传服务器,再发送给用户,相当于路径长了一倍!
这么捉襟见肘的带宽,实在没法用这种内网穿透方式部署 web…
于是我最后就仅用这台老电脑挂点脚本就行了…
参考
FRP内网穿透0.61.1新版教程_frp 0.61.1 frps.toml-CSDN博客
https://github.com/fatedier/frp # 官方文档
文章评论