我们在本地开发时,由于现在大部分网络接入都在内网环境中,没有公网ip,因此想要访问本地开发服务进行测试是比较难的,这一点在微信开发时尤其是个问题。因为微信开发是需要与微信的测试服务器接口进行交互,如果没有公网ip,微信服务器找不到本机测试环境的地址,自然无法返回值,也无法完成对接。
很早之前就测试了花生壳这个内网穿透服务,效果还是可以的,但是问题有两个,免费服务并不稳定,同时只能使用其规定的几个域名,如果打算用自定义域名来测试开发,那就没有办法了(也许收费服务可以解决这个问题)。接着测试了网友提供的Ngrok服务,但是由于太多人滥用,导致服务间歇性中断,非常不稳定,已经不能愉快的玩耍了。于是经过一番了解了,终于还是打算自己搭建一个内网转发服务用于开发用。
Ngrok这个服务2.0以前的版本本身是免费开源的,但是其存在两个问题,配置有些复杂,编译麻烦,更重要的是还存在有内存泄露的小问题,这么一点不稳定的因素让我选择了另一个服务,Python-ngrok。
搭建的过程非常的简单,首先看一下需求:
服务端与本地端需求
Python 2.7.9 或 Python 3.4.2 以上
很简单的需求,如果服务端与本地端是Linux,直接安装Python3即可。
我这里的服务端是CentOS 7,运行以下命令安装:
1 |
|
完成Python3.4的安装。
我的本地操作系统是Windows,因此直接去Pyhton官网下载Python3.6.2后安装即可。
服务端配置
首先下载Python-ngrok服务端并解压,执行
1 |
|
进入目录后,修改服务端的配置:
1 |
|
修改以下部分对应的配置:
1 |
|
其中SERVERDOMAIN修改为你这台服务器对应的域名,该域名的子域名可以分配用于转发服务。其他部分基本不用修改,如果你对安全性的需求比较高,可以修改SERVERPORT为只有你知道的端口。
配置完成后,安装Screen并运行:
1 |
|
进入tmux进程中,开始运行ngrok服务:
1 |
|
服务端运行成功。
如果需要再次进入tmux,输入:
1 |
|
进入进程查看ngrok执行状态
域名配置
除了设置服务端,还得将域名的解析指向装有服务端的服务器ip(这里用1.2.3.4
举例),例如前面我们的服务端设置的域名为ktsee.com,那么只需要设置两条记录:
1 |
|
设置完成,接下来设置本地客户端。
客户端设置
在你的开发电脑上下载客户端:
下载:https://github.com/hauntek/python-ngrok/archive/master.zip
下载解压后,编辑python-ngrok.py
文件,修改其中的渠道队列部分:
1 |
|
这里有三块类似于上面部分的代码,根据需求设置,多余的删除掉,我的配置是:
1 |
|
这样表示用dev.ktsee.com这个子域名用作内网转发服务,保存后双击执行。
接着在浏览器中访问dev.ktsee.com,其效果与访问localhost一样,可以看到本地的开发环境显示结果。不同的是,这个dev.ktsee.com可以被外网用户访问,当然也包括了微信的回调服务器。
剩下的就是愉快的玩耍吧。