阿里云centos搭建ngrok服务

      上篇文章《移动程序本地调试过程中常用的内网穿透服务》介绍了常用的几种ngrok服务,本篇文章主要将自建ngrok服务的过程记录下来,方便后续使用。

1.准备工作

阿里云centos7.5一台(独立IP地址)

已备案的域名一个(ICP未备案的域名微信无法授权验证)

二级域名解析到云服务器ip

将ngrok.kfpt.cn和*.ngrok.kfpt.cn二级域名解析到服务器ip

阿里云centos搭建ngrok服务_第1张图片

2.安装git、go运行环境

为了快速的将最新版本ngrok程序下载到服务端,可在服务器安装git工具

yum install -y mercurial git bzr subversion golang golang-pkg-windows-amd64 golang-pkg-windows-386

安装版本:git version 1.8.3.1

 

3.下载ngrok程序

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

下载到root账号的根目录即:/root/

4.生成自签名证书

进入/root/ngrok/目录下

cd /root/ngrok
NGROK_DOMAIN="ngrok.kfpt.cn"
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000

将新生成的证书,复制到assets/client/tls下并重新命名,新生成的证书文件地址采用复制方式,证书留着后续使用。

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

5.编译ngrok服务端程序

由于使用的是阿里云64位centos系统,

cd /root/ngrok
#指定环境变量位64位linux版本
GOOS=linux GOARCH=amd64 
#32位系统,GOARCH=386
make release-server

如云服务器在国内,需要考虑到网络慢的问题,我使用的是香港主机,因此很快的编译完成,编译过程需要下载依赖的相关文件。编译完成,在ngrok/bin/下会有ngrokd文件。

6.编译ngrok客户端程序

cd到ngrok目录
(1)若是客户端使用与服务器相同系统可直接使用 make release-client指令。
(2)若是不同系统,则需要通过go中的make.bash手工编译出跨编译工具。
在$GOROOT/src目录下找到make.bash文件,通过设置GOOS和GOARCH来完成生成跨编译工具:

#linux
make release-client
#windows
GOOS=windows GOARCH=amd64 make release-client

编译完成,在ngrok/bin/windows_amd64/下,有刚生成的ngrok.exe,通过WinSCP下载到Windows端。

7.运行ngrok服务端

在运行服务端之前,需要在修改hosts文件,将127.0.0.1指向test.ngrok.kfpt.cn 和ngrok.kfpt.cn

vi /etc/hosts

./bin/ngrokd -tlsKey=device.key -tlsCrt=device.crt -domain="ngrok.kfpt.cn" -httpAddr=":15001" -httpsAddr=":15002" -tunnelAddr=":15003"

启动成功。

如需要后台启动,则:

nohup ./bin/ngrokd -tlsKey=device.key -tlsCrt=device.crt -domain="ngrok.kfpt.cn" -httpAddr=":15001" -httpsAddr=":15002" -tunnelAddr=":15003"&

8.配置ngrok客户端

这里随便建立一个客户端web服务,端口为801,以iis为例,如:http://localhost:801/

阿里云centos搭建ngrok服务_第2张图片

在windows系统的ngrok.exe同级目录创建ngrok配置文件:ngrok.cfg

server_addr: "ngrok.kfpt.cn:15003"
trust_host_root_certs: false

编写bat文件或dos下允许命令:

ngrok.exe -config=ngrok.cfg -subdomain=test 801

阿里云centos搭建ngrok服务_第3张图片

访问地址:http://test.ngrok.kfpt.cn:15001 ,进入到iis发布的web测试页面,映射成功。

阿里云centos搭建ngrok服务_第4张图片

特别说明:

     ngrok搭建未采用http的80和https的443默认端口,是因为服务器已经安装了apche,在调试微信和支付宝开发过程中必须具备80域名端口的访问条件,因此可以将apche端口修改为其它端口,或采用nginx代理转发方式,实现共享80端口访问。

 

你可能感兴趣的:(Linux)