安装git
首先检查git
的版本,如果版本小于1.7.9.5会在之后的编译中遇到一个坑。
1
2
|
git --version
#git version 2.6.0
|
如果版本小于1.7.9.5,那么首先卸载git
,再通过源码安装:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#卸载git
yum remove 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-2.6.0源码
wget https://www.kernel.org/pub/software/scm/git/git-2.6.0.tar.gz
tar zxvf git-2.6.0.tar.gz
cd git-2.6.0
#编译安装
./configure --prefix=/usr/local/git
make && make install
echo "export PATH=\$PATH:/usr/local/git/bin" >> /etc/profile
source /etc/profile
|
安装go
1
2
3
4
5
6
7
8
9
|
#32位
wget http://www.golangtc.com/static/go/1.4.2/go1.4.2.linux-386.tar.gz
tar -C /usr/local/ -zxf ./go1.4.2.linux-386.tar.gz
#64位
wget http://www.golangtc.com/static/go/1.4.2/go1.4.2.linux-amd64.tar.gz
tar -C /usr/local/ -zxf ./go1.4.2.linux-amd64.tar.gz
echo "export GOROOT=/usr/local/go" >> /etc/profile
echo "export PATH=\$GOROOT/bin:\$PATH" >> /etc/profile
|
检查是否安装成功:
1
2
|
go version
#go version go1.4.2 linux/386
|
为go
设置编译环境
1
2
3
4
5
6
7
8
|
cd /usr/local/go/src
GOOS=linux GOARCH=386 ./make.bash #linux 32
GOOS=linux GOARCH=amd64 ./make.bash #linux 64
GOOS=linux GOARCH=arm ./make.bash #arm 一般是树莓派之类的平台
GOOS=linux GOARCH=mipsle ./make.bash #一般是路由器之类的平台
GOOS=darwin GOARCH=amd64 ./make.bash #osx 64
GOOS=windows GOARCH=386 ./make.bash #win 32
GOOS=windows GOARCH=amd64 ./make.bash #win 64
|
更多的编译参数请参考链接
编译ngrok
下载源码
1
2
3
|
cd ~
git clone https://github.com/inconshreveable/ngrok.git
cd ngrok
|
生成域名的自签名证书
1
2
3
4
5
6
7
|
NGROK_DOMAIN="your.domain.com" #你的域名
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
|
编译ngrok服务端
1
|
GOOS=linux GOARCH=386 make release-server #根据需要修改GOOS和GOARCH的值
|
编译ngrok客户端
首先我们可以对源码做一些自定义修改,这里是可选操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#修改默认服务地址
vim ./src/ngrok/client/model.go
#line 23
#-defaultServerAddr = "ngrokd.ngrok.com:443"
#+defaultServerAddr = "your.domain.com:4443"
#修改客户端logo
vim ./src/ngrok/client/views/term/view.go
#line 23
#-v.APrintf(termbox.ColorBlue|termbox.AttrBold, 0, 0, "ngrok")
#+v.APrintf(termbox.ColorBlue|termbox.AttrBold, 0, 0, "your logo")
#修改客户端提示信息
vim ./src/ngrok/client/client/cli.go
#line 14
#const usage2 string
|
编译客户端:
1
|
GOOS=windows GOARCH=386 make release-client #根据需要修改GOOS和GOARCH的值
|
安装ngrok
这里就比较随意,文件放哪里都可以,我的方案如下:
1
2
3
4
5
6
|
mkdir /usr/local/ngrok
mkdir /etc/ngrokd
cp bin/ngrokd /usr/local/ngrok/
cp device.key /etc/ngrok/
cp device.crt /etc/ngrok/
ln -s /usr/local/ngrok/ngrokd /usr/bin/
|
设置开机启动:
1
2
|
vim /etc/rc.local
#+ ngrokd -tlsKey=/etc/ngrok/device.key -tlsCrt=/etc/ngrok/device.crt -domain="your.domain.com" -httpAddr=":80" -httpsAddr=":443" &
|
ngrok客户端配置
创建一个配置文件ngrok.cfg
,内容为:
1
2
|
server_addr: "your.domain.com:4443"
trust_host_root_certs: false
|
启动客户端参数为:
1
2
3
|
./ngrok -config=ngrok.cfg -subdomain test 8080
#-subdomain参数是自定义子域名
#8080 是本地服务的端口
|
常见问题
如果运行ngrokd
时启动失败,一般是端口被占用,使用netstat -ntlp
查看80、443、4443端口是否被占用。
如果是无法链接,一般是端口没有开放:
1
2
3
4
5
|
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 4443 -j ACCEPT
service iptables save
/etc/init.d/iptables restart
|