树莓派无显示器搭建博客保姆级教程

# 前言

闲来无事在百忙的学业中抽空搞得,所以有些问题并没有时间去搞清楚,只好大力出奇迹了。 Sakura FRP现如今需要实名认证后才可建站了。

# 准备

# 我的硬件

  • Raspberry Pi 4 model B 废话

  • SanDisk Ultra microSDcard 32GB

  • 一台12年的上网本,系统为Win10 1909,SSH用

  • 读卡器

  • 一套散热

  • 网线等

# ### 我的软件

其他软件只要功能相仿也可

# 准备系统

  • 下载CentOS 8 arm64镜像 在此我使用的是在树莓派俱乐部找到的树莓派修改版,图个心里安稳 ,咱也不知道他修改了啥,但知道的确能用。

  • 准备microSD卡 使用SDf格式化SD卡

  • 烧录镜像 Win32DiskImager烧录解压出的镜像到SD卡上,用时约3分钟。

  • 启动 插上树莓派,插电,开机。

# 配置系统

  • 修改密码

    • 在网关处找到树莓派的IP地址。
    • 在浏览器导航栏输入https://raspberrypiip:9090

    注意将raspberrypiIP改成查询到的IP

    • 进入Web Console管理界面。此系统默认账户root,密码raspberrypi.club

    • 修改root用户密码

      • 点击账户,点击root用户,在点击设置密码输入密码确定即可。
  • SSH连接

    • 打开PUTTY,输入树莓派IP,连接。

    • 账户root,密码为你刚刚修改的。

# 配置LNMP

# 安装Nginx

1
  yum install nginx -y

启动

1
systemctl start nginx

开机自启

1
systemctl enable nginx

访问树莓派IP,出现Nginx欢迎页,安装成功。

# 安装MariaDB

1
yum install mariadb-server -y

启动

1
systemctl start mariadb

开机自启

1
systemctl enable mariadb

# 配置MariaDB

MySQL命令结束符为分号,故以下MySQL命令均带有分号。

  • 改密码
1
mysqladmin -uroot password password

password换成你想要的密码

  • 登录
1
mysql -uroot -ppassword
  • 创建用户
1
create usr 'usr'@'localhost' identified by 'password';

此用户usr只能在本地localhost使用密码password登录。

  • 创建数据库
1
create database data;

创建了名为data的数据库。

  • 用户授权
1
grant all on data.* to 'usr'@'localhost';

用户usr将拥有data数据库中所有表的所有权限,并仅能在localhost登录。

  • 刷新
1
flush privileges;
  • 退出
1
quit;

以上创建的数据库等将在安装typecho时使用,请根据自身情况修改填写

# 安装PHP

1
yum install php -y

发现httpd安装失败,不用管。

如果``httpd`也安装了,删除

1
yum remove httpd*

而这会将php-fpm一同删除,再装回来

1
yum install php-fpm -y

# 配置Nginx

  • 修改nginx.conf文件
1
vi /etc/nginx/nginx.conf
  • 伪静态
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
server {
    listen       80 default_server;
    listen       [::]:80 default_server;
    server_name  yourdomain.top;
    root         /usr/share/nginx/html;
    
    if (!-e $request_filename) {
        rewrite ^(.*)$ /index.php$1 last;
}

location ~ .*\.php(\/.*)*$ {
    include fastcgi.conf;
    fastcgi_pass  127.0.0.1:9000;
}

access_log /var/log/nginx/yourdomain.log combined;
}

使server段看起来和这个差不多。

  • 重启一下
1
nginx -s reload

如果出错百度一下,reboot也行

  • 新建index.php
1
echo<?php phpinfo(); ?>> /usr/share/nginx/html/index.php

在浏览器打开树莓派IP,应能看到phpinfo页面

# 安装Typecho

  • 去官网下载typecho

  • 用7Zip解压下载的文件,直至解压出

1
2
3
4
5
6
7
admin
install
usr
var
index.php
install.php
LICENSE.txt
  • 打开FileZilla,填写连接信息
1
2
3
4
主机sftp://raspberrypiIP
用户名root
密码password
端口22

传输刚刚解压出的文件到/usr/share/nginx/html

  • 浏览器打开树莓派IP,见到typecho安装页面。

# 安装typecho

  • 点击我准备好了开始安装

  • 发现数据库一行空白

    查找得知php7 yum安装时没有安装相应的MySQL 驱动,查找驱动

1
yum search php | grep mysql

发现php-mysqlnd.aarch64可安装

  • 安装
1
yum install php-mysqlnd.aarch64 -y
  • 填写相关信息

    注意以下空格填写

1
2
3
数据库用户名usr
数据库密码password
数据库名data
  • 如果创建失败了,应该会让你在网站目录新建一个config.inc.php的文件。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php
/**
 * Typecho Blog Platform
 *
 * @copyright  Copyright (c) 2008 Typecho team (http://www.typecho.org)
 * @license    GNU General Public License 2.0
 * @version    $Id$
 */

/** 定义根目录 */
define('__TYPECHO_ROOT_DIR__', dirname(__FILE__));

/** 定义插件目录(相对路径) */
define('__TYPECHO_PLUGIN_DIR__', '/usr/plugins');

/** 定义模板目录(相对路径) */
define('__TYPECHO_THEME_DIR__', '/usr/themes');

/** 后台路径(相对路径) */
define('__TYPECHO_ADMIN_DIR__', '/admin/');

/** 设置包含路径 */
@set_include_path(get_include_path() . PATH_SEPARATOR .
__TYPECHO_ROOT_DIR__ . '/var' . PATH_SEPARATOR .
__TYPECHO_ROOT_DIR__ . __TYPECHO_PLUGIN_DIR__);

/** 载入API支持 */
require_once 'Typecho/Common.php';

/** 载入Response支持 */
require_once 'Typecho/Response.php';

/** 载入配置支持 */
require_once 'Typecho/Config.php';

/** 载入异常支持 */
require_once 'Typecho/Exception.php';

/** 载入插件支持 */
require_once 'Typecho/Plugin.php';

/** 载入国际化支持 */
require_once 'Typecho/I18n.php';

/** 载入数据库支持 */
require_once 'Typecho/Db.php';

/** 载入路由器支持 */
require_once 'Typecho/Router.php';

/** 程序初始化 */
Typecho_Common::init();

/** 定义数据库参数 */
$db = new Typecho_Db('Pdo_Mysql', 'typecho_');
$db->addServer(array (
  'host' => 'localhost',
  'user' => 'usr',
  'password' => 'password',
  'charset' => 'utf8',
  'port' => '3306',
  'database' => 'data',
), Typecho_Db::READ | Typecho_Db::WRITE);
Typecho_Db::set($db);

文件类似于以上,新建即可。

  • 跟提示走,创建成功。

# 申请域名

我在腾讯云申请的域名。

过程:

  • 查询域名
  • 购买
  • 提交资料,包括身份证
  • 等待审核

打开域名解析页,待用。

# 内网穿透

原因:

我的年龄没到我们省的备案标准(18周岁及以上),故只能使用内网穿透。

# 内网穿透配置

我选择的是Sakura Frp,免费,还挺好用。

# 创建内网穿透隧道

注册账号就好。

  • 每日签到

  • 创建隧道

国内服务器不能允许未备案的http流量,故选择国外的服务器。

根据提示填写隧道相关信息,并创建

本地地址应填127.0.0.1,毕竟我们是在树莓派上开启服务,树莓派内网地址也可,但若内网地址变动就要重新修改,麻烦。

注1: Sakura FRP 现已需要实名验证后才可创建使用HTTP隧道。

注2: Sakura FRP 现已有一键部署命令(bash)。

# 树莓派服务端配置

  • 点击左侧导航栏的软件下载

  • 找到Linux arm64的版本

    • 下载(法一)

      • 直接下载

      用FZ上传到/home

      在终端中输入

      1
      2
      
      cd /home
      ./frpc_linux_arm64
      

      提示permission denied的话输入 chmod 777 frpc_linux_arm64 再次运行就没问题了

    • 打开终端(法二)

      输入

      1
      2
      
      wget https://qianqu.me/frp/frpc_linux_amd64
      ./frpc_linux_arm64
      

      找不到命令就安装wget

      1
      
      yum install wget -y
      

    报错无权同上处理

  • 输入访问密钥,选择你创建隧道时的服务器,开启成功!

建议开启内网穿透服务时使用Web Console上的终端,因为我无法安装screen,SSH链接一关服务就停止了;而Web Console终端关闭后仍在工作。

  • 然后根据提示,去域名解析页修改CNAME解析

# 开启SSL

  • 先申请个SSL证书

    腾讯云管理界面可以直接申请Trust Asia的,挺快的。

# 配置Nginx SSL相关

打开nginx.conf

1
vi /etc/nginx/nginx.conf

配置如下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
server {
    listen       443 ssl http2 default_server;
    listen       [::]:443 ssl http2 default_server;
    server_name  www.yourdomain.top;
    root         /usr/share/nginx/html;
        
    ssl_certificate 1_yourdomain.top_bundle.crt;
    ssl_certificate_key 2_yourdomain.top.key;
    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout  5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        
    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;
        
    location / {
    root  /usr/share/nginx/html;
    }
        
    error_page 404 /404.html;
        location = /40x.html {
    }
        
    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }
        
    if (!-e $request_filename) {
        rewrite ^(.*)$ /index.php$1 last;
    }
        
    location ~ .*\.php(\/.*)*$ {
        include fastcgi.conf;
        fastcgi_pass  127.0.0.1:9000;
    }
        
    access_log /var/log/nginx/www.yourdomain.top.log combined;

}

debug

1
nginx -t

报错自行修改,理论上不会报错,因为我帮你把坑踩了。

重启

1
nginx -s reload

访问

https://raspberryip 无视浏览器警告,继续访问,自签证书不受浏览器信任。

修改

  • host
1
2
raspberryip yourdomain.com
raspberryip www.yourdomain.com

修改成以上,防止公网上不去。

  • typecho

进入后台

设置-基本

将站点地址更改为

https://www.yourdomain.com

  • 内网穿透

    • 创建新隧道

      记得选择https隧道,443端口哦~

    • 停止树莓派的内网穿透

    由于我不知道开启后怎样停止,于是在终端输入l

    1
    
    roboot
    
    • 删除配置文件
    1
    2
    
    cd /home
    rf -f frpc_user.txt
    

    我内网穿透跑在/home,所以需要进入该文件夹。

    • 开启服务
    1
    
    ./frpc_linux_arm64
    
    • 选择即可
  • HOST删除相关地址

  • 访问测试

肯定成功

  • 完成

# 拔掉风扇

  • 进入树莓派管理界面

    • 于主页找到电源选项,选择powersave
  • 拔掉树莓派的散热风扇

    我已经受够了你的啸叫啦!!!

哦,有钱直接上被动散热金属壳就行。

# 后记

这篇文章断断续续写了好久,每做一点更新一点,所以肯定有缺漏。希望读者不吝赐教。 更何况这篇文章是2020年中完成的,参考价值,应该不是很大了。只是将它作为我一路走来的一个见证。

使用 Hugo 构建
主题 StackJimmy 设计