概述:

ngrok其实这东西,我也不是很懂,所以也直接跟大家说,这就是个类似花生壳的东西.

简单来说,它就好像把我们内网自己使用的电脑和服务器用vpn连接起来,然后你的电脑就可以从互联网来访问了,有个词就叫内网穿透,反正意思都是一个样的。

目前对于底层和服务器相关的东西本人基本还是以不求甚懂的方式来进行。

这篇文章是参考:https://www.sunnyos.com/article-show-48.html

此作者开放了免费版本的内网穿透服务,可以自己指定域名,详情可看:http://www.ngrok.cc

下面讲讲怎么安装,本身我自己学的是应用层,所以这块其实不太清楚,所以只能根据自己被坑的经验来做分享

一、安装golang环境

  文档参考地址:http://www.runoob.com/go/go-environment.html

 如果直接通过apt-get install golang的话,则安装的一般是比较低的版本,而我们所需要的是高版本。(1.4以上,我安装的是1.7.3)

  1、下载编译后的源码包,已包含可执行文件 

wget http://www.golangtc.com/static/go/1.7.3/go1.7.3.linux-amd64.tar.gz

    --mac darwin-amd64

    --ubuntu linux-amd64

    --centos linux-386

  (这是下载列表的地址:http://www.golangtc.com/download)

  2、解压到/usr/local目录下,我看大家都解压到这个目录就跟风

tar -C /usr/local -xvf go1.7.3.linux-amd64.tar.gz

  3、引入环境变量,即让你可以直接在任何目录下执行go

# 手动执行,只在当次登录有效,我这边只针对当前登录用户
vim /root/.bashrc

# 往上面vim的文件末尾添加这段代码
export PATH=$PATH:/usr/local/go/bin

# 为了立马生效,必须马上执行下面的命令
source /root/.bashrc

  4、测试下,有内容就正常了

go version

二、安装git(这个没啥好说的,源码管理)

  

sudo apt-get install git

三、git clone ngrok源码,编译

  ngrok源码:https://github.com/inconshreveable/ngrok.git

  1、进入/usr/local目录

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

  2、引入临时的全局环境变量,此次登录有效

# 这个等会编译的时候要用
export GOPATH=/usr/local/ngrok/
# 这个是你自己的域名,可以是二级或三级域名
# 注意,这边ngrok.gabin.top和它的所有子域名都必须指向中转服务器,我最开始就是没有注意这点,导致各种没报错,但是就是不能用
export NGROK_DOMAIN="ngrok.gabin.top"

  3、替换域名证书,注意到了吗,NGROK_DOMAIN这个环境变量是我们刚刚设置的。

    --生成证书

cd /usr/local/ngrok
openssl genrsa -out rootCA.key
openssl req -x509 -new -nodes -key rootCA.key -subj  -out rootCA.pem
openssl genrsa -out server.key
openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr
openssl x509 -req -

     --替换证书

cp rootCA.pem assets/client/tls/ngrokroot.crt
cp server.crt assets/server/tls/snakeoil.crt
cp server.key assets/server/tls/snakeoil.key

  4、开始生成服务端执行文件

# 自己注意下,不同操作系统是不一样的参数,上面也有写到了
GOOS=linux GOARCH=amd64 make release-server

成功之后在/usr/local/ngrok/bin目录下会生成一个ngrokd的文件,这就是服务端的启动执行文件了

  5、生成客户端可执行文件

  --mac

cd /usr/local/ngrok
GOOS=darwin GOARCH=amd64 make release-client

  --window

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

成功之后在/usr/local/ngrok/bin目录下会生成对应的目录,一般是darwin_amd64和window_64,前一个是mac的,后一个是window的

  5、替换掉引用

vim /usr/local/ngrok/src/ngrok/log/logger.go
# 替换掉import中log的引用,记得删除旧的,别注释了,会报错哈哈
log "github.com/keepeye/log4go"

  6、调试

  --启动服务端,这边使用的是80端口。一般都需要用这个,原本想用反向代理,发现好像是不行。如果有发现可以的话,可以分享一下

   如果需要在后台执行的话,参考nohup命令

# 由于NGROK_DOMAIN是临时的环境变量,所以如果要重复使用的话,这个变量最好保存起来,否则下次登录就失效了。
/usr/local/ngrok/bin/ngrokd -domain="$NGROK_DOMAIN" -httpAddr=":80"

  --启动客户端

先设置好配置文件:同目录下创建一个ngrok.cfg

server_addr: "ngrok.gabin.top:4443"
trust_host_root_certs: false

 

# 通过配置文件启动,这边的端口代表的是自己本地调试程序启用的端口,一般是8080
./ngrok -config=./ngrok.cfg -subdomain=blog 

四、好了,可以用了。访问以下 blog.ngrok.gabin.top

注意点:

1、其实主要就是装好go环境

2、需要知晓基础的一些知识:环境变量、证书、make(虽然我也不是很懂,总之做多了会有点感觉,就感觉这么做是对的...)

3、如果没有测试环境可以用的话,可以购买特价的国际域名,一般一年不要十几二十块的,然后申请个像是华为企业云的服务器(本人就申请了一个1块钱15天的试用服务),就可以自己动手尝试了   

  

搭建ngrok服务器(ubuntu 14)-- 微信 80端口和IPC备案限制解决方案的更多相关文章

  1. Nginx服务器中配置非80端口的端口转发方法详解

    这篇文章主要介绍了Nginx服务器中配置非80端口的端口转发方法详解,文中使用到了Nginx中的proxy_pass配置项,需要的朋友可以参考下 nginx可以很方便的配置成反向代理服务器: 1 2 ...

  2. 阿里云服务器Centos7.4开放80端口的记录

    问题: 阿里云服务器安装的是centos7, 搭建网站安装lnmp1.5后发现访问不了, 不明所以, 在一论坛找到关于80端口未开放的原因. 需求: 开放80端口.于是有了下面第一,二,三部分关于开放 ...

  3. 轻松搭建Git服务器(Ubuntu)

    搭建Git服务器 在远程仓库节中,我们讲了远程仓库实际上和本地仓库没啥不同,纯粹为了7x24小时开机并交换大家的修改. GitHub就是一个免费托管开源代码的远程仓库.但是对于某些视源代码如生命的商业 ...

  4. apache和IIS共存,服务器对外统一使用80端口

    apache和IIS共用80端口为了PHP与ASP各自的执行效率,要在服务器上安装iis与Apache,但是无法同时使用80端口,否则其中必定有一个启动不了.让它们共存的并且访问网站不需要加端口号,解 ...

  5. 搭建svn服务器(ubuntu)

    ubuntu搭建svn服务器 环境:ubuntu 12.04.5 apt-get install subversion 找个目录作为svn的仓库 mkdir svn svnadmin create s ...

  6. Windows 的 80 端口被 System 进程占用解决方案

    通过 Windows 的资源监视器(win+R:resmon)可以看到 80 端口已经被占用,下图是已经解决好了,没能截图被占用的情况,下面给出解决方案. PS:贴出两个好用的 windows cmd ...

  7. Linux 环境 搭建Git 服务器,并且修改SSH端口使用

    1.环境配置说明 服务器 CentOS 7 + git(git version 1.8.3.1) 客户端 Windows10 + SourceTree 2.安装 Git 服务器端安装: sudo yu ...

  8. 阿里云服务器Ubuntu 14.04.2和centos7.5实现nfs挂载

    前提条件,确保两个ip可以正常通信 确认服务端是否安装nfs-utils和rpcbind[root@localhost /]# rpm -qa|grep "nfs"nfs4-acl ...

  9. tomcat+nginx反向代理(实现一个服务器,一个ip共用80端口)

    http://blog.csdn.net/sinat_33388558/article/details/54837051 http://www.cnblogs.com/zhouqinxiong/p/5 ...

随机推荐

  1. soket客户端程序(一)

    soket客户端主要完成以下步骤: 1.建立soket套接字(将套接字理解为一个通道) 2.建立连接 3.向服务器发送http请求 4.接收得到的数据 5.关闭连接 6.本地处理得到的数据 http: ...

  2. 多线程 Worker Thread 模式

    Worker是“工人”的意思,worker thread pattern中,工人线程(worker thread)会一次抓一件工作来处理,当没有工作可做时,工人线程会停下来等待心得工作过来. Work ...

  3. COJN 0484 800502电池的寿命

    800502电池的寿命 难度级别:B: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 小S新买了一个掌上游戏机,这个游戏机由两节5号电池供电. ...

  4. Delphi对ini文件的操作

    一.INI文件的结构:; 注释[小节名]关键字=值 INI文件允许有多个小节,每个小节又允许有多个关键字, “=”后面是该关键字的值. 值的类型有三种:字符串.整型数值和布尔值.其中字符串存贮在INI ...

  5. 查看XBox360的系统版本信息

    XBox360的系统版本信息在系统设置界面就能看到: Step1:按手柄中央的"西瓜键",进入系统设置界面 Step2:在系统设置界面选择"主机设定" Step ...

  6. java--I/O流总结

    java中的I/O流从所操作的数据单元上分为两类:字节流和字符流. 1.字节流 字节流主要有两个抽象基类:InputStream和OutputStream:其中InputStream是输入字节流,Ou ...

  7. cmake编译错误:“No CMAKE_C_COMPILER could be found”的原因

    发生此错误,原因在于,进行configure命令时,没有选择正确的编译器,比如电脑上安装的是VS2012,想编译位64位,选择了VS2012 X64,这样就会报错了,选择VS2012就对了,一样可以编 ...

  8. solr + tomcat 搭建

    1.准备jdk7和tomcat72.拷贝solr目录下example/webapps/solr.war,到tomcat下的webapps目录中.3.启动tomcat74.编辑tomcat7中的weba ...

  9. Micosoft.ReportViewer.WebForms v 11.0... 1.0.1

    his dll is required for the use of Microsoft's forms based ReportViewer control. This version is to ...

  10. JNI调用native方法出现 java.lang.UnsatisfiedLinkError: XXXclass.XXXmethod()异常的解决办法

    昨天拿到JNI的Android工程Demo,然后把demo整合到开发的主线工程上,发现调用JNI方法一直抛同一个异常 java.lang.UnsatisfiedLinkError: XXXclass. ...