我用到的设备和配置
树莓派系统的安装与配置
    系统的选择
    系统烧录
    系统配置
        关闭桌面图形界面
        启动SSH服务
        换源
        ZMODE传输文件
        搭建LNMP环境
VPS配置
FRP内网穿透搭建与配置
      服务器端配置
      客户端配置
安装wordpress
硬盘的挂载

一直想做一个能网页在线播放高质量电影的网站,但是问题重重,没有足够的钱购买价格高昂的大存储vps是主要原因,在线播放又会涉及版权问题,所以想到下面的方案来解决这些问题

  • 在家搭建服务器可以随意使用大容量机械硬盘
  • 家中没有公网ip,使用国内内网穿透服务又不划算,不如自己搭建FRP内网穿透服务器
  • 在线播放可以直接在wordpress上做到如果怕版权问题,可以用FRP的认证机制,访问网页需要密码
  • 在线播放也可以将资源与网页分离,再建立nextcloud服务器用来存储和在线播放,因为需要的登录页不怕版权问题

我用到的设备和配置(不一定要一样)

  • 树莓派3(ARM,支持arm64)
  • 网线
  • 路由器为树莓派分配一个静态ip最好开启dmz主机
  • 5V至少2.0~2.5A适配器和microusb线
  • 32G闪迪Class10U1高速卡
  • 一台临时用一下的显示器和HDMI线
  • 临时用一下的独立usb键鼠
  • 3TNTFSHDD硬盘(有源硬盘座)
  • 有公网ip的VPS一台,带宽要大,系统我使用Ubuntu18.04
  • Ubuntu-Mate 16.04镜像(点此前往)
  • FRP开源内网穿透项目(点此前往)
  • Wordpress平台(点此前往)

树莓派系统的安装与配置

系统的选择

这里我使用的是官网的Ubuntu-mate16.04系统,(点此前往),但是值得注意的是,树莓派3是一个意义重大的版本,它的处理器博通2837是支持64位的,也就是说,是可以运行完整arm版linux系统的,以前只能使用armh(f)的系统,所以如果你完全尝试在树莓派3上运行Ubuntu18.04和centos等,可以参考https://wiki.ubuntu.com/ARM/RaspberryPi,方法有很多,很开眼界,还有https://github.com/chainsx/ubuntu64-rpi和http://shumeipai.nxez.com/2018/01/16/raspberry-pi-3-64-bit-ubuntu-evaluation.html这种极力想让rpi3运行arm64系统的项目,总之能goole到很多,为了方便和稳定,我还是选择了比较熟悉的Ubuntu-mate,下载其网页的raspberry镜像,下载后解压,镜像应该是.img后缀的,强迫症可以对照网页的sha-1和md5值对镜像进行完整性校验.

    • -

      系统烧录

      接下来插入sd卡,尽量选择高速卡,容量16G及以上即可,如果之前有多个分区那么删除所有分区,最终保留一个fat32的即可,烧录系统需要用到一个简单的工具叫Win32DiskImager,百度就能搜到,打开软件选择镜像文件,选择sd卡的盘符就可以执行Write的操作了,这里我出现了Lock Error: An error occurred when attempting to lock the volume. Error 5: Access is denied.的报错,如图
      error
      原因是diskgenius和win32diskimager同时对一个硬盘操作会冲突,这里需要关掉diskgenius再烧录系统.

    • -

      系统配置

      等待烧录完成,关闭软件推出sd卡插入树莓派,将树莓派接上一台显示器,接入键鼠,最后通电,开始系统配置
      注意时区选择上海,要和稍后要说到的FRP服务器时区和时间同步
      ctrl+alt+T弹出终端输入如下:

      raspi-config

      可以看到如下界面
      rpiconfig

      关闭桌面图形界面

      方向键选择2 BootOptions回车可以看到
      a
      1回车
      s
      1回车,这样开机就以命令启动省去了桌面的资源占用

      启动SSH服务

      设置后回到主第一个图的界面选择5 Advanced Options
      d
      选择2 SSH
      f
      选择Yes,这样就可以开机自启ssh服务了.
      至此显示器,键鼠已经不再需要,直接通过Xshell或者Putty等软件SSH连接树莓派.电脑和树莓派在一个局域网,连接的ip写局域网ip即可.

      换源

      为树莓派换源,方便更新,此处注意,我发现即使换源也会出现个别软件卡死或者速度极慢的情况,只能等.这里选择中科大源
      http://mirrors.ustc.edu.cn/help/ubuntu-ports.html 可以直接复制下面的,我建议官方的和中科大的都保留

      vi /etc/apt/sources.list

      如果vi中乱码出问题查阅


      自带官方源

      deb http://ports.ubuntu.com/ xenial main restricted universe multiverse
      #deb-src http://ports.ubuntu.com/ xenial main restricted universe multiverse
      
      deb http://ports.ubuntu.com/ xenial-updates main restricted universe multiverse
      #deb-src http://ports.ubuntu.com/ xenial-updates main restricted universe multiverse
      
      deb http://ports.ubuntu.com/ xenial-security main restricted universe multiverse
      #deb-src http://ports.ubuntu.com/ xenial-security main restricted universe multiverse
      
      deb http://ports.ubuntu.com/ xenial-backports main restricted universe multiverse
      #deb-src http://ports.ubuntu.com/ xenial-backports main restricted universe multiverse 

      中科大源

      deb http://mirrors.ustc.edu.cn/ubuntu-ports xenial main restricted universe multiverse
      # deb-src http://mirrors.ustc.edu.cn/ubuntu-ports xenial main restricted universe multiverse
      
      deb http://mirrors.ustc.edu.cn/ubuntu-ports xenial-updates main restricted universe multiverse
      # deb-src http://mirrors.ustc.edu.cn/ubuntu-ports xenial-updates main restricted universe multiverse
      
      deb http://mirrors.ustc.edu.cn/ubuntu-ports xenial-security main restricted universe multiverse
      # deb-src http://mirrors.ustc.edu.cn/ubuntu-ports xenial-security main restricted universe multiverse
      
      deb http://mirrors.ustc.edu.cn/ubuntu-ports xenial-backports main restricted universe multiverse
      # deb-src http://mirrors.ustc.edu.cn/ubuntu-ports xenial-backports main restricted universe multivers

      更新系统

      apt-get update
      apt-get upgrade

      ZMODE传输文件

      安装ZMODE传输文件软件方便传一些小文件

      apt install lrzsz

      搭建LNMP环境

      wget http://soft.vpser.net/lnmp/lnmp1.5.tar.gz -cO lnmp1.5.tar.gz && tar zxf lnmp1.5.tar.gz && cd lnmp1.5 && ./install.sh lnmp

      相关操作可以参考

      VPS配置

      VPS不需要做过多配置,除了更新下系统,还可以安装下BBR或者锐速,优化下系统配置,可以使用一键脚本,注意此脚本不适用于树莓派,因为arm处理器的原因,锐速不被支持,要想在树莓派上开启BBR需要特殊操作,在最新的4.9内核上应该是可以开启但是我还未尝试,可以参看https://www.sfantree.com/raspberry_bbr/

      wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh" && chmod +x tcp.sh && ./tcp.sh

      FRP内网穿透搭建与配置

      FRP中文文档
      在项目地址下载服务器和客户端架构对应的包,可以用arch命令查看,树莓派根据系统不同架构未必相同,这里我是用Ubuntu-mate16.04对应的是arm版,服务器段对应的是amd64,下载地址:https://github.com/fatedier/frp/releases ,可以直接使用wget拉取.tar -zxvf解压,
      mv xxx frp把文件夹名改成frp方便操作.

      服务器端配置

      cd frp,服务器端只需要两个文件frpsfrps.ini,其中frps为可执行文件,frps.ini为配置文件,frps_full.ini是全部可配置参数参考表,更多高级参数可以在此查找选用,先为运行文件授权

      chmod +x frps

      运行./frps --help如果返回帮助信息就没问题了.如果返回报错-bash: ./frps: cannot execute binary file: Exec format error则说明下错了版本

      vi frps.ini

      我先贴上我自己的服务器端配置文件:

      [common]
      bind_port = 7000
      vhost_http_port = 80
      vhost_https_port = 443
      dashboard_port = 7500
      dashboard_user = admin
      dashboard_pwd = xxxxxxxxxxx
      
      [web_http]
      type = http
      custom_domains = 域名
      auth_token = xxxxxx
      
      [web_https]
      type = https
      custom_domains = 域名
      auth_token = xxxxxx

      因为默认访问域名的时候就是80或443所以我直接指向这两个端口,如果填写其他端口,在输入域名的时候后面就要加上:端口号
      下面对常用和必备配置解释说明,全部完整配置还是看frps_full.ini

      # 下面这句开头必须要有,表示配置的开始
      [common]
      # frp 服务端端口(必须)
      bind_port = 7000
      # frp 服务端密码(必须)
      token = 12345678
      # 认证超时时间,由于时间戳会被用于加密认证,防止报文劫持后被他人利用
      # 因此服务端与客户端所在机器的时间差不能超过这个时间(秒)
      # 默认为900秒,即15分钟,如果设置成0就不会对报文时间戳进行超时验证
      authentication_timeout = 900
      # 仪表盘端口,只有设置了才能使用仪表盘(即后台)
      dashboard_port = 7500
      # 仪表盘访问的用户名密码,如果不设置,则默认都是 admin
      dashboard_user = admin
      dashboard_pwd = admin
      # 如果你想要用 frp 穿透访问内网中的网站(例如路由器设置页面)
      # 则必须要设置以下两个监听端口,不设置则不会开启这项功能
      vhost_http_port = 10080
      vhost_https_port = 10443
      # 此设置需要配合客户端设置,仅在穿透到内网中的 http 或 https 时有用(可选)
      # 假设此项设置为 example.com,客户端配置 http 时将 subdomain 设置为 test,
      # 则你将 test.example.com 解析到服务端后,可以使用此域名来访问客户端对应的 http
      subdomain_host = example.com

      前台启动服务./frps -c ./frps.ini第一次搭建的时候建议使用这个,因为在ssh端直接就能通过实时输出变化看出是否连接成功和一些报错信息,ctrl+c停止
      后台启动nohup ./frps -c ./frps.ini &,pkill frp关闭进程

客户端配置

vi frpc.ini

我的配置:

[common]
server_addr = xx.xx.xx.xx
server_port = 7000
auth_token = xxxxxxx

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

[web_http]
type = http
local_ip = 127.0.0.1
local_port = 80
custom_domains = 域名

[web_https]
type = https
local_ip = 127.0.0.1
local_port = 443
custom_domains = 域名

配置说明:

    # 下面这句开头必须要有,表示配置的开始
    [common]
    # frp 服务端地址,可以填ip或者域名
    server_addr = 0.0.0.0
    # frp 服务端端口,即填写服务端配置中的 bind_port
    server_port = 7000
    # 填写 frp 服务端密码
    token = 12345678

    # 自定义一个配置名称,格式为“[名称]”,放在开头
    [ssh]
    # 连接类型,填 tcp 或 udp
    type = tcp
    # 本地ip,填你需要转发到的目的ip
    # 如果是转发到frp客户端所在本机(比如路由器)则填 127.0.0.1
    # 否则填对应机器的内网ip
    local_ip = 127.0.0.1
    # 需要转发到的端口,比如 ssh 端口是 22
    local_port = 22
    # 是否加密客户端与服务端之间的通信,默认是 false
    use_encryption = false
    # 是否压缩客户端与服务端之间的通信,默认是 false
    # 压缩可以节省流量,但需要消耗 CPU 资源
    # 加密自然也会消耗 CPU 资源,但是不大
    use_compression = false
    # frp 服务端的远程监听端口,即你访问服务端的 remote_port 就相当于访问
    # 客户端的 local_port,如果填0则会随机分配一个端口
    remote_port = 6001

    # 自定义一个配置名称,格式为“[名称]”,放在开头
    [router-web]
    # 连接类型,填 http 或 https
    type = http
    local_ip = 127.0.0.1
    local_port = 80
    # http 可以考虑加密和压缩一下
    use_encryption = true
    use_compression = true
    # 自定义访问网站的用户名和密码,如果不定义的话谁都可以访问,会不安全
    # 有些路由器如果从内部访问web是不需要用户名密码的,因此需要在这里加一层密码保护
    # 如果你发现不加这个密码保护,路由器配置页面原本的用户认证能正常生效的话,可以不加
    http_user = admin
    http_pwd = admin
    # 还记得我们在服务端配置的 subdomain_host = example.com 吗
    # 假设这里我们填 web01,那么你将 web01.example.com 解析到服务端ip后
    # 你就可以使用 域名:端口 来访问你的 http 了
    # 这个域名的作用是用来区分不同的 http,因为你可以配置多个这样的配置
    subdomain = web01
    # 自定义域名,这个不同于 subdomain,你可以设置与 subdomain_host 无关的其他域名
    # subdomain 与 custom_domains 中至少有一个必须要设置
    custom_domains = web02.yourdomain.com
    # 匹配路径,可以设置多个,用逗号分隔,比如你设置 locations 为以下这个,
    # 那么所有 http://xxx/abc 和 http://xxx/def 都会被转发到 http://xxx/
    # 如果不需要这个功能可以不写这项,就直接该怎么访问就怎么访问
    locations = /abc,/def
    # 重写 host header,相当于反向代理中的“发送域名”
    # 如果设置了,转发 http 时,请求中的 host 会被替换成这个
    # 一般情况下不需要用到这个,可以不写这项
    host_header_rewrite = dev.yourdomain.com

    # 自定义一个配置名称,格式为“[range:名称]”,放在开头
    [range:multi-port]
    type = tcp
    local_ip = 127.0.0.1
    use_encryption = false
    use_compression = false
    # 本地端口和远程端口可以指定多个范围,如下格式,且范围之间必须一一对应
    local_port = 6010-6020,6022,6024-6028
    remote_port = 16010-16020,16022,16024-16028

前台启动./frpc -c ./frpc.ini,这里如果连接成功,服务器端和客户端会同时显示蓝色连接成功.ctrl+c停止
后台启动nohup ./frpc -c ./frpc.ini &,pkill frp关闭进程

至此已经可以连接,如果确认参数无误仍无法连接或使用centos系统,注意防火墙对需要的端口开放.
使用域名或vps的ip加:7500可以登录面版查看端口状态.
使用vps的ip建立一个测试ssh'连接,端口号填写配置中的自定义端口号,如果可以成功连接,则ok.

安装wordpress

lnmp新建vhost,参考本站https://www.j000e.com/linux/lnmpvhost.html

wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz

wget拉取linux包解压后放入网站目录
打开域名,填写数据库名称,数据库用户名密码,继续
提权

chmod -R 755 /home/wwwroot
chown -R www /home/wwwroot

除了自带的媒体播放器,插件商店里的html5播放器,还推荐一个比较简洁的播放器https://liuronghuan.com/plyr1-2.html
添加硬盘里的视频,需要使用url调用,可以先随意上传一张图片,然后点击图片即可看到图片的url就会发现文件位置路名规律了.大概是domain.com/wp-content/xxx.MP4

硬盘的挂载

插上硬盘,首先使用df -hlfdisk -l通过硬盘大小选出要挂载的硬盘分区位置,然后在要挂载的地方新建自定义名字目录mkdir sda3然后

mount -t ntfs[也可以是exfat等其他格式] /dev/sda3 /home/sda3

挂载在wordpress的媒体库中,需要挂载在/home/wwwroot/domain.com/wp-content/下及递归目录
插入3TNTDFS后fdisk -l报错
Partition 1 does not start on physical sector boundary.
应该是不支持挂载2T的问题,分出1TNTFS.
再次插入树莓派执行fdisk -l依然报上面的错,但是mount -t ntfs /dev/sda3 /home/sda3是可以正常使用的
开机自动挂载
vi /etc/fstab在左后加上
/dev/sda3 /home/sda3 ntfs defaults 1 1
卸载
umount /dev/sda3

THE END
最后修改:2022 年 04 月 27 日 21 : 03
本文链接:https://www.j000e.com/linux/rpifrpwebserver.html
版权声明:本文『RaspberryPi3运行UbuntuMate16.04挂载硬盘FRP内网穿透搭建Wordpress在线电影网站』为『Joe』原创。著作权归作者所有。
转载说明:RaspberryPi3运行UbuntuMate16.04挂载硬盘FRP内网穿透搭建Wordpress在线电影网站 || Joe's Blog』转载许可类型见文末右下角标识。允许规范转载时,转载文章需注明原文出处及地址。
Last modification:April 27, 2022