概述:
ngrok其实这东西,我也不是很懂,所以也直接跟大家说,这就是个类似花生壳的东西.
简单来说,它就好像把我们内网自己使用的电脑和服务器用vpn连接起来,然后你的电脑就可以从互联网来访问了,有个词就叫内网穿透,反正意思都是一个样的。
目前对于底层和服务器相关的东西本人基本还是以不求甚懂的方式来进行。
这篇文章是参考:https://www.sunnyos.com/article-show-48.html
此作者开放了免费版本的内网穿透服务,可以自己指定域名,详情可看:http://www.ngrok.cc
下面讲讲怎么安装,本身我自己学的是应用层,所以这块其实不太清楚,所以只能根据自己被坑的经验来做分享
一、安装golang环境
文档参考地址:http://www.runoob.com/go/go-environment.html
如果直接通过apt-get install golang的话,则安装的一般是比较低的版本,而我们所需要的是高版本。(1.4以上,我安装的是1.7.3)
1、下载编译后的源码包,已包含可执行文件
wget http://www.golangtc.com/static/go/1.7.3/go1.7.3.linux-amd64.tar.gz
--mac darwin-amd64
--ubuntu linux-amd64
--centos linux-386
(这是下载列表的地址:http://www.golangtc.com/download)
2、解压到/usr/local目录下,我看大家都解压到这个目录就跟风
tar -C /usr/local -xvf go1.7.3.linux-amd64.tar.gz
3、引入环境变量,即让你可以直接在任何目录下执行go
# 手动执行,只在当次登录有效,我这边只针对当前登录用户 vim /root/.bashrc # 往上面vim的文件末尾添加这段代码 export PATH=$PATH:/usr/local/go/bin
# 为了立马生效,必须马上执行下面的命令
source /root/.bashrc
4、测试下,有内容就正常了
go version
二、安装git(这个没啥好说的,源码管理)
sudo apt-get install git
三、git clone ngrok源码,编译
ngrok源码:https://github.com/inconshreveable/ngrok.git
1、进入/usr/local目录
git clone https://github.com/inconshreveable/ngrok.git
2、引入临时的全局环境变量,此次登录有效
# 这个等会编译的时候要用 export GOPATH=/usr/local/ngrok/ # 这个是你自己的域名,可以是二级或三级域名 # 注意,这边ngrok.gabin.top和它的所有子域名都必须指向中转服务器,我最开始就是没有注意这点,导致各种没报错,但是就是不能用 export NGROK_DOMAIN="ngrok.gabin.top"
3、替换域名证书,注意到了吗,NGROK_DOMAIN这个环境变量是我们刚刚设置的。
--生成证书
cd /usr/local/ngrok openssl genrsa -out rootCA.key openssl req -x509 -new -nodes -key rootCA.key -subj -out rootCA.pem openssl genrsa -out server.key openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr openssl x509 -req -
--替换证书
cp rootCA.pem assets/client/tls/ngrokroot.crt cp server.crt assets/server/tls/snakeoil.crt cp server.key assets/server/tls/snakeoil.key
4、开始生成服务端执行文件
# 自己注意下,不同操作系统是不一样的参数,上面也有写到了 GOOS=linux GOARCH=amd64 make release-server
成功之后在/usr/local/ngrok/bin目录下会生成一个ngrokd的文件,这就是服务端的启动执行文件了
5、生成客户端可执行文件
--mac
cd /usr/local/ngrok GOOS=darwin GOARCH=amd64 make release-client
--window
cd /usr/local/ngrok GOOS=windows GOARCH=amd64 make release-client
成功之后在/usr/local/ngrok/bin目录下会生成对应的目录,一般是darwin_amd64和window_64,前一个是mac的,后一个是window的
5、替换掉引用
vim /usr/local/ngrok/src/ngrok/log/logger.go # 替换掉import中log的引用,记得删除旧的,别注释了,会报错哈哈 log "github.com/keepeye/log4go"
6、调试
--启动服务端,这边使用的是80端口。一般都需要用这个,原本想用反向代理,发现好像是不行。如果有发现可以的话,可以分享一下
如果需要在后台执行的话,参考nohup命令
# 由于NGROK_DOMAIN是临时的环境变量,所以如果要重复使用的话,这个变量最好保存起来,否则下次登录就失效了。 /usr/local/ngrok/bin/ngrokd -domain="$NGROK_DOMAIN" -httpAddr=":80"
--启动客户端
先设置好配置文件:同目录下创建一个ngrok.cfg
server_addr: "ngrok.gabin.top:4443" trust_host_root_certs: false
# 通过配置文件启动,这边的端口代表的是自己本地调试程序启用的端口,一般是8080 ./ngrok -config=./ngrok.cfg -subdomain=blog
四、好了,可以用了。访问以下 blog.ngrok.gabin.top
注意点:
1、其实主要就是装好go环境
2、需要知晓基础的一些知识:环境变量、证书、make(虽然我也不是很懂,总之做多了会有点感觉,就感觉这么做是对的...)
3、如果没有测试环境可以用的话,可以购买特价的国际域名,一般一年不要十几二十块的,然后申请个像是华为企业云的服务器(本人就申请了一个1块钱15天的试用服务),就可以自己动手尝试了