开发微信公众号,调试比较麻烦,以前ittun和qq浏览器搞了个ngrok,奈何比较不稳定,接下来就自己搭一个ngrok服务器,基于centos系统,Ubuntu差不多 个别命令有区别
第一步:安装git和golang
yum install build-essential golang mercurial git
如果是Ubuntu系统命令:apt-get install build-essential golang mercurial git
第二步:下载ngrok源码
git clone https://github.com/tutumcloud/ngrok.git ngrok
第三步:cd ngrok 进入ngrok文件
一步一步运行以下命令
NGROK_DOMAIN="xxx.com" (xxx.com是你的网址)
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
openssl x509 -req -in server.csr -CA base.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crt
执行完替换证书 执行以下命令
cp base.pem assets/client/tls/ngrokroot.crt
第四步:编译
make release-server release-client
第五步:启动
./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="xxx.com" -httpAddr=":80" -httpsAddr=":443"
解释一下:httpAddr、httpsAddr 分别是 ngrok 用来转发 http、https 服务的端口,可以随意指定。ngrokd 还会开一个 4443 端口用来跟客户端通讯(可通过 -tunnelAddr=”:xxx” 指定)。由于微信限制不能出现端口号,因此这个使用了80、443端口。
当然借助nginx 不一定要用80端口
第六步:编译客户端
A:windows
GOOS=windows GOARCH=amd64 make release-client
B:mac
GOOS=darwin GOARCH=amd64 make release-client执行对应的命令会在bin目录下生成相对应的windows、mac目录,ngrok.exe就存放在对应目录下。将对应的ngrok.exe下载到本地。
第九步:在系统后台运行,不然客户端一关,系统也关了
在/etc/systemd/system/目录下创建服务ngrok.service,内容为
[Unit]
Description=ngrok
After=network.target[Service]
ExecStart=/usr/ngrok/bin/ngrokd -tlsKey=/usr/ngrok/server.key -tlsCrt=/usr/ngrok/server.crt -domain=xxx.com -httpAddr=:80 -httpsAddr=:443[Install]
WantedBy=multi-user.target最后一步:启动 systemctl start ngrok.service
以上就是服务器构建ngrok的过程
下面在本地 我是win7
ngrok.exe下载到本地,同级目录下再新建ngrok.cfg,内容如下
server_addr: xxx.com:4443
trust_host_root_certs: false
再新建立start.bat,内容如下
ngrok -config=ngrok.cfg -log=ngrok.log -subdomain ifdod 8080
ifdod是二级域名,访问 ifdod.xxx.com = localhost:8080
测试成功!
另外还有些命令记录一下:
systemctl status ngrok.service 查看启动状况
journalctl | grep -i ngrok 查看日志
systemctl daemon-reload 重载服务指令,就是修改service文件需要运行一下
本人已经搭建好一个了,需要的请留下个qq邮箱,看到就发给你们