frp下载网址:Releases · fatedier/frp · GitHub
前提:准备好外网服务器和内网服务器
下载frp后解压缩,需要注意的是解压的frp文件夹中有两种类型的文件,frpc开头的是内网客户端的配置,frps开头的是外网服务器端的配置,在外网服务器端可以删除frpc开头的文件,内网客户端可以删除frps开头的文件。
一、外网服务器端配置
进入解压好的目录,打开frps.ini配置文件,添加内容:
[root@serIKoFZWV2me frp_0.51.2_linux_amd64]# cat frps.ini
[common]
#默认端口7000,客户端和服务端通信的端口,可以不用修改
bind_port = 7000
#http服务监听的端口,即frp服务端向外部暴露出去的端口
vhost_http_port = 80
#token令牌,与客户端要一致,随便自己设置
token = 8GpRJrMkM5yLYD*r%fP7hnA#ZtmNSBBGNUub4s$@79rDXyt2UHZ7ETRR^HxU2jTDJt!#9CD#7NF^B9VNseejFg#BKDsNb6uq5#TgzsgcxWfxL8KeQTPJ4z&fbGqxGG8@
#frp的web管理控制台的用户名和密码,7500是默认端口,可以通过服务端ip+7500端口登录
dashboard_port = 7500
#frp管理页面的账密,随意设置
dashboard_user = admin
dashboard_pwd = admin123
#日志
log_file = ./frps.log
log_max_days = 3
:wq
注:服务端的bind_port和客户端的server_port可以任意设置可用端口,但这两个值必须一致,vhost_http_port、dashboard_port可设置任意端口。
配置好外网服务器,后台启动:
[root@serIKoFZWV2me frp_0.51.2_linux_amd64]# ./frps -c ./frps.ini &
查看后台进程,命令 fg 进程id 为调后台进程到前台,命令 bg 进程id 为把jobs的进程放后台运行。
[root@serIKoFZWV2me frp_0.51.2_linux_amd64]# jobs
[1]+ Running ./frps -c ./frps.ini &
[root@serIKoFZWV2me frp_0.51.2_linux_amd64]# jobs 1
访问服务器地址可显示frp的管理控制台
接下来,是配置客户端的配置。
二、内网服务器配置
首先是下载frp压缩包,或者上传并解压frp压缩包,打开frpc.ini配置文件,添加配置:
[root@localhost frp_0.51.2_linux_amd64]# vi frpc.ini
[common]
#云服务器公网IP
server_addr = 154.12.16.168
#与服务端通信的端口,与frps.ini文件中的bind_port一致,默认不变
server_port = 7000
#token令牌,与服务端要一致,随便自己设置
token = 8GpRJrMkM5yLYD*r%fP7hnA#ZtmNSBBGNUub4s$@79rDXyt2UHZ7ETRR^HxU2jTDJt!#9CD#7NF^B9VNseejFg#BKDsNb6uq5#TgzsgcxWfxL8KeQTPJ4z&fbGqxGG8@
#日志
log_file = ./frpc.log
log_max_days = 3
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
[http-test]
type = http
local_ip = 127.0.0.1
local_port = 80
custom_domains = 154.12.16.168
:wq
至此配置完成客户端,启动:
[root@localhost frp_0.51.2_linux_amd64]# ./frpc -c frpc.ini &
最后浏览器地址栏输入外网服务器ip访问,如果访问失败可查看log日志或禁用防火墙,即可显示,
心得:
我部署的是discuz,经过frp完美实现内网穿透,在此项目中,我采用的技术是docker容器部署,在备份到另一台服务器时需要修改三个配置文件才能访问本地的Mysql数据库。
这三个配置文件分别是:
/var/www/html/config/config_global.php
/var/www/html/config/config_ucenter.php
/var/www/html/uc_server/data/config.inc.php
因为没有采用挂在数据卷的方法,只是把容器内的文件复制到环境外,修改后才复制进容器内部:
#从docker容器内复制文件到容器外
docker cp 9cc485b86b01:/var/www/html/config/config_global.php ./
docker cp 9cc485b86b01:/var/www/html/config/config_ucenter.php ./
docker cp 9cc485b86b01:/var/www/html/uc_server/data/config.inc.php ./
#从docker容器外复制文件进容器内
docker cp ./config_global.php 9cc485b86b01:/var/www/html/config/
docker cp ./config_ucenter.php 9cc485b86b01:/var/www/html/config/
docker cp ./config.inc.php 9cc485b86b01:/var/www/html/uc_server/data/