Ngrok官网
Ngrok带来的好处
  • 无需另外部署演示程序
  • 移动设备快速测试
  • 轻松建立webhook
  • 在局域网内发布服务到公网
  • 等等(自行挖掘吧)
Ngrok部署

服务端部署

  • 安装Go环境
wget https://storage.googleapis.com/golang/go1.4.1.linux-amd64.tar.gz  
tar -C /usr/local -xzf go1.4.1.linux-amd64.tar.gz  
mkdir $HOME/go  
echo 'export GOROOT=/usr/local/go' >> ~/.bashrc  
echo 'export GOPATH=$HOME/go' >> ~/.bashrc  
echo 'export PATH=$PATH:$GOROOT/bin:$GOPATH/bin' >> ~/.bashrc  
source $HOME/.bashrc  
  • 安装编译环境依赖
yum install -y mercurial git bzr subversion  
  • 下载ngrok源码
cd /usr/local/src  
git clone https://github.com/inconshreveable/ngrok.git  
export GOPATH=/usr/local/src/ngrok/  
export NGROK_DOMAIN="这里填写自己的域名"  
  • 配置证书
cd 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 device.key 2048  
openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -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  
  • 编译ngrok服务端
GOOS=linux GOARCH=amd64 make release-server  
  • 测试服务端运行
nohup /usr/local/src/ngrok/bin/ngrokd --domain="你之前填写的域名" --httpAddr=":8000" >/dev/null 2>&1 &  
netstat -an|grep 8000  

*此处的httpAddr”:8000″代表绑定本机8000端口,之后发布的应用就可以直接通过 域名:8000 进行访问

客户端部署

  • windows客户端编译
cd /usr/local/go/src  
GOOS=windows GOARCH=amd64 ./make.bash  
cd /usr/local/src/ngrok/  
GOOS=windows GOARCH=amd64 make release-client  
  • MacOS客户端编译
cd /usr/local/go/src  
GOOS=darwin GOARCH=amd64 ./make.bash  
cd /usr/local/src/ngrok/  
GOOS=darwin GOARCH=amd64 make release-client  
  • linux客户端编译
cd /usr/local/go/src  
GOOS=linux GOARCH=amd64 ./make.bash  
cd /usr/local/src/ngrok/  
GOOS=linux GOARCH=amd64 make release-client  
  • 客户端配置文件ngrok.cfg

serveraddr: “你之前填写的域名:4443”
trust
hostrootcerts: false

  • 客户端运行测试(需要设置子域名到Ngrok服务器IP)
ngrok -config=ngrok.cfg -subdomain=test 80  

*上面这条命令的意思就是将本机的 80端口 发布到 “test.你设置的域名” 上,由于之前服务端配置的httpAddr=”:8000″,所以可以通过访问 http://test.你设置的域名:8000 访问到本机的80端口服务