前言
正好手头有一个树莓派,想着加一个 web 服务器的功能就折腾了一下,如果只是想搭载自己的博客建议还是使用云服务器,毕竟树莓派确实不便宜(
准备工作
- 树莓派(我用的型号是 4b)
- sd 卡(建议 32G 以上)
- 读卡器
- 一台能正常工作的电脑
这里 web 服务器中搭载的内容是简单的静态博客页面,使用 hexo 搭建博客网站的方法这里不再赘述,可以在本站的关于中查看相关教程
如果不使用树莓派等本地 linux 服务器进行配置,可以跳过树莓派配置部分
树莓派配置
系统烧录
我们拿到树莓派时是一个空板,所以我们需要自行烧录系统
理论上可以烧录任何你喜欢的系统,这里我们为了配置方便与以后的其他用途选择树莓派官方的 RaspberryPi OS ——一个基于 debian 的 linux 系统
进入树莓派官网,下载烧录工具,我们在 windows 设备上进行烧录
按照引导一路安装,完成后打开烧录程序
在 CHOOSE DECVICE 中选择自己的树莓派型号,这里选择Raspberry Pi 4
然后选择你需要的操作系统,这里一般为 Raspberry Pi OS(64 bit),若不需要图形界面的话可以选择对用的 lite 版本
这里我觉得命令行很帅,所以使用的 lite 版本,后续内容均基于命令行操作演示
由于我手边并没有显示器,因此选择在自己的 windows 系统上使用 ssh 进行连接,在烧录系统时注意设置自己的用户名、密码与 wifi,方便使用在终端使用 ssh 进行连接
然后选择你自己的 sd 卡,进行烧录即可
ssh 连接
首先确认你的电脑上有 ssh.exe 这个文件,一般电脑上有 git,文件中是自带 ssh.exe 的,关于 git 的使用请参考关于中的教程
这里为了方便我们使用 cmd 或者 powershell 进行命令行操作(git bash 确实不太方便),我们将 git 文件夹中的 ssh.exe 加入环境变量
然后,打开你的终端,输入
1 | ssh <树莓派的ip> |
如果不知道 ip 是什么,可以输入
1 | ping 主机名 // 未修改默认raspberrypi |
然后输入你烧录系统时设定的密码,注意输入的密码不会显示在终端中
出现以下提示
表示你已经成功通过 ssh 连接至你的树莓派了
配置 Ningx
下载
将自己的服务器用作 web 服务器,我们需要对其进行反向代理,这里我们使用 Ningx 来进行配置
首先在服务器中下载 Nginx
1 | sudo apt -y Nginx // -y表示自动确认 |
然后启动
1 | sudo systemctl start nginx |
现在你通过同局域网的设备访问树莓派 ip,可以看到如下页面
代表 Nginx 下载成功
配置文件
这里假设我要将我的博客文件放在/home/username/hexo
中,我需要将对应监听的端口指向blog
中的index.html
文件
这里我们在etc/nginx
文件夹下新建一个vhost
文件夹来存放我们自定义的配置信息,例如,我想将 3000 端口对应至我的博客页面
1 | server { |
然后,我们需要在/etc/nginx/nginx.conf
文件中的 http 代码块内加入include /etc/nginx/vhost/*.conf;
来添加所有 vhost 下的配置文件
此外,我们将需要将nginx.conf
文件中的user
字段设为自己的用户名,以解决访问限制问题
使用sudo nginx -t
来检测是否有语法错误,无误后使用sudo systemctl restart nginx
重启 nginx 代理
现在访问你树莓派对应的端口,就可以定向至树莓派内文件所在的位置,接下来我们将 windows 上的静态博客页面迁移至树莓派
博客迁移
这里埋个坑,目前我直接将 hexo 的静态文件手动转移至树莓派,实际使用 git 进行管理会更加方便
在电脑中的 hexo 文件架内,使用hexo generate
在public
中生成对应的静态文件,运行以下命令
1 | cd public |
将对应的静态文件打包
然后,使用 ssh 自带的 scp 工具将压缩包转移至树莓派。假设树莓派 ip 为192.168.1.100
,目标目录是 /home/kpmark/hexo:
1 | scp hexo-blog.tar.gz kpmark@192.168.1.100:/home/kpmark/hexo |
然后,在树莓派中运行以下命令解压文件:
1 | cd /home/kpmark/hexo |
此时通过局域网访问树莓派对应的端口,即可看见你的博客页面
内网穿透
为了在公网中能够访问自己的博客,我们需要一个公网 ip 以及对应的域名
然而目前国内公网 ip 的获取较为麻烦,我们可以采用内网穿透式服务器能够面向公网,这里我选择Sakura Frp
首先,进入官网,注册账号,进行实名认证(需要一元巨款)
然后点击服务,进入软件下载
这里我们跳过启动器,直接安装frpc
使用命令行进行操作
找到你服务器设备架构对应的软件版本,如若不确定可以在服务器端输入uname -u
来进行确认
这里我的树莓派是Linux AArch64(arm64)
版本,注意不要和amd64
搞混
不想折腾也可以使用Docker
进行部署,但是我比较喜欢手操的感觉
以下操作需要取得root
权限,请使用sudo -s
命令进行切换
对照官方文档,我们使用cd /usr/local/bin
进入对应的文件夹,然后使用以下命令进行下载:
1 | # 一般来说只需要使用这条命令: |
下载地址直接在版本页面复制连接即可
然后设置权限并校验文件完整性
1 | chmod 755 frpc |
如果操作全部正确,此时可以运行frpc -v
来查看版本
在服务页面的隧道列表中新建列表,注意输入你服务器的 ip 和要监听的端口号
再右侧操作中找到配置文件,复制密钥即可,然后再服务器中运行:
1 | frpc <复制内容> |
即可开启隧道,此时可直接通过隧道给出的 ip 或域名从公网访问网站
https 与 http
如果你的网站申请过 https,那应该是可有照常访问的,如若没有,请在隧道设置中开启自动 https 选项