因为2020 安装过一边 这次因为换了服务器 我要重新安装 但是按照以前的方式安装 出现了各种问题 tls证书错误 等乱七八糟的东西。这篇文章是我重新安装的步骤流程 其中的辛酸泪就不写了反正是哭晕过好几次
准备工作
1、一台服务器 (我的是 Centos 7.6 阿里云)
2、备案过的域名
第一步git gcc 等安装
# 安装git所需要的依赖包
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++
# 下载新版本git
cd /usr/local
wget https://www.kernel.org/pub/software/scm/git/git-2.16.2.tar.gz
# 解压
tar zxvf git-2.16.2.tar.gz
# 编译git
cd git-2.16.2
./configure --prefix=/usr/local/git
make
make install
安装GO
# 下载go
cd /usr/local
#这里是go版本下载地址 https://golang.google.cn/dl/
#我选择的是 go1.9.2.linux-amd64.tar.gz (具体按照你们的服务器的位数来 我的是64位)
#go版本最好是按照我写版本来 我之前安装过 比较高级的go语言 编译这些都通过了 但是链接的时候会出现tls证书错误。这个问题我不会解决 就当是个玄学好了
wget https://golang.google.cn/dl/go1.9.2.linux-amd64.tar.gz
# 解压
tar -zxvf go1.9.2.linux-amd64.tar.gz
# go的命令需要做软连接到/usr/bin
ln -s /usr/local/go/bin/* /usr/bin/
GO环境安装
#安装go语言的安装环境
yum install mercurial bzr subversion -y
#新建go目录作为项目目录
mkdir -p $HOME/go
#用cat的方法在尾部增加配置配置golang的 GOROOT GOPATH
#(注意,这里GOROOT 后面的路径是你go解压的路径,如果不是按照我的方法解压的,请注意看一下)
下面这段,整段复制粘贴过去
cat >>$HOME/.bash_profile<<EOF
export GOROOT=/usr/local/go
export GOPATH=\$HOME/go
export PATH=\$PATH:\$GOROOT/bin
EOF
#让配置生效
source $HOME/.bash_profile
3.检查下go的env环境变量
go env
输出:
有一段输出就行了,比如这样的
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/root/go"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
下载ngrok 方式一 (下载可能会慢 或者后面 make 编译的时候会出现各种问题 比如墙 desp tls证书错误之类的)
cd /usr/local/
git clone https://github.com/inconshreveable/ngrok.git
方式二 这个是我下载好ngrok 和相关的依赖 https://github.com/haungjianli/ngrok
cd /usr/local/
git clone https://github.com/haungjianli/ngrok
#下载后 tar -zxvf 压缩包 解压到当前就好
设置环境变量
export GOPATH=/usr/local/ngrok/
export NGROK_DOMAIN="xxx.com" #这里写你自己的域名,不要前缀,比如www
创建证书
cd /usr/local/ngrok
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
这个时候 ngrok下会产生 6个文件
替换原来的正式 执行下面的语句 一条一条来 每条都会询问overwiter 选y +回车就好
cp rootCA.pem assets/client/tls/ngrokroot.crt
cp device.crt assets/server/tls/snakeoil.crt
cp device.key assets/server/tls/snakeoil.key
生成服务端
cd /usr/local/ngrok/
GOOS=linux GOARCH=amd64 make release-server #这里GOOS后面是你的系统,我是linux,GOARCH 后面是系统,64位是amd64,32位是386
生成完的文件 在当前 bin下面的 ngrokd
如果ngrok下载 克隆是按照方式一情况 这一步会出现很多问题。具体的就不一一举例了。反正我哭了好几回
如果ngrok下载 克隆是按照方式二 按照我的步骤一步步来 应该是没问题的(如果有问题具体情况具体解决 )
生成客户端 自己按照客户端系统来选 我是windows 64位
GOOS=windows GOARCH=amd64 make release-client //windows 64位
GOOS=windows GOARCH=amd64 make release-client //windows 32位
GOOS=darwin GOARCH=386 make release-client //Mac OS 32位
GOOS=darwin GOARCH=amd64 make release-client //Mac OS 64位
GOOS=linux GOARCH=amd64 make release-client //Linux 64位
GOOS=linux GOARCH=arm make release-client //ARM 平台
生成完的文件 在当前 bin下面的 windows_adm64 里面
启动服务端
cd /usr/local/ngrok/bin
ngrokd -domain="xxx.com" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":4443"
#-domain 后面你上面写的域名,这里和你生成证书的那个域名是要一样的
#-httpAddr http端口
#-httpsAddr https 端口
#-tunnerlAddr 客户端端口,连接端口
效果图: 看到这图 服务端的就已经配置完了 先关闭ctrl+c
将bin 下的windows_adm64下的 ngrok.exe 下载到客户端上 并创建 ngrok.cfg 文件和start.bat文件
ngrok.cfg 里编写
server_addr: "XXXX.com:4443" #这里的域名填写和生成证书的时候填写的一样 端口号按照开启服务器时填写的 -tunnerlAdder 写的一样
trust_host_root_certs: false
start.bat里编写
ngrok -config=ngrok.cfg -subdomain xxx 80 #xxx 可以随便写一个 不写会随机分配
上面都准备了 就在服务器端开启服务 就是上面启动服务器那一步。
开启后客户端边双击start.bat
效果图
这样就成了
服务端 后台启用。
cd /usr/lib/systemd/system //进入目录
cat >>ngrok.service //创建文件夹,回车后直接按`ctrl+d`
vim ngrok.service //编辑文件
[Unit]
Description=Share local port(s) with ngrok
After=syslog.target network.target
[Service]
PrivateTmp=true
Type=simple
Restart=always
RestartSec=1min
StandardOutput=null
StandardError=null
ExecStart=/usr/local/ngrok/bin/ngrokd -domain=xxxx.com -httpAddr=:80 -httpsAddr=:443 -tunnelAddr=:4443 %i #xxxx.com 填写和证书生成的域名一样
ExecStop=/usr/bin/killall ngrok
[Install]
WantedBy=multi-user.target
服务命令
systemctl daemon-reload
systemctl start ngrok.service
最后域名解析图