赞
踩
git三部曲之gitlab安装链接请戳这里:CSDN
目录
在内网部署了gitlab之后,如何在家也能够访问内网服务器?
用一种内网穿透工具即可实现在家条件下对内网的访问。但是诸如 XXX、XXX等(因为审核严格为了能够通过只能做修改)内网穿透工具要么不太稳定,要么需要花钱。这篇文章详细记录了frp应用在gitlab上详细的过程,文章很详细也很长。
what‘s frp,why frp?
frp是一个快速反向代理,可帮助您将本地服务器暴露给Internet。 截至目前,它支持tcp&udp以及http和https协议,其中请求可以通过域名或者公网IP转发到内部服务器。
在Web应用上线前都会在内网进行测试,而有些功能是只有在公网上才能做测试的,比如为APP提供的接口等等。所以经常需要在正式上线之前将内网的服务器映射到公网上去。也就是赋予内网上服务器一个域名(公网地址),开放几个端口。
在公网上购置一台服务器,不需要配置很高,只要流量够用就行。然后在公网服务器上配置穿透工具的服务端,在能接通公网的内网服务器上配置客户端,这样就把内网中的一个端口映射至了公网。极大方便了Web应用调试一些远程API (比如微信公众号,企业号的开发)。
frp的同类产品是huashengke,后者现在必须付费,可以作为后者的平替。
本篇文章记录的是gitlab的外边访问,web应用具体化为gitlab。
(1)公网服务器1台(公网服务器可以用腾讯云或者阿里云上的服务器,预装的windows系统)
(2)内网服务器1台(本次安装是linux环境,ubuntu16.04)
(3)公网服务器公网IP地址个(购买云服务器一般都有公网ip)
(4)内网服务器部署gitlab。gitlab的部署方法详见文章头部链接(此处的web服务是gitlab,其他web服务也是亲测可用,也可以按照本文章来进行配置,和gitlab配置基本相同)
本次实现主要是写的是在windows环境下的部署服务端(server),在linux下环境下部署客户端(client)。
(本次安装环境是公网是一个安装了windows系统的服务器,gitlab搭建在了linux系统的内网服务器下)
获取文件的官网地址链接:https://github.com/fatedier/frp/releases
分别把下载的两个版本的frp包放到对应的服务器上。
- 在0.13.0 以前的版本和0.13.0以后的版本在配置上会有差别,本篇文章的配置命令适用于0.13.0以后的版本。
-
- frp支持linux平台和windows平台。根据需求选择相应的版本。
-
- 一般linux平台下载的版本为:frp_版本号_linux_amd64.tar.gz,
-
- windows平台下载的版本为:frp_版本号_windows_amd64.zip。
-
- __amd64__用于64位的服务器,_386__用于32位的服务器,如果你的服务器配置很低,可能还是会用到32位版本的。
1.选中、右键解压。
- 文件解压后,一般都含有
- frps(frp服务端运行文件)、
- frpc(frp客户端运行文件)、
- frps.ini(frp服务端配置文件)、
- frpc.ini(frp客户端配置文件)、
- frp_full.ini(frp全部配置文件解释说明和参考)
- 这5个文件
2.把文件中的frps.exe和frps.ini拷贝至服务器C盘的frp文件夹下(s就是server服务端的意思),在此处windows环境配置服务端,所以只留这两个文件即可。
3.我们修改frps.ini文件,根据你的实际情况修改下面的信息。在新版中客户端不需要配置太多的信息。只需要按照如下信息简单配置即可。
- [common]
-
- bind_port = 5443 #与客户端绑定的进行通信的端口
-
- dashboard_port = 6440 #和外部通信的端口、客户端web服务自定义的端口号
-
- vhost_http_port = 8080 #设置穿透 http 的端口默认为80,因为80端口已经被我们占用了,所以这里改为8080
-
- dashboard_user = admin #第一次登陆需要填写的用户名
-
- dashboard_pwd = admin123 #第一次登陆所需要的密码
-
- privilege_mode = true # 设置特权模式是否开启,开通后web,ssh等使用都可以直接在客户端设置
-
- token = XXXX #客户端的token值应该和这个相同
-
- #注意此处没有写本机的公网ip地址,如此配置和配置bind_addr = 0.0.0.0 的效果是一样的
-
- #要确保这上述端口是是可用的,即必须在防火墙上、服务器上放开,还要保证端口没有被其他的应用占用
在服务器中放开:以常用的阿里云服务器为例,安全组规则里面添加规则就行了,如果不打开,会无法运行。其他平台上的虚拟机可以自行查找如何放行。
防火墙的放开:防火墙放开在window + r 然后在输入框下输入cmd 进入到windows的命令行配置界面
然后输入
C:\Users\Administrator>netsh advfirewall firewall add rule name="Open Port 6440" dir=in action=allow protocol=TCP localport=6443
得到确定则说名防火墙有成功放开,因为我们的无论ssh、http、https都是tcp协议端口所以protocol=TCP,ocalport=6443表示想开放的端口号是6643
4.在命令行配置界面输入一下内容启用frp的服务:
c:\frps\frps.exe -c c:\frps\frps.ini
如果我们在服务器的任务管理器里面看到frps.exe进程就说明frp启用成功了。
5.我们在浏览器中输入客户端主机的公网ip地址: dashboard_port ,即公网的主机ip地址:6440可以看到如下界面也能说明frps安装成功了。
首次访问的时候会要求我们输入用户名密码,就是frps.ini配置文件中的dashboard_user和dashboard_pwd
1.解压压缩包,解压命令为 tar -zxvf 文件名
我的安装包的名字为 frp_0.32.1_linux_amd64.tar.gz 所以具体命令为 tar -zxvf frp_0.32.1_linux_amd64.tar.gz
2.解压后将解压得到的文件frpc
复制到/usr/bin
目录 (在linux下如果想在这个目录下面增删文件文档必须得知道root账号密码)
3 填写frpc.ini 配置文件。因为gitlab有ssh和http两种方式,所以在这个client端两种方式都配置启用了。
- [common]
- server_addr = 152.136.186.137 #(服务端口的ip地址)
- server_port = 5443 #(服务端和客户端通信的端口)与服务端bind_port一致
- token = xxxx #和服务端设置的token一致
- admin_port = 7001 #这个是frp进程控制端口,也必须要设置
- tcp_mux = true
- protocol = tcp
- #login_fail_exit = false
-
- [ssh]
- type = tcp
- local_ip = 172.16.50.20 #本地服务器的地址
- local_port = 80 #本地服务所用的端口,因为gitlab用的默认的80服务端口,所以这里填写80
- remote_port = 6444 #本地clent端的ssh服务和作为server端的外网服务器的通信端口
-
- [http]
- type = tcp
- local_ip = 127.0.0.1 #和写这个172.16.50.20内网地址效果是一样的
- local_port = 80
- remote_port = 6443 #本地clent端的http服务和作为server端的外网服务器的通信端口
以上所用到的各个端口都要保证不能被占用。
4 把这个两个clent端文件粘贴到它应该在的位置,这样才能起作用:
root@ubuntu:/usr# cp frp_0.32.1_linux_amd64/frpc* /usr/bin/
root@ubuntu:/usr# cp frp_0.32.1_linux_amd64/frpc.ini /etc/
把这两个文件分别放到这两个目录下面
如果执行权限不够就用如下命令更改执行权限,如果执行权限够,则下面命令不用执行
chmod 777 /usr/bin/frpc
chmod 777 /etc/frpc.ini
5 启动服务:
frpc -c /etc/frpc.ini
如果启用结果如上图所示,则说明ssh 和http两个服务都已经成功启用。
此时是前台运行的,可以通过&符号让其后台运行。这样在控制台关闭时不至于让进程中断。
可以使用命令
frpc -c /etc/frpc.ini &
看到看到nohub.out字样,就代表真成功了,可以按ctrl+c 退出,或者直接退出控制台。
可以通过ps aux | grep frpc 或者 ps -aux|grep frp| grep -v grep 来查看当前frpc的进程号,会看到此时进程在后台运行。
如果想停止该服务,可以通过kill进程号 来终止进程
6 此时即可以在外网条件下,用公网的
主机ip地址:6443 # http
主机ip地址:6444 # ssh
或者来访问局域网内部部署的gitlab。
此后用gitlab在外网进行clone等操作的时候要用外网地址进行clone操作,不能用内网地址进行clone操作了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。