CentOS编译安装Ngrok折腾笔记

前段时间算是解决了N2N的问题,编译十分顺利。如果有空我可以再写一篇小文章。

大头是Ngrok的Go环境和编译。出于家里堆了两个吃灰的Rpi有时候觉得真是资源浪费。吐槽一下Rpi曾经觉得这是神器,但是现在觉得这个东西真的是相当的“不彻底”。做IoT你会发现它应该作为中心,其它的应该由Arduino做分布……做家庭服务器个人觉得又浪费了它GPU,没有外网IP,家里就几个人也没人用,做OSMC又觉得它更鸡肋(几乎找不到中文节目,当网速慢的时候卡到生无可恋,而且很多功能是你不需要的。插件有些也不尽如人意还要重写。)。而且尤其是做便携PC,你会发现它的性能真的太渣……(话说我有点看中CubieTruck了大家有没有什么评价?)

好了,Rpi至少能耗低。这个服务器至少不怎么费电(赞美ARM)。好了,目前如果解决公网问题就行了。于是去DNS管理添加了一个CNAME。具体不多说。开始解决Ngrok。DNS开一个泛解析也行。

(本文大部分参照http://www.open-open.com/lib/view/open1454333199058.html和Github上的Ngrok)

1.准备环境和各种包安装

yum -y install mercurial bzr subversion

yum -y install zlib-devel openssl-devel perl hg cpio expat-devel gettext-devel curl curl-devel perl-ExtUtils-MakeMaker hg wget gcc gcc-c++
这些包最好都装上。不然make出各种奇怪的问题。

2.Go环境

Ngrok是Go便写的,所以你需要一个golang环境。我这里直接yum install 了。比较方便,不需要设置一堆环境变量什么的。而且也没什么错误。(狗狼)

yum install go或者yum install golang

[后记]不过话说回来之前安装不成功也可能是因为golang版本?编译后连接一直connection reset by peer然后找不到任何解决方案。当时Go是1.7的,后面弄了1.4.2环境重新做了一遍就好了

3.git的安装

git不建议yum。本人yum的然后悲剧了。make时卡住在某个地方,git –version查看版本后发现版本太低。在源安装的是1.7.0版本的,所以这里建议亲自编译。下面编译安装git2.7.0

wget https://www.kernel.org/pub/software/scm/git/git-2.7.0.tar.gz  (https://www.kernel.org/pub/software/scm/git/)

tar -zxvf git-2.7.0.tar.gz

cd git-2.7.0

make configure

./configure --prefix=/usr/local/git --with-iconv=/usr/local/lib

make && make install

echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc

source /etc/bashrc

wget下载,tar -zxvf解压,进入目录,设置一下,make,make install,并且把git目录加入环境变量。

git –version

看看装好了没

不出意外,于是这样我们弄好了git

4.ngrok

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

cd ngrok

接下来让openssl去搞证书

openssl genrsa -out rootCA.key 2048

openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=tunnel.taoerqu.com" -days 5000 -out rootCA.pem

openssl genrsa -out device.key 2048

openssl req -new -key device.key -subj "/CN=你的服务器域名比如n.restkhz.com" -out device.csr

openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000

生成完毕,然后覆盖原来的证书。

cp rootCA.pem assets/client/tls/ngrokroot.crt

cp device.crt assets/server/tls/snakeoil.crt

cp device.key assets/server/tls/snakeoil.key

GOOS=linux GOARCH=amd64  #如果是32位系统,这里 GOARCH=386,树莓派嘛arm,windows什么的自己换就行了

然后make

注意单纯make是debug版本,貌似不可以移植。要生成可以用的,你需要 make release-all

cat Makefile一下看看,make release-client编译客户端,make release-server编译服务端。release-all都编译

5.启动&调试

进入ngrok目录中的bin,看看是不是出了点干货。ngrokd

cd bin

./ngrokd -domain=”n.restkhz.com” -httpAddr=”:8000″ -httpsAddr=”:8443″ -tunnelAddr=”:4443″

设定域名然后,映射http到8000,https到8443,控制端口是4443,可以根据需要自己修改

客户端,新建配置文件

server_addr: “n.ngrok.com:4443”
trust_host_root_certs: false

./ngrok -config=[Config File] [local port]

./ngrok -config=~/config 80

 

 

目前还有一些尴尬的问题没有完全解决,等折腾完会具体说说解决。

[*]现在已经解决尴尬的问题了,我得到了一个解决方案就是如果make install出了问题那么不要留情直接全都rm掉,从头开始。

后记:各种奇葩问题

编译的时候遇到很多奇葩问题,具体错误已经不记得了,但是还是可以凭印象说一说

  1. make release-server 卡住,这个问题很可能git版本。请sudo yum remove git然后再自己get一个安装。
  2. make报错:go build runtime: linux/arm must be bootstrapped using make.bash,这个时候需要

  3. connection reset by peer 这个问题折磨了我很久。后面发现换了go1.4.2,清空所有ngrok并且重新git clone
  4. 其他问题若有提出,看看网上有没有说解决的。。。如果实在奇葩并且难以解决,那么尝试一下 rm -rf ./ngrok重来一次。

仅有1条评论 发表评论

  1. Aaron /

    233333

发表评论

*

Protected with IP Blacklist CloudIP Blacklist Cloud