概述:

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. Redis学习笔记四:独立功能之发布与订阅

    客户端可以通过执行 subscribe 命令订阅一个或多个频道,每当有其他客户端向被订阅的频道发送消息时,频道所有的订阅者都会收到这条消息. 客户端还可以通过执行 psubscribe 命令订阅一个或 ...

  2. google关于ssh key的解释(转)转的google的wiki的

    SSH keys (简体中文)     SSH 密钥对可以让您方便的登录到 SSH 服务器,而无需输入密码.由于您无需发送您的密码到网络中,SSH 密钥对被认为是更加安全的方式.再加上使用密码短语 ( ...

  3. imx6 关闭 otg host

    参考文档: http://www.cnblogs.com/zengjfgit/p/4711336.html make menuconfig 去掉Support for DR host port on ...

  4. Java每日一则-002

    Java中包的层级关系 java中的包在逻辑上是没有套嵌的,也就是说: java.lang 和 java.lang.awt 是两个平行的包,地位相等,互不相关.只不过一个名字叫java.lang另一个 ...

  5. Run Loop简介 分类: ios技术 ios相关 2015-03-11 22:21 73人阅读 评论(0) 收藏

    做了一年多的IOS开发,对IOS和Objective-C深层次的了解还十分有限,大多还停留在会用API的级别,这是件挺可悲的事情.想学好一门语言还是需要深层次的了解它,这样才能在使用的时候得心应手,出 ...

  6. (转载)java基础:关于java流与文件操作

    原文摘自: http://www.blogjava.net/haizhige/archive/2008/08/03/219668.html 1.描述:流是字节数据或字符数据序列. Java采用输入流对 ...

  7. shell脚本实例-shell 分析系统瓶颈脚本

    #!/usr/bin/bash PS3="Your choice is: [10 for quit]" #检查是那个系统 os_check() { if [ -e /etc/red ...

  8. python语言程序设计2

    1, 代码高亮色彩体系 2, 缩进,一行代码开始前的空白区域,表达程序的格式框架 单层缩进,多层缩进 特点 概念,缩进是语法的一部分,缩进不正确的话可能会导致程序运行错误 用处(意义),是表达代码间包 ...

  9. SpringMVC 学习笔记(拦截器的配置))

    在设置SpringMVC的拦截器时,需要在SpringMVC中配置 拦截器对象,拦截器的的对象要 实现 HandlerInterceptor 接口 拦截器类的设置: public class inte ...

  10. 使用HTTP协议访问网路

    使用HTTP协议访问网路 一.使用HttpURLConnection //new一个URL对象 URL url = new URL("http://www.qq.com");//千 ...