四、ubuntu下生成ngrok服务器主程序

4.1、步骤与先决条件

如果你只是临时穿透或调试用,到第三步基本就可以了,但如果想作为稳定的商业服务,用别人的服务器还是受制于人,这里我们准备搭建自己的ngrok服务器。大致的步骤如下:

ngrok服务器可以是多种平台,如windows、Linux(CentOS、Debian、Ubuntu等)、Mac OS等。

编译源代码生成应用强烈建议大家使用linux环境,windows肯定可以成功,但非常麻烦,我在windows操作系统上兜了一个大圈圈。

先决条件:

a)、您有一台公网上的服务器,如阿里云的ECS

b)、您有一个域名,最好ICP备案成功,不然80端口没有办法使用,不过像微信开发是不使用80端口的,可以用nginx代理转换。

4.2、安装ubuntu操作系统

在linux环境下编译ngrok的源代码比windows下 方便很多,这里我们选择使用ubuntu,获得ubuntu的方法有如下几种:

1)、全新安装ubuntu系统

2)、申请VPS服务器, 阿里云、腾讯云、华为云、百度云、新浪云等,仅编译一下这种方法不错

3)、在虚拟机中安装ubuntu系统

综合考虑我选择了在虚拟机中安装ubuntu操作系统

4.2.1、安装VMware虚拟机

VMware Workstation是一款功能强大的虚拟机软件,在不影响本机操作系统的情况下,用户可以在虚拟机中同时运行不同版本的操作系统,用于开发、测试以及部署工作。

VMware Workstation 12 pro下载:VMware-workstation-full-12.1.0-3272444.exe

序列号:5A02H-AU243-TZJ49-GTC7K-3C61N(商业应用请购买正式版权,这里仅为学习使用)

1)、双击VMware Workstation 12安装文件,或者右键管理员身份打开,提示是否允许更改,点击是;

2)、打开VMware安装向导,点击下一步;

 

3)、VMware Workstation 12激活步骤:

  方法一、首次开启直接输入上文密钥,即可激活;
  方法二、首次开启选择试用,进入试用后按一下步骤激活:

  a、打开虚拟机主界面,点击“帮助”—“输入许可证密钥”;

  

  b、在密钥输入框输入永久许可证密钥5A02H-AU243-TZJ49-GTC7K-3C61N,确定;更多

4.2.2、安装ubuntu到虚拟机

1)、下载ubuntu操作系统镜像

下载地址:https://www.ubuntu.com/download/desktop

这里我下载的是ubuntu-16.04.3-desktop-amd64.iso

2)、在VMware中安装ubuntu

打开VMware点击“创建新的虚拟机”

向导选择自定义

然后下一步再下一步,直到这里,稍后再安装系统

后面设置处理器和内存的,电脑配置好的可以试试,否则采用默认的,博主这里是采用默认的,然后下一,直到这里,选择将虚拟机存储为单个磁盘:

个人建议至少20G硬盘空间,内存建议给1.5G,当然也要看电脑本身的配置,1G的内存跑起来比较卡。

其它的步骤比较简单,更多细节可以参考这里,《VMware Ubuntu安装详细过程》

4.2.3、配置ubuntu系统

当ubuntu系统安装成功后,在虚拟机中可以启动ubuntu系统,启动后的系统如下:

ubuntu系统的使用还是有许多内容的,这里需要设置的内容如下:

a)、设置上网

就是在ubuntu中可以访问外网,可以使用多种形式

b)、设置语言

可以选择使用中文版的ubuntu语言环境

c)、设置屏幕分辨率

如果不设置默认的屏幕比较小

d)、设置以root超级管理员的身份登录

许多操作要求管理身份

e)、安装VMware Tools工具

只有在VMware虚拟机中安装好了VMware Tools,才能实现主机与虚拟机之间的文件共享,同时可支持自由拖拽的功能,鼠标也可在虚拟机与主机之间自由移动(不用再按ctrl+alt),且虚拟机屏幕也可实现全屏化。
VMware Tools是VMware虚拟机中自带的一种增强工具,相当于VirtualBox中的增强功能(Sun VirtualBox Guest Additions),是VMware提供的增强虚拟显卡和硬盘性能、以及同步虚拟机与主机时钟的驱动程序。

注意如果这里是灰色的需要您将linux.iso镜像加载到虚拟光驱中,一般在VM的安装目录下有,如果没有您需要自行下载。

说明:ubuntu的使用不是本文的重点,相关操作请大家自行查找。

4.3、生成ngrok服务器与客户端应用程序

4.3.1. 导出源代码

ngrok的源代码托管在github上,可以先在ubuntu下安装git再将ngrok的源代码克隆到本地。

其实也可以直接下载到本地后解压,这里使用命令行完成。

启动ubuntu,开打命令行(终端),如下所示:

以root身份执行如下命令:

mkdir ngrok #创建名称为ngrok的目录

apt-get update #更新包管理器

apt-get install git  #安装git

git clone https://github.com/inconshreveable/ngrok.git ngrok2 #将ngrok源代码克隆回本地

成功执行后如下所示:

导出成功后的源代码:

PS. 直接在服务器上下载的话实在太慢,可以先在本地下载好,然后用ftp放到服务器上去直接用,如果安装了VMware tools直接拖进去就可以了。

4.3.2. 安装Go语言开发环境

直接在命令模式下执行如下指令:

apt-get install golang #安装go语言

执行结果如下:

4.3.3. 更改ngrok域名

在自己的域名管理中添加解析A记录,如下所示:

将*.ngrok与ngrok都指向您的主机IP。

默认的域名是ngrok自己的,要替换成您自己的域名

export GOPATH=/usr/local/ngrok/  #设置环境变量,Go语言的安装位置
export NGROK_DOMAIN="ngrok.yourdomain.com" #设置环境变量,ngrok域名

PS. ngrok名称可以任意,推荐名称为ngrok或者tunnel

4.3.4. 为域名生成证书

openssl genrsa -out rootCA.key
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days -out rootCA.pem
openssl genrsa -out server.key
openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr
openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days

生成后的结果如下:

证书如下:

4.3.5. 拷贝证书到指定位置

cp rootCA.pem assets/client/tls/ngrokroot.crt  #复制rootCA.pem到assets/client/tls/并更名为ngrokroot.crt
cp server.crt assets/server/tls/snakeoil.crt #复制server.crt到assets/server/tls/并更名为snakeoil.crt
cp server.key assets/server/tls/snakeoil.key #复制server.key到assets/server/tls/并更名为snakeoil.key

运行结果:

4.3.6. 编译

由于go语言的特性,在编译时直接生成机器码,所以在运行过程中并不需要go的环境(非托管应用)。在ngrok目录下,运行一下命令分别生成对应的客户端与服务端。

#win服务端
GOOS=windows GOARCH= make release-server
#win客户端
GOOS=windows GOARCH= make release-client
#linux服务端
GOOS=linux GOARCH= make release-server
#linux客户端
GOOS=linux GOARCH= make release-client

生成完成后,在工作目录的bin文件夹下,产生对应的文件。以编译windows平台为例,会产生“ngrok.exe”与“ngrokd.exe”这两个文件,前者客户端,后者需要运行在公网服务器上。

因为项目中引用了一些外部资源,生成会耗费一些时间,对网络也有一定的要求,太慢会中短,命令执行下如:

生成结果:

这里我还生成了两个运行在windows服务器与客户端的应用:

ngrok.exe是客户端,ngrokd.exe是服务端,下面是比较连续的操作结果。

Ubuntu安装与配置的更多相关文章

  1. ubuntu安装和配置SVN【转】

    ubuntu安装和配置SVN 转自:http://www.jb51.net/os/Ubuntu/56394.html 第一步:安装apache2  libapache2-svn subversion ...

  2. Ubuntu 安装和配置minicom

    Ubuntu 安装和配置minicom 1 . 安装 Minicom 用新立得软件管理器下载minicom 2.配置Minicom shell下输入 minicom -s 打开配置界面 进入Seria ...

  3. 总结关于Ubuntu 安装 Docker 配置相关问题及解决方法

    总结关于Ubuntu 安装 Docker 配置相关问题及解决方法 Tomcat 示例 软件镜像(xx安装程序)----运行镜像----产生一个容器(正在运行的软件,运行的xx): 步骤: 1.搜索镜像 ...

  4. [Hadoop入门] - 2 ubuntu安装与配置 hadoop安装与配置

    ubuntu安装(这里我就不一一捉图了,只引用一个网址, 相信大家能力) ubuntu安装参考教程:  http://jingyan.baidu.com/article/14bd256e0ca52eb ...

  5. Ubuntu 安装和配置redis数据库

    Ubuntu 14.04下安装和配置redis数据库 小编现在在写一个分布式爬虫,要用到这个数据库,所以分享一下小编是如何安装和配置的,希望对大家有帮助. 工具/原料   Ubuntu 系统电脑一台 ...

  6. ubuntu 安装和配置 GitLab

    一.概述 GitLab 是一个基于 Web 的开源 Git 软件仓库管理器,用 Ruby 编写,包括 wiki,问题管理,代码审查,监控以及持续集成和部署.它使开发人员能够创建,审查和部署他们的项目. ...

  7. Linux学习笔记之ubuntu安装与配置

    1.打开虚拟机,点击新建虚拟机 2.安装向导 选择自定义安装 点击包含一个空白的硬盘 选择linux操作系统,版本是ubuntu 设置虚拟机的名称,可以自己写,还有保存的位置也可自选 根据自己电脑性能 ...

  8. Ubuntu 安装mod_python配置Apache2

    在Ubuntu上搭建Python运行环境,mod_python是不可少的(据说mod_swgi也是可以的,没有亲测).使用命令安装mod_python. 安装: apt-get install lib ...

  9. [学习OpenCV攻略][001][Ubuntu安装及配置]

    root登入配置 1.sudo passwd root 2.su - root 3.vim /etc/lightdm/lightdm.conf [SeatDefaults] user-session= ...

随机推荐

  1. Java:ConcurrentHashMap

    ConcurrentHashMap的目的 多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap.虽然已经有一个线程安全的Ha ...

  2. JQuery续

    一.表单属性选择器 :enabled :disabled :checked :selected <body> <form> <input type="check ...

  3. oracle数据库创建分区表

    参考资料:http://blog.chinaunix.net/uid-21943216-id-4062400.html 一.建按月自增分区表:1.1建表SQL> create table mon ...

  4. openresty 安装

    1.安装环境.版本说明: 操作系统: Centos 6.5 X86_64 openresty 版本: openresty-1.13.6.1.tar.gz 2.安装 openresty(nginx) 需 ...

  5. kaldi脚本注释二

    steps/decode.sh #!/bin/bash # Copyright 2012 Johns Hopkins University (Author: Daniel Povey) # Apach ...

  6. [转]kaldi上的深度神经网络

    转:http://blog.csdn.net/wbgxx333/article/details/41019453 深度神经网络已经是语音识别领域最热的话题了.从2010年开始,许多关于深度神经网络的文 ...

  7. word文档的python解析

    主要两块,第一个是文件类型的转换,第二个是用docx包去对word文档中的table进行parse 1. 文件格式装换 因为很多各种各样的原因,至今还有一些word文档是doc的格式存的,对于这种,如 ...

  8. 利用Burp Suite攻击Web应用

    i春秋作家:Passerby2 web应用测试综述: Web应用漏洞给企业信息系统造成了很大的风险.许多web应用程序漏洞是由于web应用程序缺乏对输入的过滤.简而言之Web应用程序利用来自用户的某种 ...

  9. Java 实现删除文件工具类

    工具代码 package com.wangbo; import java.io.File; /** * 删除目录或文件工具类 * @author wangbo * @date 2017-04-11 1 ...

  10. Data - References

    01 - 数据分析与数据挖掘的知识列表 图解 知识列表 |关注方面|初级数据分析师|高级数据分析师|数据挖掘工程师| |--------|--------|--------|--------| | 数 ...