您的位置:首页 > 运维架构 > Linux

CentOS搭建ngrok服务器及跨平台客户端内网穿透的使用

2017-12-17 13:00 417 查看
原文地址:搭建ngrok服务器及跨平台客户端内网穿透的使用

注意事项:自己搭的时候并非全部照搬

1.go版本1.8.5 https://golang.org/dl/

2.git版本2.9.5 https://www.kernel.org/pub/software/scm/git/

3.export GOPATH=$HOME/goexport
GOROOT_BOOTSTRAP=/usr/local/go 两个环境变量不需要设置

4.后续用到的环境变量直接设置到/etc/profile里即可 别忘了source /etc/profile

5.第五步编译客户端时不需要执行这两句,网上说go1.4版本以后需要用1.4版本来编译自己,下来的包都是编译好的不是源码包,这部跳过,否则报错

作着在最后也说命了解决办法,我反正没用也没问题

cd
/usr/local/go/src


GOOS=linux GOARCH=amd64 .
/make
.
bash


有些时候需要开发微信或者支付等接口时需要一个公网地址,调试的时候只能上传到服务器检查错误,这样不断的在服务器上调试,效率是非常低的。当然,我们可以使用花生壳一类的内网穿透软件,但是免费版限制重重,不如自己搭建一个内网穿透的服务器,用起来的心应手,也不用担心隐私泄露等问题。

目前比较流行的就是ngrok,这个软件有官方的服务器,国内是无法直接使用的(需要翻出去),但是这个软件是开源的,那么自己搭建一个是再好不过的选择了。下面开始搭建步骤:

一、准备工作

二、解析域名

使用自己的域名,把域名解析到VPS的地址,解析方式如下:

三、VPS服务端安转go环境

因为ngrok是由go语言开发的,所以,要先安装go环境(不要使用yum安装,因为yum安装的go版本过低会导致ngrok编译失败),步骤如下:

官方网址:https://golang.org/dl/

目前最新的版本是1.6.2,对应系统,64位系统选择 go1.6.2.linux-amd64.tar.gz,32位请选择 go1.6.2.linux-386.tar.gz。

1.依次执行以下命令

2.设置环境变量

3.检查是否安装成功

4.这里有个坑,现在还没有遇到,等一会安装编译ngrok时如果出现问题,请查看文章的失败处理部分。

四、VPS安装git

ngrok的源文件在Github上维护,所以,安装最新版的git,请不要使用yum安装或自带的git,因为yum安装的git版本过低,导致无法同步ngrok的最新版本。执行下面步骤前一定要确保自己的git版本大于1.7.9.5,git版本过低的话,我曾经试过,下载ngrok时会莫名奇妙的卡住不动,也不报错。这一步当时的莫名其妙的错误让我费了不少周折,也查阅了不少资料。安装步骤如下:

1. 卸载自带的1.7.1版本git

2.安装一些 git 构建或执行时需要的其他依赖。

3.下载 git 最新版本的源代码

4.安装并修改环境变量

5.查看版本

五、VPS安装ngrok

1.下载ngrok,并修改参数

2.生成证书(重要)

3.在软件源代码目录下面会生成一些证书文件,我们需要把这些文件拷贝到指定位置

4.如果是在国内的服务器需要执行此步,香港或者国外的服务器不需要

5.编译服务端(同时也编译了一个linux下的客户端),注意这里的amd64,如果是32位的话,请修改成386

6.编译MAC 64位客户端

7.编译windows 64位客户端

六、服务端的运行及使用

1.进入服务端目录,服务端程序文件名是ngrokd

2.运行服务端程序,注意这里有个坑的可能,我是遇到了,如果待会客户端运行时连上服务端了但是域名不完整,请看文章的失败处理部分。

3.运行成功后会返回类似如下的结果

七、客户端的运行及使用

1.把刚刚从VPS服务器上生成的客户端文件下载到本机

mac的客户端位置:

windows客户端位置:

2.把里面的客户端文件下载到本地,并在同目录下新建一个配置文件,文件名ngrok.cfg,文件内容如下

3.客户端的运行

4.成功运行后返回类似如下

5.打开http://test.ngrok.leocode.net即可访问到本机8011端口的网站

八、失败处理

我在编译和使用的过程中出现过很多失败和错误,在这里简单说一说,免得走弯路。

1.下载编译和安装ngrok的时候一直卡在一个地方不动,这是git版本过低表现。

2.编译ngrok服务端和客户端时提示错误

3.遇到上面的错误,说明便宜的时候,说明还要使用1.4版本的内容,请执行下面的步骤

4.客户端可以连上,但是域名不完全,显示方式如下:

这种错误出现,请在服务端运行时的命令改一下,使用以下命令强制规定域名

九、如果VPS服务器已有80端口的网站在线上,那么服务端运行的时候,似乎就不能使用80端口了,至于还想使用80端口穿透到内网的地址的话,需要nginx做反向代理,这个我没有做测试,因为我的服务器没有网站在上面。可查阅其他资料。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: