部署准备
1.vps主机一台(我用的是搬瓦工vps,一年100多点,很实惠)
2. 顶级域名一个 并泛解析到vps的独立ip地址
3.树莓派一个
go语言安装 树莓派和vps安装go的方式有所不同,树莓派下需要编译
对于64位Linux:
$ wget https://storage.googleapis.com/golang/go1.4.1.linux-amd64.tar.gz
对于32位Linux:
$ wget https://storage.googleapis.com/golang/go1.4.1.linux-386.tar.gz
在/usr/local下安装程序
$ sudo tar -xzf go1.4.1.linux-xxx.tar.gz -C /usr/local
在/etc/profile中添加系统范围的PATH环境变量。
$ sudo vi /etc/profile
export PATH=$PATH:/usr/local/go/bin
检查Go语言的版本
$ go version
树莓派安装go参考 http://www.jianshu.com/p/4c79aec8b5e7
ngrok安装与配置
在vps上下载ngrok源码 xxxx.com换成自己的域名
git clone https://github.com/inconshreveable/ngrok.git ~/ngrok
export GOPATH=~/ngrok/
export NGROK_DOMAIN="xxxx.com"
cd ~/ngrok
生成证书,Ngrok会使用此证书加密通讯
openssl genrsa -out base.key 2048
openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.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 base.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crt
将证书文件复制到指定位置
cp rootCA.pem assets/client/tls/ngrokroot.crt -i
cp server.crt assets/server/tls/snakeoil.crt -i
cp server.key assets/server/tls/snakeoil.key -i
编译服务器端与客户端
服务器端为linux-x86-64
export GOOS=linux
export GOARCH=386
make release-server
客户端为arm
export GOOS=linux
export GOARCH=arm
make release-client
~/ngrok/bin目录下会产生两个文件如图
linux_386是服务器用的文件, linux _arm是树莓派上用的文件
vps上部署ngrok服务
cp ~/ngrok/bin/linux_386/ngrokd /usr/bin/
单独开个线程
yum install -y screen
screen -S ngrokd
sudo ngrokd -domain="xxxx.com" -httpAddr=":80" -httpsAddr=":443"
如果80 443被的程式占用的话,修改端口号即可,或者kill掉占用进程
树莓派上部署ngrok客户端
在树莓派上新建个文件夹sudo mkdir ~/ngrok
cd ~/ngrok
sudo nano ngrok.cfg
里面加入 server_addr: xxxxxx.com:4443
trust_host_root_certs: false
然后ctrl+o ent 保存 ctrl+X 离开
把在vps上编译的liunx_arm里面的ngrok文件弄到树莓派~/ngrok里面。
sudo ./ngrok -subdomain test -proto=http -config=ngrok.cfg 80