摘要:還有域名解析是否好了,能否通,可能你搭建環(huán)境是沒有問題的,但是解析錯(cuò)了,那就悲劇了。
相信搞過微信開發(fā)、小程序的同學(xué)都踩過調(diào)試的坑,那種線上折騰通常能讓你憋上一口老痰。當(dāng)然你也可以找其他的方式進(jìn)行內(nèi)網(wǎng)轉(zhuǎn)發(fā),比如用QQ瀏覽器、別人已經(jīng)搭建好的轉(zhuǎn)發(fā)服務(wù)、使用ssh+nginx。這這幾種我都使用過,為了省時(shí)間你值得擁有。但是最近看了ngrok的源碼,基于golang,那我就來勁了,因?yàn)槲易罱鼊偤迷谡垓vgolang網(wǎng)絡(luò)這一塊的內(nèi)容。所以就自己來吧前提
1.記得看標(biāo)題啊,我采用的是aws,所以意思你必須有一個(gè)服務(wù)器,必須有公網(wǎng)ip。
2.再有就是你要有一個(gè)域名,如果你使用過別人提供的ngrok,就知道,別人都采用三級(jí)域名泛解析的方式。所以希望你有一個(gè)自己的域名。不然沒辦法走下去了。
3.環(huán)境:redhat7.3
必要工具yum install -y mercurial git vim wget
這個(gè)mercurial是ngrok強(qiáng)制要求的。
安裝golang# 下載`go` cd /usr/local wget https://storage.googleapis.com/golang/go1.10.linux-amd64.tar.gz # 解壓 tar -zxvf go1.10.linux-amd64.tar.gz -C /usr/local/ # go的命令需要做軟連接到/usr/bin ln -s /usr/local/go/bin/* /usr/bin/設(shè)置go環(huán)境
#安裝go語言的安裝環(huán)境 yum install mercurial bzr subversion -y #新建go目錄作為項(xiàng)目目錄 mkdir -p $HOME/go #用cat的方法在尾部增加golang的環(huán)境:GOROOT GOPATH #下面這段,整段復(fù)制粘貼過去 cat >>$HOME/.bash_profile<檢查一下go的env環(huán)境變量:
go envngrok 配置
看到GOPATH,GOROOT就可以了下載:
cd /usr/local/ git clone https://github.com/inconshreveable/ngrok.git設(shè)置環(huán)境變量:
export GOPATH=/usr/local/ngrok/ #這里寫你自己的域名,建議你用二級(jí)域名,比如你有個(gè)域名為:baidu.com,那么這里就可以為:ngrok.baidu.com. export NGROK_DOMAIN="ngrok.xxx.com"當(dāng)然你會(huì)問,為什么不直接使用baidu.com,而是用ngrok.baidu.com.如果你有限制的域名的話,當(dāng)然是可以直接使用baidu.com的。
生成證書:
cd /usr/local/ngrok openssl genrsa -out rootCA.key 2048 #NGROK_DOMAIN 就是你上一步的步驟設(shè)置的域名 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拷貝證書覆蓋ngrok原來的證書:
過程會(huì)讓你輸入y 回車 cp rootCA.pem assets/client/tls/ngrokroot.crt cp server.crt assets/server/tls/snakeoil.crt cp server.key assets/server/tls/snakeoil.key生成服務(wù)端:
cd /usr/local/ngrok/ make release-server #這一步可能會(huì)出錯(cuò)的,我之所以會(huì)寫這篇文章,是因?yàn)檫@個(gè)地方出現(xiàn)了好幾次錯(cuò)誤,容易崩潰如果順利的話,生成的服務(wù)端在/usr/local/ngrok/bin下ngrokd文件.希望你可以一步到位
可能有的錯(cuò)誤:
bin/go-bindata -nomemcopy -pkg=assets -tags=release -debug=false -o=src/ngrok/client/assets/assets_release.go assets/client/... bin/go-bindata -nomemcopy -pkg=assets -tags=release -debug=false -o=src/ngrok/server/assets/assets_release.go assets/server/... go get -tags "release" -d -v ngrok/... go install -tags "release" ngrok/main/ngrokd go install: cannot install cross-compiled binaries when GOBIN is set make: *** [server] Error 1解決方法:
cd /usr/local/ngrok mkdir bin cp $GOBIN/go-bindata bin/ unset GOBIN這里說明一下,默認(rèn)下go get把go-bindata下載到GOBIN目錄中了,所以你要把go-bindata復(fù)制到ngrok的bin目錄中,但是默認(rèn)是沒有這個(gè)bin目錄的。
生成客戶端:
我用的是mac系統(tǒng),所以我只生成mac ngrok客戶端,window的生成方法,可以參考底下參考文章cd /usr/local/ngrok/ GGOOS=darwin GOARCH=amd64 make release-client #然后就是等待下載了,沒有進(jìn)度條,耐心等待。 #生成的在/usr/local/ngrok/bin/darwin_amd64 #都在bin下,服務(wù)端是ngrokd 客戶端是ngrok到這一步基本算是安裝完成了。
啟動(dòng)服務(wù)端這里為了方便我直接就用80端口了,請(qǐng)確認(rèn)你的80端口沒有被占用,關(guān)閉相應(yīng)的服務(wù)。
后面要想用,建議使用nginx反向代理到ngrok。cd /usr/local/ngrok/bin ./ngrokd -domain="xxx.com" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":4443" #-domain后面你上面寫的域名,如上面寫的:ngrok.baidu.com -httpAddr http端口 -httpsAddr https 端口 默認(rèn)為:443 #-tunnerlAddr 客戶端端口,連接端口,默認(rèn)為:4443啟動(dòng)客戶端先將服務(wù)器生成的客戶端ngrok下載到本地,aws下載的命令如下(不是aws,就用scp就可以了):scp -i "aa.pem" [email protected]:/usr/local/ngrok/bin/darwin_amd64 /ngrok然后同目錄下創(chuàng)建文件ngrok.cfg 配置文件:
server_addr: "ngrok.xxx.com:4443" #你上面自己寫的域名,如ngrok.baidu.com trust_host_root_certs: false #目錄下打開命令行 ./ngrok -config=./ngrok.cfg -subdomain=blog 80 -log=ngrok.log #這里subdomain后面是你的三級(jí)域名前綴,你可以改 #注意要在域名解析里添加三級(jí)域名解析 #最好添加一個(gè)log, 不然出錯(cuò)了,容易一臉懵逼這樣就可以了,然后在訪問blog.ngrok.xxx.com就可以訪問了。
域名解析可能有些小伙伴沒有怎么解析過三級(jí)域名。這里就短暫說一下。首先把你的二級(jí)域名解析到aws的ip上,如下圖
再添加一個(gè)三級(jí)域名解析:
這樣就可以了,其實(shí)還是比價(jià)簡(jiǎn)單的。
特別提醒如果你是新的服務(wù)器,比如aws,默認(rèn)有些端口是沒有開啟的(去安全組設(shè)置就好了)。所以你上面如果采用了其他的端口,先確定是否可用。不信的話你去telnet 4443端口試一下。還有域名解析是否好了,能否ping通,可能你搭建環(huán)境是沒有問題的,但是解析錯(cuò)了,那就悲劇了。
telnet ngrok.baidu.com 4443 ping ngrok.baidu.comaws 如果是自己免費(fèi)申請(qǐng)的,不用的時(shí)候記得關(guān)閉,不然超時(shí)那也要掏錢的。參考文章https://github.com/inconshrev...
https://blog.csdn.net/yjc_111...
https://blog.csdn.net/gebitan...
https://blog.csdn.net/qq_3656...
https://segmentfault.com/a/11...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/30793.html
摘要:作為一個(gè)內(nèi)網(wǎng)穿透的小工具,有時(shí)可能會(huì)時(shí)常更改配置等,所以作為本地的一個(gè)開機(jī)啟動(dòng)的小服務(wù)即可。設(shè)置開機(jī)啟動(dòng)輸入命令設(shè)置開機(jī)啟動(dòng)開啟查看狀態(tài)停止內(nèi)網(wǎng)穿透配置相對(duì)于另一款國內(nèi)大牛做的要顯的更加輕量安全易配置些。 12月18日更新 添加 frp 配置 前言 內(nèi)網(wǎng)穿透,無需多言,用處多多。首先強(qiáng)力推薦一款Sunny大大搭建的ngrok服務(wù)好用的不行,而且有免費(fèi)選項(xiàng),感覺平時(shí)夠用了。那么,為什么自...
摘要:本篇是該系列的第一篇,本地開發(fā)環(huán)境搭建以及接入微信。若確認(rèn)此次請(qǐng)求來自微信服務(wù)器,原樣返回參數(shù)內(nèi)容,則接入生效,成為開發(fā)者成功,否則接入失敗。 一、簡(jiǎn)介 關(guān)于微信公眾號(hào)的介紹就省略了,自行搜索。注冊(cè)過程也不說了。我們會(huì)直接注冊(cè)測(cè)試號(hào)來實(shí)現(xiàn)代碼。這將會(huì)是個(gè)全面講解微信公眾號(hào)開發(fā)的系列教程。本篇是該系列的第一篇,本地開發(fā)環(huán)境搭建以及接入微信。在開始之前最好去看看開發(fā)者文檔微信公眾平臺(tái)技術(shù)文...
摘要:古話說萬事開頭難回頭細(xì)想想還真是這樣在沒有開始做微信公眾號(hào)開發(fā)之前我以為它很復(fù)雜但是學(xué)過之后只想說原來這里是我的項(xiàng)目的地址下面我就把我的學(xué)習(xí)過程做一下總結(jié)希望可以幫助到有需要的人兒粗鄙之見恐有不足歡迎指教在閱讀下文之前你應(yīng)該對(duì)和框架有一定的 古話說: 萬事開頭難, 回頭細(xì)想想還真是這樣,在沒有開始做微信公眾號(hào)開發(fā)之前我以為它很復(fù)雜,但是學(xué)過之后只想說原來just so so~ 這里是我...
閱讀 3247·2021-11-22 12:07
閱讀 1886·2021-10-12 10:11
閱讀 1051·2019-08-30 15:44
閱讀 2951·2019-08-30 12:45
閱讀 2214·2019-08-29 16:41
閱讀 1645·2019-08-29 16:35
閱讀 2636·2019-08-29 12:57
閱讀 1158·2019-08-26 13:51