最新完美教程 使用centos 7 linux 自己搭建 ngrok 实现内网穿透

最新完美教程 使用centos 7 自己搭建 ngrok 实现内网穿透

其实挺麻烦的,我查了好多资料才搞定的。如果不想折腾,就简单使用ngrok 实现内网穿透,可以移步到我这个教程利用 ngrok 免费内网穿透部署 微信开发 调试环境

一、环境安装

安装git
如果出现 yum 的程序找不到,或者很慢
请移步这个教程yum 找不到程序, yum更换国内阿里源

# 安装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 (版本列表 https://www.kernel.org/pub/software/scm/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  

#删除刚才下载的git包
cd /usr/local
rm git-2.16.2.tar.gz -y

安装go

# 下载go 
cd /usr/local
www.golangtc.com/static/go   (这里是列表,注意自己的系统是多少位的,linux-amd64是64位的。linux-386是32位的)
wget https://www.golangtc.com/static/go/1.9.2/go1.9.2.linux-amd64.tar.gz  
如果很慢,可以下载到本地,在上传到服务器

# 解压  
tar -zxvf go1.9.2.linux-amd64.tar.gz /usr/local/  

# go的命令需要做软连接到/usr/bin  
ln -s /usr/local/go/bin/* /usr/bin/ 

#删除下载的go包
rm go1.9.2.linux-amd64.tar.gz -y

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配置

下载ngrok

cd /usr/local/  
git clone https://github.com/inconshreveable/ngrok.git

环境变量

export GOPATH=/usr/local/ngrok/  
export NGROK_DOMAIN="xxx.com"   #这里写你自己的域名,不要前缀,比如www

估计这里你会有疑问,看到别人家都是 ngrok.xxx.com 类似这种形式的
这里就是用到了三级域名解析,如果你想要以 xxx.ngrok.xxx.com 这种最终域名形式访问你的服务,(这里第一次搭建不推荐,你可以二级成功以后再用三级的,但是得从环境变量这步往下重新操作一边。)请看下面教程:
超简单 图解 三级域名解析

生成证书

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 server.key 2048  
openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr  
openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 5000

拷贝证书覆盖ngrok原来的证书

过程会让你输入y 回车
cp rootCA.pem assets/client/tls/ngrokroot.crt 
cp server.crt assets/server/tls/snakeoil.crt 
cp server.key assets/server/tls/snakeoil.key

生成服务端

cd /usr/local/ngrok/  
GOOS=linux GOARCH=amd64 make release-server  #这里GOOS后面是你的系统,我是linux,GOARCH 后面是系统,64位是amd64,32位是386
然后就是等待下载了,没有进度条,耐心等待。
这里可能报各种错,我当时就很崩溃。
生成的服务端在/usr/local/ngrok/bin   下的  ngrokd文件

错误:无法交叉编译 cannot install cross-compiled binaries

$ make release-server GOOS=linux GOARCH=386  
bin/go-bindata -nomemcopy -pkg=assets -tags=release \  
        -debug=false \  
        -o=src/ngrok/client/assets/assets_release.go \  
        assets/client/...  
bin/go-bindata -nomemcopy -pkg=assets -tags=release \  
        -debug=false \  
        -o=src/ngrok/server/assets/assets_release.go \  
        assets/server/...  
go get -tags 'release' -d -v ngrok/...  
go install -tags 'release' ngrok/main/ngrokd  
go install: cannot install cross-compiled binaries when GOBIN is set  
make: *** [server] Error 1

解决方法

cd /usr/local/ngrok
mkdir bin  
cp $GOBIN/go-bindata bin/  
unset GOBIN

生成客户端

cd /usr/local/ngrok/  
GOOS=windows GOARCH=amd64 make release-client  #这里GOOS后面是你的系统,我是要在window上启动客户端,GOARCH 后面是系统,64位是amd64,32位是386
然后就是等待下载了,没有进度条,耐心等待。
生成的在/usr/local/ngrok/bin/windows_amd64  的ngrok.exe  
都在bin下,服务端是ngrokd   客户端是ngrok

启动服务器端

这里为了方便我直接就用80端口了,请确认你的80端口没有被占用,关闭相应的服务。
后面要想用,建议使用nginx反向代理到ngrok。

cd /usr/local/ngrok/bin
ngrokd -domain="xxx.com" -httpAddr=":80" -httpsAddr=":8081" -tunnelAddr=":4443"

#-domain后面你上面写的域名  -httpAddr http端口  -httpsAddr https 端口 
#-tunnerlAddr 客户端端口,连接端口

启动客户端(window)
现将ngrok.exe 下载到自己的电脑上,
然后同目录下创建文件ngrok.conf;内容如下:

server_addr: "xxxx.com:4443"   #你上面自己写的域名
trust_host_root_certs: false  

#目录下打开命令行
ngrok -config=./ngrok.conf -subdomain=blog 80 
#这里subdomain后面的是二级域名前缀,你可以改,
#注意要在域名解析里添加二级域名解析

添加二级域名解析

如下就是OK了 显示online就可以!

最后通过blog.xxx.com 访问你本地的服务器吧

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


linux下开机自启: 在/etc/init.d目录下新建文件elasticsearch 并敲入shell脚本: 注意, 前两行必须填写,且要注释掉。 第一行为shell前行代码,目的告诉系统使用shell。 第二行分别代表运行级别、启动优先权、关闭优先权,且后面添加开机服务会用到。 shell脚本
1、因为在centos7中/etc/rc.d/rc.local的权限被降低了,所以需要赋予其可执行权 chmod +x /etc/rc.d/rc.local 2、赋予脚本可执行权限假设/usr/local/script/autostart.sh是你的脚本路径,给予执行权限 chmod +x /usr
最简单的查看方法可以使用ls -ll、ls-lh命令进行查看,当使用ls -ll,会显示成字节大小,而ls- lh会以KB、MB等为单位进行显示,这样比较直观一些。 通过命令du -h –max-depth=1 *,可以查看当前目录下各文件、文件夹的大小,这个比较实用。 查询当前目录总大小可以使用d
ASP.NET Core应用程序发布linux在shell中运行是正常的。可一但shell关闭网站也就关闭了,所以要配置守护进程, 用的是Supervisor,本文主要记录配置的过程和过程遇到的问题 安装Supervisor&#160;1 yum install python-setuptools
设置时区(CentOS 7) 先执行命令timedatectl status|grep &#39;Time zone&#39;查看当前时区,如果不是时区(Asia/Shanghai),则需要先设置为中国时区,否则时区不同会存在时差。 #已经是Asia/Shanghai,则无需设置 [root@xia
vim&#160;/etc/sysconfig/network-scripts/ifcfg-eth0 BOOTPROTO=&quot;static&quot; ONBOOT=yes IPADDR=192.168.8.106 NETMASK=255.255.252.0 GATEWAY=192.168.
一、安装gcc依赖 由于 redis 是用 C 语言开发,安装之前必先确认是否安装 gcc 环境(gcc -v),如果没有安装,执行以下命令进行安装 [root@localhost local]# yum install -y gcc 二、下载并解压安装包 [root@localhost local
第一步 On CentOS/RHEL 6.*: $ sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el6/x86_64/nux-dextop-release-0-2.el6.nux.noarch.rpm On CentOS/RHEL 7: $
/// &lt;summary&gt; /// 取小写文件名后缀 /// &lt;/summary&gt; /// &lt;param name=&quot;name&quot;&gt;文件名&lt;/param&gt; /// &lt;returns&gt;返回小写后缀,不带“.”&lt;/ret
which nohup .bash_profile中并source加载 如果没有就安装吧 yum provides */nohup nohup npm run start &amp; nohup ./kibana &amp;
1.1 MySQL安装 1.1.1 下载wget命令 yum -y install wget 1.1.2 在线下载mysql安装包 wget https://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm 1.1.3 安装My
重启 reboot shutdown -r now init 6 关闭 init 0 shutdown -h now shutdown -h 20:25 #8点25关机查看内存 free CPU利用率 top 日期 date 设置时间 date 033017002015 #月日时间年 日历 cal
1、firewalld的基本使用 启动: systemctl start firewalld 关闭: systemctl stop firewalld 查看状态: systemctl status firewalld 开机禁用 : systemctl disable firewalld 开机启用 :
1 下载并安装MySQL官方的&#160;Yum Repository wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 使用上面的命令就直接下载了安装用的Yum Repository,大概
CentOS6.x CentOS6中转用Upstrat代替以前的init.d/rcX.d的线性启动方式。 一、相关命令 通过initctl help可以查看相关命令 [root@localhost ~]# initctl help Job commands: start Start job. sto
1、使用命令:df -lk 找到已满磁盘 2、使用命令:du --max-depth=1 -h 查找大文件,删除
ifconfig:查看网卡信息 网卡配置文件位置: /etc/sysconfig/network-scripts/文件夹 nmtui:配置网卡 netstat -tlunp:查看端口信息 端口信息存储位置: /etc/services文件 route:查看路由信息 wget:下载网路文件,例如 wg
ps -ef:查看所有进程,&#160;ps -ef |grap firewalld 查看与firewalld相关的进程 which :查看进程:which firewalld kill 进程id:杀掉进程 kill 640,强制杀:kill -9 640 man:查看帮助,例如 man ps 查看
useradd:添加用户 useradd abc,默认添加一个abc组 vipw:查看系统中用户 groupadd:添加组groupadd ccna vigr:查看系统中的组 gpasswd:将用户abc添加到ccna组 gpasswd -a abc ccna groups abc:查看用户abc属