革命的果实最香甜~~
劳动的人民最光荣~~
经过一下午的鼓捣,终于实现了ngrok内网穿透部署
软件需求
- Git
- Go
- ntp
须知:
域名一定要使用二级域名
一级域名为 baidu.com
二级域名为 xxx.baidu.com不要用已经被占用的二级域名
建议重新解析一个,反正不花钱对不对
不然会出现莫名其妙的错误
:(
以下文中 主域名 皆为 二级域名 :test.baidu.com
次域名 为 :ngrok.test.baidu.com
PS:此处描述并不准确,请翻至最后参阅
防火墙记得要关掉,忘记的话你会恶心的一批
服务器域名 和 客户端域名的关系
环境:
- server 端是在阿里云,阿里云的系统版本是 CentOS 7 amd64
- client 端是对多的,有 centos、windows、Raspberry Pi,基本上要覆盖到所有的平台 linux 、 windows 和 arm
- 暂时使用树莓派进行记录
开始配置:
git安装(不做赘述)
使用ntp进行时间同步
服务端和客户端都要,不然会有恶心的错误
开始clone ngrok
由于2.x版本好像不开源了,所以我们用1.7,这个git不是官方版,但是比官方版好用 XD
感谢开源社区,开源万岁!
clone完成进行配置
进入目录后生成证书(你抄就完事了)
拷贝证书到指定位置(你抄就完事了)
开始编译 ngrok 服务端
这里我主要是生成了 arm 和 Linux 的版本。继续在原先的目录下:
不同平台使用不同的 GOOS 和 GOARCH,前面的编译选项就是指 go os , go 编译出来的操作系统 (windows,linux,darwin) ;go arch, 对应的构架 (386,amd64,arm)
- Linux 平台 32 位系统:GOOS=linux GOARCH=386
- Linux 平台 64 位系统:GOOS=linux GOARCH=amd64
- Windows 平台 32 位系统:GOOS=windows GOARCH=386
- Windows 平台 64 位系统:GOOS=windows GOARCH=amd64
- MAC 平台 32 位系统:GOOS=darwin GOARCH=386
- MAC 平台 64 位系统:GOOS=darwin GOARCH=amd64
- ARM 平台:GOOS=linux GOARCH=arm
编译成功后会在ngrok/bin下生成ngrokd、ngrok两个文件,前者是服务端程序,后者是客户端程序。
生成的执行文件由于版本不同可能在不同文件夹内 ,如树莓派客户端在 linux_arm 内,请自行判断
把生成好的客户端传到对应服务器
可选方案:
- FTP
- lyzsz
FTP需要搭建
推荐lyzsz
没有办法的情况下用git
不再赘述
配置客户机
- 建立文件夹ngrok
- chmod 777
- 把客户端导入
- 新建文件 ngrok.cfg(内容如下)
启动服务端
- httpAddr 是访问普通的http使用的端口号,后面用 二级域名:8081 来访问服务
- httpsAddr 是访问的https使用的端口号,同上,只不过是需要https的服务访问才用这个端口
- tunnelAddr 是通道的端口号,这个端口是ngrok用来通信的,所以这个端口在服务器上和客户端上设置必须要对应才可以正常的链接,默认不填写好像是4443
启动客户端
这个二级域名前缀最好一样,避免莫名其妙的报错
日志: -log=ngrok_log.txt 是记录ngrok的日志,如果前期调试的时候加上这个参数,如果不能访问就可以查看到底是什么问题
如下
客户端启动成功
Tunnel Status 为 online 即为链接成功
如果出现reconnecting
请您自求多福
:(
二次更新:
发现退出终端后链接会自动断开
于是找了许多后台运行进程的资料
成果如下
服务端:
客户端:
这样即使不链接服务器也能保持平稳运行
在此重点阐述 服务器域名 和 客户端域名的关系
假定你的域名为 baidu.com
Comments NOTHING