心静致远

The road of learning of a man with nothing and everything

在安卓手机上部署服务器并设置frp内网穿透

在安卓手机上部署服务器并设置frp内网穿透

在上一篇博客《Android手机/平板安装使用Linux Deploy安装CentOS》里记录了在安卓手机里安装CentOS的过程,当linux系统已经安装完成后,我们就可以继续往下折腾了。有了centos系统,我的想法是在平板里搭建一个nginx服务器,将《hexo+git+nodejs+nginx+使用centos7的VPS搭建博客》这篇文章里的博客同时也部署到平板里,这样在本地(win10计算机)里写完文章后,使用hexo ghexo d两个命令就可以在两个服务器上同步更新博客了。

准备工作

  1. 一个域名,并设置好解析;
  2. 安装好linux系统的安卓手机/平板;

安装nginx

在linux deploy软件里安装的linux系统安装nginx时方法有所不同,不过网上的教程也是一搜一大把,这里就不详细介绍了。主要记录一些我在操作过程中遇到的坑:

  1. 编译安装nginx时,需要首先安装gcc, net-tools, gcc-c++, cmake. 以上这些可以直接使用yum install命令来安装,安装完成后,在命令行终端使用make命令不提示没有此命令,就可以编译安装pcre, zlib, openssl了,最后再安装nginx;

  2. 安装完成后,需要进行配置。这里由于我想搭建博客,按照《hexo+git+nodejs+nginx+使用centos7的VPS搭建博客》这篇文章里步骤,在编辑好hexo.conf配置文件后,需要将hexo.conf这个配置文件加入到nginx的配置文件里,这样启动nginx时才会加载hexo.conf中的配置。例如:我的nginx是安装在/usr/local/nginx这个文件夹里,hexo.conf文件是放在/usr/local/nginx/conf.d这个文件夹里。那么在/usr/local/nginx/conf/nginx.conf这个文件的最后(倒数第二行)需要加入这样一句:include /usr/local/nginx/conf.d/hexo.conf

部署博客

在前面《hexo+git+nodejs+nginx+使用centos7的VPS搭建博客》这篇文章里,我曾经详细介绍了在centos7的vps上如何搭建搭建博客。这次在安卓平板上基本上也是按照同样的流程把上面那篇文章里在VPS上的操作再做一遍就可以了。需要注意的是在安卓系统里安装的linux系统在安装nginx的方法有所不同,需要编译安装,教程在网上一搜一大把,就不单独记录了。

博客部署完成后,在本机(win10电脑)的hexo文件夹下的_config.yml文件最后deploy那里,添加一行:s2: git@192.168.46.109:hexo.git,master其中的IP地址为linux deploy软件里centos系统开启时上面显示的IP地址。

然后在本机(win10电脑)里使用hexo ghexo d命令,将博客文件推送到平板电脑的nginx服务器里。使用平板电脑里的浏览器,输入地址:127.0.0.1,正常情况下就可以看到博客了。

部署frp

在完成了上面的工作后,有一个问题就是平板里的博客只能在平板电脑里使用127.0.0.1浏览,或者使用与平板电脑处于同一个wifi网络下的其他设备,使用192.168.46.109(也就是平板里的服务器的ip地址)来查看。如果想外面的网络也能看到的话,需要设置内网穿透。

在网络上搜索浏览了一些解决方案后,最终把目光瞄准了frp(原因只有一个:那就是穷)。于是开始准备部署frp内网穿透。

frp内网穿透使用时需要有一台具有公网ip的机器作为服务端,那么在我这里当然是使用VPS作为服务端,平板里的centos作为客户端。我们通过搜索可以在Github网站上看到,目前frp已经更新到了0.32.0版本。

服务端部署

首先SSH登陆到VPS中,使用 wget https://github.com/fatedier/frp/releases/download/v0.32.0/frp_0.32.0_linux_amd64.tar.gz命令将frp程序文件下载到VPS中,然后使用tar -xzvf frp_0.32.0_linux_amd64.tar.gz解压,使用mv frp_0.15.1_linux_amd64 frp命令将文件夹改名为frp,使用cd frp命令进入该文件夹中,使用vim frps.ini命令修改配置文件。服务器端配置文件具体配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
[common]
bind_port = 7000
dashboard_port = 7500
token = 1100slfsdflkdf
dashboard_user = admin
dashboard_pwd = admin
vhost_http_port = 10080
log_file = ./frps.log
log_level = warn

[web1100800824]
type = http
custom_domains = xxx.com

其中:

  • “bind_port”表示用于客户端和服务端连接的端口,这个端口号我们之后在配置客户端的时候要用到。

  • “dashboard_port”是服务端仪表板的端口,若使用7500端口,在配置完成服务启动后可以通过浏览器访问 x.x.x.x:7500 (其中x.x.x.x为VPS的IP)查看frp服务运行信息。

  • “token”是用于客户端和服务端连接的口令,请自行设置并记录,稍后会用到。

  • “dashboard_user”和“dashboard_pwd”表示打开仪表板页面登录的用户名和密码,自行设置即可。

  • “vhost_http_port”和“vhost_https_port”用于反向代理HTTP主机时使用。

  • “log_file”是用来设置frps运行日志的文件目录的。

  • “log_level”用来设置写入日志中事件的级别,有trace, debug, info, warn, error几种。

文件内容写好后,保存并退出vim, 如果frp文件夹保存在/usr/local/frp文件夹中。先将配置文件中用到的端口打开,然后可以使用nohup /usr/local/frp/frps -c /usr/local/frp/frps.ini &命令来后台启动frps。

此时,可以使用VPS的ip地址:xxx.xxx.xxx.xxx:7500来查看frps仪表板页面,用户名和密码按设置的输入即可。

部署客户端

由于客户端也是centos系统,下载文件的方法类似,下载解压后进入frp文件夹,使用vim frpc.ini命令来编辑客户端配置文件。具体配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[common]
server_addr = 45.63.455.364
server_port = 7000
token = 1100slfsdflkdf
log_file = /usr/local/frp/frpc.log
log_level = warn
tcp_mux = true

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 15251

[web1100800824]
type = http
local_port = 8000
custom_domains = xxx.com

其中:

  • “server_addr”填写服务器端的ip地址,我这里就是VPS的ip地址
  • “server_port”填写服务器端设置的bind_port那个端口。
  • “token”填写跟服务器端一样的连接口令。
  • “log_file”是用来设置frps运行日志的文件目录的。
  • “log_level”用来设置写入日志中事件的级别,有trace, debug, info, warn, error几种。
  • [name] 建立每个穿透服务,都需要命名一个此服务的名称,不能和其他已建立的相同。
  • “type”设置穿透协议类型。可选:tcp,udp,http,https,stcp,xtcp。你要穿透什么应用要搞清楚,此应用是用什么协议的。
  • “local_ip” 设置本地监听IP,可以是本地的局域网IP,也可以是本机的127.0.0.1 IP。
  • “local_port”设置本地监听端口,用于监听本地设备需要穿透的端口,比如我要穿透到本机的SSH端口,而SSH端口为22,则这样理解。
  • “remote_port”设置远程监听端口, 用于frps服务端的,分配建立穿透到内网对应应用的公网端口。需要frps服务端已开放此端口给frpc客户端允许对接使用。例如我可以连接到此(frps服务端IP:端口),则可以穿透到我的内网对应应用服务。
  • “custom_domains”设置域名,穿透协议为”http”或“https”的,必须要设置此域名。

同样设置完毕保存后,在平板电脑的linux系统里使用nohup ./frpc -c ./frpc.ini &来后台开启frpc。

frp穿透试用

服务器端和客户点端完成上述设置后,使用putty客户端进行连接试验。

我的平板电脑的局域网ip是192.168.46.109,平时是使用该地址来进行SSH连接的。frp反向代理设置完毕后,可以使用45.63.455.364:15251来进行SSH连接,说明frp反向代理SSH已经成功。

上面说过,博客在平板里部署完毕后,可以使用127.0.0.1进行浏览,但是外网无法访问。frp设置完毕后,可以使用xxx.com:10080来进行访问了,说明frp反向代理http服务也成功了。

上面的http服务反向代理虽然成功了,但是每次访问的时候都要输入端口,很麻烦,经过搜索后,在网上找到了一种曲线救国的方法:

我的VPS中部署博客时使用的是nginx,在nginx的配置文件nginx.conf中加入这样一段:

1
2
3
4
5
6
7
8
server {
listen 80;
server_name xxx.com;

location / {
proxy_pass http://xxx.com:10080;
}
}

这样设置完毕后,就可以使用xxx.com来访问了。