其實挺麻煩的,我查了好多資料才搞定的。若是不想折騰,就簡單使用ngrok 實現內網穿透,能夠移步到我這個教程利用 ngrok 免費內網穿透部署 微信開發 調試環境。node
安裝git
若是出現 yum 的程序找不到,或者很慢
請移步這個教程yum 找不到程序, yum更換國內阿里源linux
# 安裝git所須要的依賴包 yum -y install zlib-devel openssl-devel perl hg cpio expat-devel gettext-devel curl curl-devel perl-ExtUtils-MakeMaker hg wget gcc gcc-c++ # 下載新版本git (版本列表 https://www.kernel.org/pub/software/scm/git/) cd /usr/local wget https://www.kernel.org/pub/software/scm/git/git-2.16.2.tar.gz # 解壓 tar zxvf git-2.16.2.tar.gz # 編譯git cd git-2.16.2 ./configure --prefix=/usr/local/git make make install #刪除剛纔下載的git包 cd /usr/local rm git-2.16.2.tar.gz -y
安裝gonginx
# 下載go cd /usr/local www.golangtc.com/static/go (這裏是列表,注意本身的系統是多少位的,linux-amd64是64位的。linux-386是32位的) wget https://www.golangtc.com/static/go/1.9.2/go1.9.2.linux-amd64.tar.gz 若是很慢,能夠下載到本地,在上傳到服務器 # 解壓 tar -zxvf go1.9.2.linux-amd64.tar.gz /usr/local/ # go的命令須要作軟鏈接到/usr/bin ln -s /usr/local/go/bin/* /usr/bin/ #刪除下載的go包 rm go1.9.2.linux-amd64.tar.gz -y
go環境設置c++
#安裝go語言的安裝環境 yum install mercurial bzr subversion -y #新建go目錄做爲項目目錄 mkdir -p $HOME/go #用cat的方法在尾部增長配置配置golang的 GOROOT GOPATH #(注意,這裏GOROOT 後面的路徑是你go解壓的路徑,若是不是按照個人方法解壓的,請注意看一下) 下面這段,整段複製粘貼過去 cat >>$HOME/.bash_profile<<EOF export GOROOT=/usr/local/go export GOPATH=\$HOME/go export PATH=\$PATH:\$GOROOT/bin EOF #讓配置生效 source $HOME/.bash_profile 3.檢查下go的env環境變量 go env 輸出: 有一段輸出就好了,好比這樣的 GOARCH="amd64" GOBIN="" GOEXE="" GOHOSTARCH="amd64" GOHOSTOS="linux" GOOS="linux" GOPATH="/root/go" GORACE="" GOROOT="/usr/local/go" GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64" GCCGO="gccgo" CC="gcc"
下載ngrokgit
cd /usr/local/ git clone https://github.com/inconshreveable/ngrok.git
環境變量github
export GOPATH=/usr/local/ngrok/ export NGROK_DOMAIN="xxx.com" #這裏寫你本身的域名,不要前綴,好比www
估計這裏你會有疑問,看到別人家都是 ngrok.xxx.com 相似這種形式的
這裏就是用到了三級域名解析,若是你想要以 xxx.ngrok.xxx.com 這種最終域名形式訪問你的服務,(這裏第一次搭建不推薦,你能夠二級成功之後再用三級的,可是得從環境變量這步往下從新操做一邊。)請看下面教程:
超簡單 圖解 三級域名解析golang
生成證書windows
cd /usr/local/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
拷貝證書覆蓋ngrok原來的證書centos
過程會讓你輸入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
生成服務端bash
cd /usr/local/ngrok/ GOOS=linux GOARCH=amd64 make release-server #這裏GOOS後面是你的系統,我是linux,GOARCH 後面是系統,64位是amd64,32位是386 而後就是等待下載了,沒有進度條,耐心等待。 這裏可能報各類錯,我當時就很崩潰。 生成的服務端在/usr/local/ngrok/bin 下的 ngrokd文件
錯誤:沒法交叉編譯 cannot install cross-compiled binaries
$ make release-server GOOS=linux GOARCH=386 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
生成客戶端
cd /usr/local/ngrok/ GOOS=windows GOARCH=amd64 make release-client #這裏GOOS後面是你的系統,我是要在window上啓動客戶端,GOARCH 後面是系統,64位是amd64,32位是386 而後就是等待下載了,沒有進度條,耐心等待。 生成的在/usr/local/ngrok/bin/windows_amd64 的ngrok.exe 都在bin下,服務端是ngrokd 客戶端是ngrok
啓動服務器端
這裏爲了方便我直接就用80端口了,請確認你的80端口沒有被佔用,關閉相應的服務。 後面要想用,建議使用nginx反向代理到ngrok。 cd /usr/local/ngrok/bin ngrokd -domain="xxx.com" -httpAddr=":80" -httpsAddr=":8081" -tunnelAddr=":4443" #-domain後面你上面寫的域名 -httpAddr http端口 -httpsAddr https 端口 #-tunnerlAddr 客戶端端口,鏈接端口
啓動客戶端(window)
現將ngrok.exe 下載到本身的電腦上,
而後同目錄下建立文件ngrok.conf;內容以下:
server_addr: "xxxx.com:4443" #你上面本身寫的域名 trust_host_root_certs: false #目錄下打開命令行 ngrok -config=./ngrok.conf -subdomain=blog 80 #這裏subdomain後面的是二級域名前綴,你能夠改, #注意要在域名解析裏添加二級域名解析
添加二級域名解析
以下就是OK了 顯示online就能夠!
最後經過blog.xxx.com 訪問你本地的服務器吧