今天朋友叫我?guī)退罱▊€ngrok,我自己也是個喜歡折騰的人,所以就應(yīng)承下了。用了2小時左右搭建成功,中間查看各種資料,都太亂,太不利于大家搭建。所以我準(zhǔn)備寫一個簡單明了的,方便大家參考。中間的踩的坑我就不講了,直接把成功經(jīng)驗分享給大家。
首先
主要有幾個步驟
1.準(zhǔn)備材料
? 1.一臺有公網(wǎng)IP的主機(jī),或者vps等(Linux,如果Windows這篇文章僅供參考)
2.一個域名
3.git,安裝。
? ? ? apt install git
?4.Golang 最新版?下載到服務(wù)器,國內(nèi) http://www.golangtc.com/download,國外就是官網(wǎng)。
? ? ? ?wget http://www.golangtc.com/static/go/1.7.3/go1.7.3.linux-amd64.tar.gz
?5.ngrok 源碼,去github下載,或者用git拉取,地址(https://github.com/inconshreveable/ngrok)
2.配置環(huán)境
1.配置 A 記錄指向你的主機(jī)IP,類似 ?* tunnel.yuming.com (我沒法截圖,打開域名配置你自己就知道怎么做了)。
2.配置 Golang?
? ? tar -xzvf ?go1.7.3.linux-amd64.tar.gz ?解壓Golang文件
? ? ?mv ./go/ ? /usr/local/ ? 移動go文件夾到 /usr/local/ 文件夾
? ? ?mkdir gopath ?在用戶目錄下創(chuàng)建 gopath 用的目錄
? ? ?vim ?.mypath 在用戶目錄新建文件,存放go的環(huán)境信息
? ? ? ? ? export PATH=$PATH:/usr/local/go/bin
? ? ? ? ? export GOPATH=~/gopath
? ? ? ? ? export GOROOT=/usr/local/go
? ? ? ? ? export GOBIN=$GOPATH/bin
? ? ?如果你是bash 就直接在 ~/.bashrc 里面加一句 source ~/.mypath,其他的自己看吧。
? ? ?然后執(zhí)行 source .mypath 把環(huán)境變量添加進(jìn)來
3.配置ngrok
如果是git拉取的就直接 mv ./ngrok/ ? ~/gopath/src/ ?把ngrok下的所有文件移動到 gopath 下
其他的也類似,最后效果如下圖:(沒有bin,和sslkey)

? ?4.配置SSL證書
建議在 assets 文件夾中執(zhí)行,我在sshkey里面執(zhí)行的,最后文件移動的目錄層級很多。
把其中的域名替換成你自己的域名就好
$ openssl genrsa -out rootCA.key 2048
$ openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=tunnel.yuming.com" -days 5000 -out rootCA.pem
$ openssl genrsa -out device.key 2048
$ openssl req -new -key device.key -subj "/CN=tunnel.yuming.com" -out device.csr
$ openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000
執(zhí)行完后目錄下有六個文件:
device.crt ?device.csr ?device.key ?rootCA.key ?rootCA.pem ?rootCA.srl
拷貝文件
cp rootCA.pem assets/client/tls/ngrokroot.crt
cp device.crt assets/server/tls/snakeoil.crt
cp device.key assets/server/tls/snakeoil.key
3.編譯程序
到gopath 目錄下 執(zhí)行 make release-server ?replease-client
執(zhí)行成功后 在gopath/bin 目錄下會有 ngrok(Linux客戶端) 和ngrokd(服務(wù)端)
執(zhí)行 unset GOBIN 刪除 GOBIN 變量,否則交叉編譯報錯
執(zhí)行 GOOS=windows GOARCH=386 make release-client 交叉編譯Windows
執(zhí)行 GOOS=darwin GOARCH=amd64 make release-client 交叉編譯 Mac
后臺啟動 ngrok 服務(wù)
setsid ./ngrokd -domain="tunnel.yuming.com" -httpAddr=":80" -httpsAddr=":443" -log ./access.log
4.下載使用
使用下載工具下載客戶端到本地,我是mac 我用的scp
scp root@ip:~/gopath/bin/darwin_amd64/ngrok ? ?./ ?回車后輸入密碼開始下載
vim ngrok.cfg 輸入
? ? ? ?server_addr: "tunnel.yuming.com:443"
? ? ? ?trust_host_root_certs: false
保存退出(wq)
./ngrok -config=ngrok.cfg -subdomain=test ? ip:8000(ip,端口隨意你自己定)
test 就是客戶端想要綁定的域名,連接成功后截圖:

然后 使用 test.tunnel.yuming.com 訪問,展示成功。
5.慶祝成功
點贊。
吐槽一下,簡書的編輯功能太難用了。(字?jǐn)?shù)挺喜慶)。