准备工作:(1)阿里云ECS服务器(2)自己的域名
1,安装gcc
centos查看是否安装了gcc命令 rpm -qa|grep gcc*
没有就需要安装 yum install gcc
2,安装git
yum install git
3,安装go运行环境
1)下载安装包 地址:https://golang.org/dl/
2)解压该安装包
/usr/local目录下会多出go目录
3)设置环境变量 vim/etc/profile 添加下列内容
GO_HOME=/usr/local/go exportPATH=$PATH:$GO_HOME/bin |
4)让环境变量立即生效并检查是否安装成功
说明安装成功了
4,下载ngrok源码 github地址:https://github.com/inconshreveable/ngrok
下载完毕,当前目录下会有一个ngrok目录
5,生成证书
starcup.top是我的二级域名,以它为示例
进入ngrok目录下,执行下面命令
NGROK_DOMAIN="starcup.top" openssl genrsa -out base.key 2048 openssl req -new -x509 -nodes -key base.key-days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.pem openssl genrsa -out server.key 2048 openssl req -new -key server.key -subj"/CN=$NGROK_DOMAIN" -out server.csr opensslx509 -req -in server.csr -CA base.pem -CAkey base.key -CAcreateserial -days10000 -out server.crt |
6,替换原本的证书
cpbase.pem assets/client/tls/ngrokroot.crt |
7编译生成ngrok服务器
make release-server release-client |
这时bin目录下有ngrokd文件了
8,启动ngrok服务器 ,执行下面命令
./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="starcup.top" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":4443" |
domain 后面是生成证书的那个域名
-httpAddr http协议端口 默认为80
-httpsAddr https协议端口 默认为443
-tunnelAddr 通道端口 默认4443
出现上图说明成功启动
9,编译生成windows客户端
GOOS=windows GOARCH=amd64 makerelease-client
然后bin目录下会多了windows_amd64文件夹
进入windows_amd64目录,新建ngrok.cfg文件 命令 touchngrok.cfg
vim打开添加以下内容
server_addr: "starcup.top:4443" trust_host_root_certs:false |
注意4443是上面-tunnelAddr指定的端口,要一致才行
10,将阿里云服务器中的windows_amd64文件夹下载到本地磁盘里面 可以用WinSCP或ftp工具下载
11,启动客户端
在本地电脑打开cmd,进入windows_amd64目录下,执行下面命令
ngrok -config=ngrok.cfg -log=ngrok.log -subdomain=www 8080 |
结果如下:
12,每次启动ngrok服务都要输入很长的命令,下面将ngrok设置自定义service
以centos6.9示例
vim /etc/init.d/ngrok
#!/bin/bash #chkconfig: - 99 01 ## #description: this is a ngrok customscript! case $1 in start) cd /home/mysoft/ngrok/ ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt-domain="starcup.top" -httpAddr=":80" -httpsAddr=":443"-tunnelAddr=":4443" echo ngrok is running...
;; stop) echo 关闭窗口就行了 ;; *) echo Usage:`basename $0` start|stop|restart esac |
修改ngrok文件权限
chomd 755 /etc/init.d/ngrok
以后就可以使用service ngrok start开启ngrok服务了
13,问题:
如果你的ngrok.log日志里面显示不能访问你的域名对应的主机,则需要去阿里云控制台设置DNS 两个A记录泛解析*和@这样创建的域名才能访问你的本地配置的地址