革命的果实最香甜~~node
劳动的人民最光荣~~linux
域名必定要使用二级域名git
一级域名为 baidu.comgithub
二级域名为 xxx.baidu.com不要用已经被占用的二级域名golang
建议从新解析一个,反正不花钱对不对windows
否则会出现莫名其妙的错误centos
如下文中 主域名 皆为 二级域名 :test.baidu.combash
次域名 为 :ngrok.test.baidu.com服务器
PS:此处描述并不许确,请翻至最后参阅dom
防火墙记得要关掉,忘记的话你会恶心的一批
➜ ngrok git:(master) ✗ yum install mercurial git gcc golang ntp 复制代码
服务端和客户端都要,否则会有恶心的错误
➜ ngrok git:(master) ✗ ntpdate cn.pool.ntp.org
复制代码
因为2.x版本好像不开源了,因此咱们用1.7,这个git不是官方版,可是比官方版好用 XD
感谢开源社区,开源万岁!
➜ ngrok git:(master) ✗ git clone https://github.com/tutumcloud/ngrok.git ngrok复制代码
➜ ngrok git:(master) ✗ export NGROK_DOMAIN="主域名"
➜ ngrok git:(master) ✗ cd ngrok 复制代码
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem
openssl genrsa -out server.key 2048
openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr
openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 5000复制代码
cp rootCA.pem assets/client/tls/ngrokroot.crt
cp server.crt assets/server/tls/snakeoil.crt
cp server.key assets/server/tls/snakeoil.key复制代码
这里我主要是生成了 arm 和 Linux 的版本。继续在原先的目录下:
#默认是linux 64位,和我同样
#个人客户端是树莓派
➜ ngrok git:(master) ✗ make release-server
➜ ngrok git:(master) ✗ GOOS=linux GOARCH=arm make release-client
# linux + win + mac + arm 配置
#GOOS=linux GOARCH=amd64 make release-client release-server
#GOOS=windows GOARCH=amd64 make release-client release-server
#GOOS=darwin GOARCH=amd64 make release-client release-server
#GOOS=linux GOARCH=arm make release-client release-server复制代码
不一样平台使用不一样的 GOOS 和 GOARCH,前面的编译选项就是指 go os , go 编译出来的操做系统 (windows,linux,darwin) ;go arch, 对应的构架 (386,amd64,arm)
Linux 平台 64 位系统:GOOS=linux GOARCH=amd64
Windows 平台 64 位系统:GOOS=windows GOARCH=amd64
MAC 平台 64 位系统:GOOS=darwin GOARCH=amd64
编译成功后会在ngrok/bin下生成ngrokd、ngrok两个文件,前者是服务端程序,后者是客户端程序。
生成的执行文件因为版本不一样可能在不一样文件夹内 ,如树莓派客户端在 linux_arm 内,请自行判断
可选方案:
FTP须要搭建
推荐lyzsz
没有办法的状况下用git
再也不赘述
server_addr: 主域名:4443
trust_host_root_certs: false复制代码
#服务端操做均在ngrok目录下
➜ ngrok git:(master) ✗ ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="主域名" -httpAddr=":8081" httpsAddr=":8082"复制代码
#服务端启动成功信息
➜ ngrok git:(master) ✗ ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="主域名" -httpAddr=":8081" httpsAddr=":8082"
[19:43:13 CST 2018/09/04] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [registry] [tun] No affinity cache specified
[19:43:13 CST 2018/09/04] [INFO] (ngrok/log.Info:112) Listening for public http connections on [::]:8081
[19:43:13 CST 2018/09/04] [INFO] (ngrok/log.Info:112) Listening for public https connections on [::]:443
[19:43:13 CST 2018/09/04] [INFO] (ngrok/log.Info:112) Listening for control and proxy connections on [::]:4443
[19:43:13 CST 2018/09/04] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [metrics] Reporting every 30 seconds复制代码
#linux
➜ ngrok git:(master) ✗ ./ngrok -config ./ngrok.cfg -subdomain 次域名前缀(如:ngrok) -proto http 80
#windows
ngrok.exe -subdomain=次域名前缀(如:ngrok) -config=ngrok.cfg 80复制代码
这个二级域名前缀最好同样,避免莫名其妙的报错
日志: -log=ngrok_log.txt 是记录ngrok的日志,若是前期调试的时候加上这个参数,若是不能访问就能够查看究竟是什么问题
以下
➜ ngrok git:(master) ✗ ./ngrok -log=ngrok_log.txt -config ./ngrok.cfg -subdomain 次域名前缀(如:ngrok) -proto http 80./ngrok复制代码
Tunnel Status 为 online 即为连接成功
若是出现reconnecting
请您自求多福
发现退出终端后连接会自动断开
因而找了找后台运行进程的资料
成果以下
➜ ngrok git:(master) ✗ nohup ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="主域名" -httpAddr=":8081" httpsAddr=":8082" &
[1] 1784nohup: 忽略输入并把输出追加到"nohup.out"
#使用tail查看日志输出
➜ ngrok git:(master) ✗ tail -f nohup.out
#1784为进程ID
➜ ngrok git:(master) ✗ ps aux | grep ngrok
#使用 kill 结束进程
➜ ngrok git:(master) ✗ kill -9 1784复制代码
➜ ngrok git:(master) ✗ setsid ./ngrok -log=ngrok_log.txt -config ./ngrok.cfg -subdomain ngrok -proto http 80
➜ ngrok git:(master) ✗ ps aux | grep ngrok
➜ ngrok git:(master) ✗ kil -9 1744复制代码
这样即便不连接服务器也能保持平稳运行
#服务端设定domain 域名 为 baidu.com
➜ ngrok git:(master) ✗ nohup ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="域名" -httpAddr=":8081" httpsAddr=":8082" &
#客户端subdomain hostname 为 ngrok
➜ ngrok git:(master) ✗ setsid ./ngrok -log=ngrok_log.txt -config ./ngrok.cfg -subdomain ngrok -proto http 80
#访问域名即为 ngrok.baidu.com
-----------------------------------------------------
#若服务端设定domain 域名 为 test.baidu.com
➜ ngrok git:(master) ✗ nohup ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="域名" -httpAddr=":8081" httpsAddr=":8082" &
#客户端subdomain hostname 为 ngrok
➜ ngrok git:(master) ✗ setsid ./ngrok -log=ngrok_log.txt -config ./ngrok.cfg -subdomain ngrok -proto http 80
#访问域名即为 ngrok.test.baidu.com
##注意 不管是 ngrok.baidu.com 仍是 ngrok.test.baidu.com
##最终访问的域名 必须在 域名商处 进行解析!!!
复制代码