四、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. To handling editor letter

    一般崔稿信写法: Dear Editor: Sorry for disturbing you. We’re not sure if it is the right time to contact yo ...

  2. Paper/ Overview | CNN(未完待续)

    目录 I. 基础知识 II. 早期尝试 1. Neocognitron, 1980 2. LeCun, 1989 A. 概况 B. Feature maps & Weight sharing ...

  3. QQ网页弹窗

    QQ网页弹窗 1.网址:http://shang.qq.com/v3/index.html 2.选推广工具,提示语随便写 3.建一个html 网页,并把代码拷进去. 4.双击网页,就可以打开了.(用E ...

  4. (转载)Linux之虚拟机 rehl7的ip

    RHEL7最小化安装之后(桥接模式),我们查看本机IP, ip addr 我们要修改配置文件 找到目录 找到文件(每个人的ifcfg-eno16777736都不同),用vi编辑器打开修改配置文件 保存 ...

  5. jenkins net编译部署 笔记 tips

    1 忘记密码 的话,C:\Users\quyongshuo.jenkins\config.xml 修改 true 为false 重新启动 可以重新设置用户信息. 2 修改端口 Java -jar je ...

  6. [UWP]使用Popup构建UWP Picker

    在上一篇博文<[UWP]不那么好用的ContentDialog>中我们讲到了ContentDialog在复杂场景下使用的几个令人头疼的弊端.那么,就让我们在这篇博文里开始愉快的造轮子之旅吧 ...

  7. springboot之定时任务

    定时线程 说到定时任务,通常会想到JDK自带的定时线程来执行,定时任务. 回顾一下定时线程池. public static ScheduledExecutorService newScheduledT ...

  8. Java线程池种类、区别和适用场景

    newCachedThreadPool: 底层:返回ThreadPoolExecutor实例,corePoolSize为0:maximumPoolSize为Integer.MAX_VALUE:keep ...

  9. 10-部署配置dashboard插件

    配置和安装 dashboard 官方文件目录:kubernetes/cluster/addons/dashboard 我们需要使用的yaml文件 $ ls *.yaml dashboard-contr ...

  10. 带你入门 Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...