Ubuntu安装与配置
四、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安装与配置的更多相关文章
- ubuntu安装和配置SVN【转】
ubuntu安装和配置SVN 转自:http://www.jb51.net/os/Ubuntu/56394.html 第一步:安装apache2 libapache2-svn subversion ...
- Ubuntu 安装和配置minicom
Ubuntu 安装和配置minicom 1 . 安装 Minicom 用新立得软件管理器下载minicom 2.配置Minicom shell下输入 minicom -s 打开配置界面 进入Seria ...
- 总结关于Ubuntu 安装 Docker 配置相关问题及解决方法
总结关于Ubuntu 安装 Docker 配置相关问题及解决方法 Tomcat 示例 软件镜像(xx安装程序)----运行镜像----产生一个容器(正在运行的软件,运行的xx): 步骤: 1.搜索镜像 ...
- [Hadoop入门] - 2 ubuntu安装与配置 hadoop安装与配置
ubuntu安装(这里我就不一一捉图了,只引用一个网址, 相信大家能力) ubuntu安装参考教程: http://jingyan.baidu.com/article/14bd256e0ca52eb ...
- Ubuntu 安装和配置redis数据库
Ubuntu 14.04下安装和配置redis数据库 小编现在在写一个分布式爬虫,要用到这个数据库,所以分享一下小编是如何安装和配置的,希望对大家有帮助. 工具/原料 Ubuntu 系统电脑一台 ...
- ubuntu 安装和配置 GitLab
一.概述 GitLab 是一个基于 Web 的开源 Git 软件仓库管理器,用 Ruby 编写,包括 wiki,问题管理,代码审查,监控以及持续集成和部署.它使开发人员能够创建,审查和部署他们的项目. ...
- Linux学习笔记之ubuntu安装与配置
1.打开虚拟机,点击新建虚拟机 2.安装向导 选择自定义安装 点击包含一个空白的硬盘 选择linux操作系统,版本是ubuntu 设置虚拟机的名称,可以自己写,还有保存的位置也可自选 根据自己电脑性能 ...
- Ubuntu 安装mod_python配置Apache2
在Ubuntu上搭建Python运行环境,mod_python是不可少的(据说mod_swgi也是可以的,没有亲测).使用命令安装mod_python. 安装: apt-get install lib ...
- [学习OpenCV攻略][001][Ubuntu安装及配置]
root登入配置 1.sudo passwd root 2.su - root 3.vim /etc/lightdm/lightdm.conf [SeatDefaults] user-session= ...
随机推荐
- android开发笔记(3)
在android环境开发过程中,我最陌生的是虚拟机的创建以及使用,下面是虚拟机的创建以及使用过程. 创建虚拟机: 点击创建虚拟机的按钮,create->填写虚拟机相关的信息,确认之后创建. 创建 ...
- 【转】nc 使用说明
netcat是网络工具中的瑞士军刀,它能通过TCP和UDP在网络中读写数据.通过与其他工具结合和重定向,你可以在脚本中以多种方式使用它.使用netcat命令所能完成的事情令人惊讶. netcat所做的 ...
- 14. The Realities of Telecommuting 远程办公的现状
14. The Realities of Telecommuting 远程办公的现状 (1) Telecommuting——substituting the computer for the trip ...
- 文件类File
文件类File继承结构: public class File extends Object implements Serializable, Comparable<File> 常用方法: ...
- python3调用zabbix api
前言 今天写了一个zabbix api,这里整理一下,过程中自己也学习了一些东西. 需求 我们需要查一个文件内容如下: cat /ops/flume_hosts node1 node2 需要把这个文件 ...
- 如何在html与delphi间交互代码
[转]如何在html与delphi间交互代码 (2015-11-19 22:16:24) 转载▼ 标签: it 分类: uniGUI uniGUI总群中台中cmj朋友为我们总结了如下内容,对于利用de ...
- docker知识点杂记
最近重新梳理了一下docker的一些基本知识,简单做了下总结.以后会逐步补充. 1.查看系统内核版本,需要3.10以上 $ uname -r 2.下载docker 说明:centos安装docker比 ...
- MySQL DDL--ghost执行模板和参数
常用GHOST模板 ##================================================## mysql_ip="127.0.0.1" mysql_ ...
- Eclipse 中 Debug 时鼠标悬停无法查看变量值
问题描述:Eclipse在Debug模式下,当鼠标移动到某个变量上面时不自动显示该变量对应的值. 解决方法:在Eclipse中点击 Window->Preferences->Java-&g ...
- 微信小程序 web-view 的 url 带参问题
在微信小程序开发过程中,会需要跳转到外部链接,微信提供了 <web-view>组件供我们使用. 为减少重复代码,一般会将这个功能单独抽取为一个页面供大家使用: <template&g ...