跨平臺(tái)替代花生殼,打造自己的ngrok服務(wù)器

搭建ngrok所需要的服務(wù)器推薦

阿里云高性能服務(wù)器2折起:點(diǎn)我購(gòu)買

ngrok是什么
ngrok說(shuō)簡(jiǎn)單點(diǎn)谱秽,類似花生殼,它的功能就是可以讓你本地服務(wù)暴露在外網(wǎng)上面摹迷,可以通過(guò)公網(wǎng)訪問(wèn)疟赊。比如你自己寫(xiě)個(gè)網(wǎng)站,想和朋友們炫耀下峡碉;又比如搭建了個(gè)游戲近哟,想和朋友們一起玩;對(duì)于程序猿來(lái)說(shuō)鲫寄,微信開(kāi)發(fā)時(shí)無(wú)法在本地調(diào)試等都可以通過(guò)ngrok實(shí)現(xiàn)吉执。

需要準(zhǔn)備的
1疯淫、一臺(tái)公網(wǎng)的linux服務(wù)器,銀子短缺的可以網(wǎng)上找找有免費(fèi)的(我的是ubuntu server)
2戳玫、一個(gè)域名(現(xiàn)在域名很便宜熙掺,買個(gè)萬(wàn)一以后值錢了呢)
3、懂中文咕宿,能看懂下面的文字

編譯準(zhǔn)備
1币绩、將你的域名泛解析到你的服務(wù)器
2、進(jìn)入http://www.golangtc.com/download下載go,對(duì)應(yīng)你服務(wù)器的版本荠列。這里我下載的是:go1.4.2.linux-amd64.tar.gz类浪。然后直接將go安裝包解壓到服務(wù)器

/usr/local/go

即可,然后將

/usr/local/go/bin/*

復(fù)制到

/usr/bin

3、安裝git及ngrok源碼:
安裝git

sudo apt-get install git

安裝ngrok:

cd /usr/local/src/
git clone https://github.com/inconshreveable/ngrok.git
export GOPATH=/usr/local/src/ngrok/
export NGROK_DOMAIN="ngrok.lovehxy.com"
cd ngrok

上面其中的ngrok.lovehxy.com就是你的二級(jí)域名,隨便起肌似。

開(kāi)始編譯
1费就、首先為根域名生成證書(shū)

openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=ngrok.lovehxy.com" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=ngrok.lovehxy.com" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000
cp rootCA.pem assets/client/tls/ngrokroot.crt
cp device.crt assets/server/tls/snakeoil.crt 
cp device.key assets/server/tls/snakeoil.key

2、編譯服務(wù)端
先指定環(huán)境變量:

GOOS=linux GOARCH=amd64
#如果是32位系統(tǒng)川队,這里 GOARCH=386

再make:

make release-server

如果make過(guò)程中卡住,請(qǐng)升級(jí)git版本至1.7.9.5以上
編譯成功后,在

/usr/local/src/ngrok/bin

下生成了一個(gè)ngrokd可執(zhí)行文件,這就是我們編譯的服務(wù)端,啟動(dòng):

bin/ngrokd -domain="ngrok.lovehxy.com" -httpAddr=":8000"

如果沒(méi)有其他問(wèn)題,會(huì)出現(xiàn)以下輸出:

[11:05:48 CST 2015/11/16] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [registry] [tun] No affinity cache specified
[11:05:48 CST 2015/11/16] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [metrics] Reporting every 30 seconds
[11:05:48 CST 2015/11/16] [INFO] (ngrok/log.Info:112) Listening for public http connections on [::]:8000
[11:05:48 CST 2015/11/16] [INFO] (ngrok/log.Info:112) Listening for public https connections on [::]:443
[11:05:48 CST 2015/11/16] [INFO] (ngrok/log.Info:112) Listening for control and proxy connections on [::]:4443

先crtl+c退出,下面可是編譯客戶端力细。

注:上述編譯的過(guò)程會(huì)需要去github、google code下載其余依賴項(xiàng)目的源碼固额,因此需要掛VPN眠蚂。當(dāng)然,如果服務(wù)器不能掛vpn可以在本地進(jìn)行上面介紹的操作過(guò)程斗躏,然后將編譯后的源碼復(fù)制到服務(wù)器上重新編譯即可逝慧。 還有一種最簡(jiǎn)單的解決辦法就是,修改源碼啄糙,將需要連接google code的地址改為連接github上的地址:

找到 /root/ngrok/src/ngrok/log/logger.go 笛臣,看到里面有一個(gè)import中引用了google code,將其改為:"github.com/keepeye/log4go" 隧饼。

3沈堡、編譯客戶端
直接編譯:

make release-client

編譯出來(lái)的是linux平臺(tái)下的客戶端,如果你是linux的客戶端就可以直接使用。

mac下的客戶端編譯:

cd /usr/local/go/src
GOOS=darwin GOARCH=amd64 ./make.bash

然后回ngrok目錄,繼續(xù)編譯:

cd -
GOOS=darwin GOARCH=amd64 make release-client

完成后可以在

/usr/local/src/ngrok/bin/darwin_amd64/

下發(fā)現(xiàn)ngrok,拷貝到你的mac電腦上
在啟動(dòng)之前我們需要為客戶端編寫(xiě)一個(gè)配置文件ngrok.cfg:

server_addr: "ngrok.lovehxy.com:4443"
trust_host_root_certs: false

然后運(yùn)行:

./ngrok -config=./ngrok.cfg -subdomain=test 80

其中-subdomain就是需要分配域名的前綴部分

如果沒(méi)有錯(cuò)誤,會(huì)有以下輸出:

Tunnel Status                 online
Version                       1.7/1.7
Forwarding                    http://test.ngrok.lovehxy.com:8000 -> 127.0.0.1:80
Forwarding                    https://test.ngrok.lovehxy.com:8000 -> 127.0.0.1:80
Web Interface                 127.0.0.1:4040
# Conn                        0
Avg Conn Time                 0.00ms

現(xiàn)在訪問(wèn):test.ngrok.lovehxy.com:8000就可以訪問(wèn)你本機(jī)的80端口了

windows下的客戶端編譯:

cd /usr/local/go/src
GOOS=windows GOARCH=amd64 ./make.bash
cd -
GOOS=windows GOARCH=amd64 make release-client
#同理燕雁,這里的amd64是64位系統(tǒng)诞丽,32位改成386
#應(yīng)該會(huì)在 bin/windows_amd64 目錄下生成ngrok客戶端程序

然后執(zhí)行:

ngrok -config=ngrok.cfg -subdomain test 8080 

即可

怎么樣,是不是很cool。有能力的小伙伴趕緊購(gòu)買一個(gè)云服務(wù)器來(lái)部署自己的ngork服務(wù)吧拐格。
推薦阿里云服務(wù)器: 點(diǎn)我購(gòu)買

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末僧免,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子捏浊,更是在濱河造成了極大的恐慌懂衩,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異勃痴,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)热康,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門沛申,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人姐军,你說(shuō)我怎么就攤上這事铁材。” “怎么了奕锌?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵著觉,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我惊暴,道長(zhǎng)饼丘,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任辽话,我火速辦了婚禮肄鸽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘油啤。我一直安慰自己典徘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布益咬。 她就那樣靜靜地躺著逮诲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪幽告。 梳的紋絲不亂的頭發(fā)上梅鹦,一...
    開(kāi)封第一講書(shū)人閱讀 50,050評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音评腺,去河邊找鬼帘瞭。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蒿讥,可吹牛的內(nèi)容都是我干的蝶念。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼芋绸,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼媒殉!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起摔敛,我...
    開(kāi)封第一講書(shū)人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤廷蓉,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后马昙,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體桃犬,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡八匠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年吱雏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡淑履,死狀恐怖付呕,靈堂內(nèi)的尸體忽然破棺而出僵娃,到底是詐尸還是另有隱情险掀,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布田度,位于F島的核電站妒御,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏镇饺。R本人自食惡果不足惜乎莉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望兰怠。 院中可真熱鬧梦鉴,春花似錦、人聲如沸揭保。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)秸侣。三九已至存筏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間味榛,已是汗流浹背椭坚。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留搏色,地道東北人善茎。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像频轿,于是被迫代替她去往敵國(guó)和親垂涯。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容

  • 需要先安裝go環(huán)境設(shè)置環(huán)境變量12345 # 可以根據(jù)自己需要調(diào)整路徑 echo 'export GORO...
    加菲貓Jack閱讀 1,958評(píng)論 3 1
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理航邢,服務(wù)發(fā)現(xiàn)耕赘,斷路器,智...
    卡卡羅2017閱讀 134,638評(píng)論 18 139
  • Swift版本點(diǎn)擊這里歡迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh閱讀 25,340評(píng)論 7 249
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,863評(píng)論 25 707
  • 不知你何時(shí)喜歡上我册招,對(duì)我體貼關(guān)心岔激,百般呵護(hù),那愛(ài)甚是濃厚卻又決絕是掰!我能看出相會(huì)時(shí)你彬彬有禮鹦倚,卻又掩不住身上的殺伐之...
    司竹空閱讀 273評(píng)論 0 0