内网穿透:让你的项目实时与世界共享
本文记录了我在腾讯云轻量服务器上部署内网穿透服务,并用脚本 + systemd 实现自动检测端口、自动启动/关闭 frpc 客户端、实现开机自启的完整过程。适用于前端开发者本地真机调试、远程演示、项目部署等场景。
目录
- 场景需求与技术选型
- frp 内网穿透基础部署
- 编写自动检测脚本
- systemd 开机自启与守护
- 实战过程常见问题与优化建议
- 完整工程目录与配置说明
- 总结与展望
1. 场景需求与技术选型
- 痛点:需要将本地 Nuxt、博客等服务穿透到公网,便于手机端随时进行真机测试,也便于产品/UI随时访问,提高开发效率。
- 工具:选择 frp(轻量级高性能内网穿透工具)、腾讯云轻量服务器。
- 进阶需求:只在本地有服务监听(如 3000/5173 端口)时才启动 frpc,节约资源;重启后 frpc 自动恢复,无需人工干预。
2. frp 内网穿透基础部署
2.1 服务器端(frps)部署
登录腾讯云服务器,进入合适的目录,例如
~/frp_0.56.0_linux_amd64
。前往 frp 官方 GitHub 下载最新版,使用 wget/curl 或本地上传:
1
2
3wget https://github.com/fatedier/frp/releases/download/v0.56.0/frp_0.56.0_linux_amd64.tar.gz
tar -zxvf frp_0.56.0_linux_amd64.tar.gz
cd frp_0.56.0_linux_amd64配置
frps.ini
,最简示例:1
2
3
4
5
6[common]
bind_port = 7000
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = yourpassword
token = yourtoken123使用 nohup、后台运行或者 systemd:
1
nohup ./frps -c frps.ini > frps.log 2>&1 &
云服务器控制台(安全组)务必开放上述所有端口(如 7000、8000、7500 等),否则公网无法连接。
2.2 本地(frpc)基础测试
在本地 Linux 设备下载、解压 frpc(版本必须和服务器一致):
1
2
3wget https://github.com/fatedier/frp/releases/download/v0.56.0/frp_0.56.0_linux_amd64.tar.gz
tar -zxvf frp_0.56.0_linux_amd64.tar.gz
cd frp_0.56.0_linux_amd64编写
frpc.ini
,举例:1
2
3
4
5
6
7
8
9
10[common]
server_addr = <你的腾讯云公网 IP>
server_port = 7000
token = yourtoken123
[nuxt]
type = tcp
local_ip = 127.0.0.1
local_port = 3000
remote_port = 8000- 多服务可多配几个
[section]
。
- 多服务可多配几个
先在本地开好 nuxt 项目(
npm run dev
默认监听 3000 端口),再手动运行 frpc:1
./frpc -c frpc.ini
本地终端应看到
login to server success
等日志,腾讯云服务器上(frps.log)也能看到连接记录。测试方法:浏览器直接访问
http://<你的腾讯云公网 IP>:8000
,理论上就能看到本地 Nuxt 页面。也可以试试用阿里云/腾讯云域名解析,直接映射到你的服务器。
注意细节:
- 若端口/服务没开好,或 frps 没正常运行,连接会失败。
- 服务器安全组端口未开放也会直接拒绝。
- 服务器 frps 启动时如端口被占用,优先先
lsof -i:端口号
检查。
3. 编写自动检测 + 启停脚本
需求:监听多个关键端口,端口被占用(如本地 nuxt 开发环境启动)则自动启动 frpc,否则关闭。
3.1 端口检测+frpc自动启动/关闭脚本(bash)
1 |
|
- 脚本要
chmod +x check_and_start_frpc.sh
,支持多端口可扩展。 - 可以用 nohup、screen、tmux 后台运行。
4. systemd 配置开机自启
4.1 新建 systemd 服务文件
/etc/systemd/system/frpc-monitor.service
1 |
|
4.2 启用/检查服务
1 |
|
- systemd 守护可防止脚本异常退出,日志可追溯。
5. 常见问题与调优
lsof
未安装需先sudo apt install lsof
- 用户/路径注意与实际一致,systemd 里的
User=
与WorkingDirectory
要正确 - 日志、监控脚本占用极低,不影响服务器运行
- 建议关键命令和配置文件加备注,方便运维和迁移
- 需要支持更多端口/服务时,只要加到
PORTS=(...)
即可
6. 完整工程结构(推荐示例)
1 |
|
7. 总结与展望
本方案适用于日常前端 demo 展示、真机调试。系统性配置 + 自动化脚本可以极大提升远程协作效率。
后续可扩展方向:Nginx 反向代理+多域名、HTTPS、自动证书、更多自动化脚本等。
本文部分内容由 ChatGPT(OpenAI)辅助生成