1. 服务器准备
CentOS6上试过了, 编译卡住了, 据说是Git版本过低导致, 想升级git , 谁知又有一堆问题, 索性放弃, 安装了CentOS7, 在上面部署.
2. Go环境搭建
go环境安装可以通过源码安装或安装EPEL扩展源后使用yum安装,由于使用yum安装的go不能进行交叉编译,不能够编译生成Windows客户端,所以推荐使用通过源码安装。
源码安装go的详细过程如下:
1).下载源码,可以在http://www.golangtc.com/download 上找到自己系统对应的源码。由于我的vps系统是centos的,所以下载的是:go1.7.1.Linux-amd64.tar.gz。
2).将其解压到/usr/local目录下:
- 1
- 1
注意下载适合自己操作系统的版本
3).设置环境变量
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
4). 安装go get工具
- 1
- 1
2.获取ngrok源码
git版本需要在1.7.9.5以上,如果不符合条件需要将git版本升级。我这里的git版本是1.8.3.1。
获取源码:
- 1
- 1
3. 编译
1). 配置环境变量
- 1
- 1
tunnel.ngrok.me 替换成你自己的域名。
2). 生成自签名ssl证书
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
设置变量:
- 1
- 1
生成服务端与客户端
- 1
- 1
编译之后,就会在ngrok源码的bin目录下生成两个可执行文件:ngrokd、ngrok。
其中ngrokd就是ngrok的服务端程序,ngrok就是ngrok的客户端程序。
由于现在生成的客户端ngrok只能在linux下运行,因此如果想要生成windows下的客户端程序,需要继续进行交叉编译。
4. 交叉编译
1).生成windows客户端
上述编译过程生成的服务端和客户端都是linux下的,不能在windows下用。如果想编译生成windows客户端,需要重新配置环境并编译。
交叉编译过程如下:
- 1
- 1
编译后,就会在bin目录下生成windows_amd64目录,其中就包含着windows下运行的服务器和客户端程序。
网上有文章说需要:
- 1
- 2
- 3
- 1
- 2
- 3
我没有重新编译go, 一样生成了windows客户端, 可能我的go版本高的缘故?
2). 编译arm客户端
- 1
- 1
3).编译mac版本客户端
- 1
- 1
5.设置域名解析
添加两条A记录:tunnel.ngrok.me和*.tunnel.ngrok.me,指向所在的Ngrok服务器ip。
6. ngrokd服务启动与使用
1).启动ngrokd服务端
- 1
- 1
运行结果如下:
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
默认转发80和443端口, 监听端口是4443
如果要改需要添加参数
- 1
- 1
$NGROK_DOMAIN是必须指定的, 不然会生成ngrok.com的二级域名, 那就用不了
2).启动ngrok客户端
客户端使用,拷贝刚刚生成的ngrok.exe文件到本地,创建ngrok.cfg配置文件,可以根据自己的实际情况进行配置
- 1
- 2
- 1
- 2
ngrok -config=ngrok.cfg -subdomain test 8080
test是你的二级域名地址
看到这样的信息说明你成功了
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
如果出错了, 可以加参数看看什么原因
-log=stdout
错误的原因有可能是证书的原因,也可能是域名的原因, 必须保持与NGROK_DOMAIN相同
如果开了防火墙的话, 还必须开启80, 443, 4443端口
资料参考:
http://bbear.me/shi-yong-a-li-yun-da-jian-zi-ji-de-ngrokfu-wu/
http://chuansong.me/n/341281851829
https://www.sunnyos.com/article-show-48.html
http://tonybai.com/2015/03/14/selfhost-ngrok-service/