在安卓手机上部署服务器并设置frp内网穿透
在上一篇博客《Android手机/平板安装使用Linux Deploy安装CentOS》里记录了在安卓手机里安装CentOS的过程,当linux系统已经安装完成后,我们就可以继续往下折腾了。有了centos系统,我的想法是在平板里搭建一个nginx服务器,将《hexo+git+nodejs+nginx+使用centos7的VPS搭建博客》这篇文章里的博客同时也部署到平板里,这样在本地(win10计算机)里写完文章后,使用hexo g
和hexo d
两个命令就可以在两个服务器上同步更新博客了。
准备工作
- 一个域名,并设置好解析;
- 安装好linux系统的安卓手机/平板;
安装nginx
在linux deploy软件里安装的linux系统安装nginx时方法有所不同,不过网上的教程也是一搜一大把,这里就不详细介绍了。主要记录一些我在操作过程中遇到的坑:
编译安装nginx时,需要首先安装gcc, net-tools, gcc-c++, cmake. 以上这些可以直接使用
yum install
命令来安装,安装完成后,在命令行终端使用make
命令不提示没有此命令,就可以编译安装pcre, zlib, openssl了,最后再安装nginx;安装完成后,需要进行配置。这里由于我想搭建博客,按照《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 g
和hexo 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 | [common] |
其中:
“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 | [common] |
其中:
- “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 | server { |
这样设置完毕后,就可以使用xxx.com
来访问了。