簡述搭建ngrok的過程node
一、環境準備linux
1)必須有一臺公網服務器,阿里雲服務器爲例(最好是linux 系統 centOs7)git
2)必須註冊本身的域名(xxx.vip),阿里雲上能夠註冊github
並在阿里雲服務器管理中,添加域名,並設置dns解析golang
設置域名雲DNS解析web
2 linux服務器上安裝ngrok,開啓ngrok服務windows
1.安裝git和golang,其中git不是必須的,安裝git僅僅是爲了後面下載ngrok源碼方便,golang是由於ngrok是用go語言寫的 1)yum install git 安裝git 2)yum install git ,若存在最好先執行yum remove git,再安裝,怕到時候下載不下來ngrok源碼 3)安裝golang語言環境-wget https://studygolang.com/dl/golang/go1.8.linux-amd64.tar.gz。下載地址在 https://studygolang.com/dl中找的,想換版本能夠在這裏找 4)tar -zxvf go1.8.linux-amd64.tar.gz 5)vi /etc/profile 加上這兩句話 export GOROOT=你的go解壓地址 export PATH=$PATH:$GOROOT/bin source /etc/profile 是環境生效 go version 查看go是否安裝成功 2.下載ngrok源碼,安裝 1)本地下載ngrok 建立ngrok目錄 mkdir ngrok 並進入 cd ngrok 在本地訪問https://github.com/inconshreveable/ngrok點擊下載zip包,解壓並上傳到ngrok服務器 2)能夠經過git 克隆git clone https://github.com/inconshreveable/ngrok.git 3)ngrok配置,執行一下命令。使用ngrok.com官方服務時,咱們使用的是官方的SSL證書。 自建ngrokd服務,若是不想買SSL證書,咱們須要生成本身的自簽名證書,並編譯一個攜帶該證書的ngrok客戶端。 證書生成過程須要一個NGROK_BASE_DOMAIN。 填寫咱們的域名地址xxx.vip 4)按照以下命令一步步配置 1. cd ngrok 2. NGROK_DOMAIN="你的域名" 3. openssl genrsa -out base.key 2048 4. openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.pem 5. openssl genrsa -out server.key 2048 6. openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr 7. openssl x509 -req -in server.csr -CA base.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crt 通過以上步驟,證書已經生成 5)覆蓋證書 cp base.pem assets/client/tls/ngrokroot.crt 複製證書 6)編譯打包程序 make release-server release-client 或者 make release-all 這一步驟等待時間較長,成功編譯後,會在bin目錄下找到ngrokd和ngrok這兩個文件。 7)前面生成的 ngrokd 就是服務端程序了,指定證書、域名和端口啓動它(證書就是前面生成的,注意修改域名) ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="你的域名" -httpAddr=":8080" -httpsAddr=":8090" 其中domain是你的域名,httpAddr是服務器http訪問端口,httpsAddr是服務器https訪問端口,其中,ngrok會開啓4443端口與客戶端保持鏈接,因此以上三個端口必須准入防火牆。若正常的話會提示
8)生成window客戶端和mac客戶端 GOOS=windows GOARCH=amd64 make release-client windown系統 GOOS=windows GOARCH=amd64 make release-client mac系統 9)而後在同級目錄下新建一個配置文件ngrok.cfg 內容爲:server_addr: "你的域名:4443" trust_host_root_certs: false 同目錄下新建一個start.bat @echo on cd %cd% #ngrok -proto=tcp 22 #ngrok start web ngrok -config=ngrok.cfg -log=ngrok.log -subdomain=prefix(子域的前綴) port(本地服務的端口) 雙擊start.bat 正常狀況下有以下所示
這種狀況就是成功了。服務器
3.服務端後臺運行,只須要開機自啓便可實現dom
1.經過nohup ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="你的域名" -httpAddr=":8080" -httpsAddr=":8090" 啓動能夠將啓動置入後臺,且斷開ssh也無影響。ssh
2.開機自啓方式
1)在ngrok程序目錄下新建一個啓動腳本,例如:start.sh path=/usr/local/ngrok cd $path ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="你的域名" -httpAddr=":8080" -httpsAddr=":8090" 給腳本授予執行權限 chmod +x start.sh 2)把ngrok程序製做成系統服務 在 /etc/rc.d/init.d目錄下新建一個服務項目(ngrok),以下: #!/bin/sh #chkconfig:2345 70 30 #description:ngrok ngrok_path=/usr/local/ngrok case "$1" in start) echo "start ngrok service.." sh ${ngrok_path}/start.sh ;; *) exit 1 ;; esac 給該文件賦權限755 chmod 755 ngrok 3)註冊ngrok服務自啓動 chkconfig --add ngrok 測試服務是否能啓動成功 service ngrok start 檢查自啓動的服務 chkconfig reboot重啓就實現自啓後臺運行了
4.linux 客戶端 ngrok後臺啓動方式
ngrok 用 & 不能後臺運行 這就要使用screen這個命令 首先安裝screen yum install screen 以後運行 screen -S 任意名字(例如:keepngork) 而後運行ngrok啓動命令 最後按快捷鍵 ctrl+A+D 既能夠保持ngrok後臺運行