RJ博客

在腾讯云搭建自己的ngrok服务

本文目录

go1.6安装后编译windows & mac 支持需要 go1.4 解压go1.4到 /root目录即可(默认识别目录)

mac os 64位操作系统,所以我的是下面的命令

cd /usr/local/go/src 
GOOS=darwin GOARCH=amd64 ./make.bash cd /usr/local/ngrok/ GOOS=darwin GOARCH=amd64 make release-client

如何查看监听的端口是哪个程序

netstat -tnlp

查看监听端口被那个程序启动的,  ngrokd  php-fpm 的端口需要在防火墙开启, 例如我的是

tcp        0      0 0.0.0.0:2333                0.0.0.0:*                   LISTEN      14255/bin/ngrokd

tcp        0      0 127.0.0.1:9000            0.0.0.0:*                   LISTEN      22718/php-fpm

tcp        0      0 0.0.0.0:4443                0.0.0.0:*                   LISTEN      14255/bin/ngrokd

tcp        0      0 0.0.0.0:443                  0.0.0.0:*                   LISTEN      14255/bin/ngrokd

则需要在防火墙开启:  (443是https 没开)

http://blog.csdn.net/testcs_dn/article/details/45392963

-A INPUT -p tcp -m tcp --dport 9000 -j ACCEPT

-A INPUT -p tcp -m tcp --dport 4443 -j ACCEPT

-A INPUT -p tcp -m tcp --dport 2333 -j ACCEPT

在windows控制台执行开启连接:

ngrok -config=ngrok.cfg -subdomain upal 127.0.0.1:8080

(127.0.0.1 可改变成对于内网的其他网站, 详细用法可 ngrok --help 查看, 或直接查看官方文档)

https://ngrok.com/docs

===========下面是我在腾讯云centOS6.5上面的搭建过程============

1.go环境搭建

go环境安装可以通过源码安装或安装EPEL扩展源后使用yum安装,由于使用yum安装的go不能进行交叉编译,不能够编译生成Windows客户端,所以推荐使用通过源码安装。源码安装go的详细过程如下:

  • 1).下载源码,可以在 http://www.golangtc.com/download  上找到自己系统对应的源码。由于我的vps系统是centos的,所以下载的是:go1.4.2.linux-amd64.tar.gz。

  • 2).将其解压到/usr/local目录下:

tar -C /usr/local  -xzf   go1.4.2.linux-amd64.tar.gz

注:如果是64位的系统下载了32位的安装包,后面的构建会出现 /lib/ld-linux.so.2: bad ELF interpreter 类似这样的错误 解决方法:yum install glibc.i686。安装一个32bit的glibc就可以了。

  • 3). 在 root 环境下执行如下命令:

mkdir $HOME/go
echo 'export GOROOT=/usr/local/go'>> ~/.bashrc
echo 'export GOPATH=$HOME/go'>> ~/.bashrc
echo 'export PATH=$PATH:$GOROOT/bin'>> ~/.bashrc
source  $HOME/.bashrc
  • 4). 安装go get工具

yum install mercurial git bzr subversion

2. 获取源码

git版本需要在1.7.9.5以上,如果不符合条件需要将git版本升级。我这里的git版本是1.8.3.1。获取源码:

git clone https://github.com/inconshreveable/ngrok.git

3. 编译

1). 配置环境变量

export NGROK_DOMAIN="ngrok.nearby.wang"

ngrok.nearby.wang替换成你自己的域名。2). 生成自签名ssl证书

cd ngrok 
openssl genrsa -out rootCA.key 2048openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem openssl genrsa -out device.key 2048openssl 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 5000cp rootCA.pem assets/client/tls/ngrokroot.crt cp device.crt assets/server/tls/snakeoil.crt cp device.key assets/server/tls/snakeoil.key

设置变量:

GOOS=linux GOARCH=amd64  #如果是32位系统,这里 GOARCH=386

生成服务端与客户端

make release-server release-client

注:上述编译的过程会需要去github、google code下载其余依赖项目的源码,因此需要挂VPN。当然,如果VPS不能挂vpn可以在本地进行上面介绍的操作过程,然后将编译后的源码复制到vps上重新编译即可。 还有一种最简单的解决办法就是,修改源码,将需要连接google code的地址改为连接github上的地址:

找到 /root/ngrok/src/ngrok/log/logger.go ,看到里面有一个import中引用了google code,将其改为:"github.com/keepeye/log4go" 。

编译之后,就会在ngrok源码的bin目录下生成两个可执行文件:ngrokd、ngrok。其中ngrokd就是ngrok的服务端程序,ngrok就是ngrok的客户端程序。由于现在生成的客户端ngrok只能在linux下运行,因此如果想要生成windows下的客户端程序,需要继续进行交叉编译。

4. 交叉编译生成windows客户端

上述编译过程生成的服务端和客户端都是linux下的,不能在windows下用。如果想编译生成windows客户端,需要重新配置环境并编译。 交叉编译过程如下:

进入go目录,进行环境配置

cd  /usr/local/go/src/ GOOS=windows GOARCH=amd64 CGO_ENABLED=0 ./make.bash

进入ngrok目录重新编译

cd  /usr/local/src/ngrok/ GOOS=windows GOARCH=amd64 make release-server release-client

编译后,就会在bin目录下生成windows_amd64目录,其中就包含着windows下运行的服务器和客户端程序。

5. ngrokd服务启动与使用

1、启动ngrokd服务端

bin/ngrokd -domain="$NGROK_DOMAIN" -httpAddr=":8000"

注意,让程序一直在后台运行可以执行

nohup bin/ngrokd -domain="$NGROK_DOMAIN" -httpAddr=":8000" &

想要结束后台进程可以

ps -A   #找到PID  kill xxxid

2、启动ngrok客户端

客户端使用,拷贝刚刚生成的ngrok.exe文件到本地,创建ngrok.cfg配置文件,可以根据自己的实际情况进行配置

server_addr: "ngrok.nearby.wang:4443"  trust_host_root_certs: false

再在windows控制台执行

ngrok -config=ngrok.cfg -subdomain rr 127.0.0.1:80

rr是你自定义地址。

看到这样一个界面就说明成功了

image.png

如果是这种界面应该是启动服务端的时候环境变量有问题,客户端与服务端的域名配置不一样导致的。客户端ngrok.cfg中server addr后的值必须严格与-domain 以及证书中的NGROK _DOMAIN相同


References:

http://www.tuicool.com/articles/ZraURrq

http://www.sunnyos.com/article-show-48.html

http://www.tuicool.com/articles/vInMBfU


相关推荐

发表评论