0%

树莓派平台自建博客(一)——搭建树莓派托管平台

博客搭载我选择了以树莓派作为平台,理由在前言中有详细且 真实 的表达
但考虑到树莓派平台本身的局限性,最后还会作一个多PC的推送,初步将这个系列分为四部分

前言

​ 选择树莓派作为博客搭管平台的理由:

​ 一,大多数博客都是在上班学习新知识时完成,主要写在公司的PC上;

​ 二,公司开发产品的环境会选择旧版本,与工作内容不相关的其他环境建在工作PC上容易造成意想不到的麻烦;

​ 三,树莓派系统读写在SD卡上,断电拔插解千愁(大不了重装系统);

​ 四,穷。

树莓派环境

树莓派的连接

​ 首先烧写树莓派系统,这里选择的是2017-04-10-ssh-china-raspbian-jessie.img,新版的系统怕遇到新麻烦难以解决搞球不来所以选了个熟悉的旧版本;

​ 内存卡方面选择了A1的16G的金士顿,用Win32DiskImager工具烧完系统;

​ 先将自己显示器的HDMI接口连接至树莓派(没有显示器的看这里:树莓派如何完全无头(无屏无网线无键盘鼠标)安装 );

​ 插卡,上电(5v2A),开机,手动连接至PC连接的同一局域网;

​ 打开终端,输入:

1
ifconfig

​ 获取树莓派的ip地址,记住树莓派的默认username是pi,默认密码是raspberry

​ 下载Putty或者xshell通过SSH方式连接树莓派,这里用的是Putty,附上下载链接,选择putty.exe(the SSH and Telnet client itself)。打开Putty,按图中顺序输入IP地址,点击[Open]。

image-20210110185859101

​ 打开之后,输入正确的用户名和密码,回车*2。

image-20210110190526959

树莓派的硬件驱动

​ 因为大学里也阔过所以还有一块微雪的3.5寸的触摸屏,树莓派默认1080分辨率的HDMI视频输出,因此使用这块屏幕需要下载专门的驱动;

​ 终端输入:

1
2
3
git clone https://github.com/waveshare/LCD-show.git
cd LCD-show/
sudo ./LCD35-show

​ 这种驱动工作的话执行apt-get upgrade会导致LCD无法正常工作,解决方法:

​ 关机,拔下SD卡,读卡器插入PC,boot根目录下找到 config.txt 文件并打开,找到并删除这一句:dtoverlay=ads7846,

​ Ctrl+S保存config.txt文件并关闭,重新给树莓派插上SD卡,开机;

​ 树莓派的系统就适配在3.5寸屏幕上了,因为初始的桌面方向底部在电源口方向我很不方便,所以需要旋转屏幕,还是putty打开终端输入

1
2
3
4
cd LCD-show/
#X可选0、90、180和270。分别表示LCD旋转0度、90度、180度和270度。
sudo ./LCD35-show X
#这里X我选的是180,个人喜爱

请不要输入0!!!请不要输入0!!!请不要输入0!!!会直接白屏,如果手贱已输,网上攻略让找找config.txt文件注释LCD一些设置或者跟我一样选择重装系统…

为树莓派修改更新源

​ 因为社会主义网络下载资本主义的系统源和软件源会非常非常非常慢,所以需要在手贱进行sudo apt-get upgrade之前将镜像源换掉, 终端输入:

1
2
sudo nano /etc/apt/sources.list
#修改软件更新源

​ 如下图所示:

修改前sources.list

​ 用 # 号将原来的国外镜像源注释掉,并添加国内的清华源,在文件后添加如下代码:

1
2
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi
#deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi

​ 完成后如图所示:

修改后的sources.list

Ctrl+X退出,然后按Y保存,回车退出。

​ 终端输入:

1
2
sudo nano /etc/apt/sources.list.d/raspi.list
#修改系统更新源

​ 如下图所示:

修改前的raspi.list内容

​ 注释第一行,末尾加上添加的新源地址:

1
deb http://mirrors.ustc.edu.cn/archive.raspberrypi.org/debian/ buster main uih

​ 完成如图所示:

修改后的raspi.list内容

Ctrl+X退出,然后按Y保存,回车退出。

更新

​ 更新树莓派系统,在终端输入sudo apt-get update

​ 更新树莓派软件,在终端输入sudo apt-get upgrade

​ 过程漫长,开始煲汤…

​ 第二步结束之后,卡住不动出现changelogs说明第一阶段结束,一直按回车到变更记录底部

image-20210110191529225

​ 出现提示:q to quit,按下q,然后回车。

image-20210110191444420

​ Done.

安装Git

​ 终端输入:sudo apt-get install git

​ 修改全局用户名:

1
2
git config --global user.name "你的GitHub/Gitee用户名"
git config --global user.email "你的GitHub/Gitee邮箱"

​ Email不知道是啥的点进Github右上角头像[Settings],找到Emails

image-20210110194209174

​ 查看自己是不是已经修改成功:

1
git config --list

​ 如图则成功:

image-20210110194529563

安装Node.js

前排提示可能是最坑的一步要来了…

​ 先装个傻子假装不知道树莓派的架构,打开终端输入:

1
uname -a
image-20210110194811054

​ 可以看到树莓派是armv71架构,即ARM7.

​ 登录 Node.js官网,可以看到Node.js很贴心的给出了推荐版本,点开Linux Binaries (ARM)下支持ARMv7架构的最新版本是v14.15.4

image-20210110195145708

—以下是一次试错记录,仅供阅读不推荐亲自尝试,直到下一次提示出现否则不要尝试—

​ 下载node.js:

1
wget https://nodejs.org/dist/v14.15.4/node-v14.15.4-linux-armv7l.tar.xz

注意将版本改为当前的最新版本,更改命令中数字即可,下面的命令全部都要作出相应修改

image-20210110195755526

​ 解压二进制包:

1
2
xz -d node-v14.15.4-linux-armv7l.tar.xz
tar -xavf node-v14.15.4-linux-armv7l.tar

​ 删除系统内原本存在的/usr/bin.node:

1
2
3
sudo rm -rf /usr/bin/node
sudo rm -rf /usr/bin/npm
#如果不存在,忽略此步骤

​ 解压后将解压文件移动到/usr/local/node下:

1
sudo mv ./node-v14.15.4-linux-armv7l /usr/local/node

​ 为node和npm建立软连接(就是上上步骤删除的那个):

1
2
3
sudo ln -s /usr/local/node/bin/node /usr/bin/node
sudo ln -s /usr/local/node/bin/npm /usr/bin/npm
#这类似于Windows中的快捷方式

​ 查看版本号:

1
node -v && npm -v

​ 坑爹的来了…提示报错

node: /usr/lib/arm-linux-gnueabihf/libstdc++.so.6: version'CXXABI_1.3.9'not found (required by node)

node: /usr/lib/arm-linux-gnueabihf/libstdc++.so.6: version ‘GLIBCXX_3.4.21’not found (required by node)

image-20210110200800909

​ 上论坛找解决方案,找到了几个跟我同病相怜的哥们:

问题原因&解决方案

原因:坑爹的树莓派老Raspbian系统不支持较新的node.js…

​ 将刚才的步骤一步步回溯:

  1. 删除软连接:

    1
    2
    sudo rm -rf /usr/bin/node
    sudo rm -rf /usr/bin/npm
  2. 删除/usr/local/node下的文件

    1
    2
    3
    cd /usr/local
    rm -f -R -v node
    #不要再root模式下输入最后一个命令&不要自行加sudo
    image-20210110202351885
  1. 回到pi目录下,删除刚刚下载的v14.15.4的压缩包

    1
    2
    3
    4
    5
    cd ..
    cd ..
    cd home
    cd pi
    rm node-v14.15.4-linux-armv7l.tar
  2. 下载当前系统支持的node.js版本

    1
    wget https://nodejs.org/download/release/v0.10.0/node-v0.10.0-linux-arm-pi.tar.gz

    解压到local文件夹下:

    1
    2
    3
    cd /usr/local/node

    sudo tar xzvf ~/node-v0.10.0-linux-arm-pi.tar.gz --strip=1

    检查目录内容:

    1
    ls -l
    image-20210110202954600
  3. 建立软连接&查看版本号

    1
    2
    3
    sudo ln -s /usr/local/node/bin/node /usr/bin/node
    sudo ln -s /usr/local/node/bin/npm /usr/bin/npm
    node -v && npm -v
    image-20210110203111090

    DONE!

​ 由于网速问题npm的包管理器的速度很慢,所以使用npm安装cnpm即淘宝源,终端输入:

1
npm install -g cnpm --registry=https://registry.npm.taobao.org
image-20210111094319946

​ 要求node>= 6.0.0。。。。。。

​ 打开 Node.js官网,点开Previous Releases,根据发布日期选择一个不晚于树莓派当前系统镜像制作时间的版本

image-20210111101246619

​ 我选的是Node.js 7.3.0,步骤同上述步骤1-5,如果在node -v && npm -v

image-20210111101553050

​ 读条,煲汤…

​ 成功之后如下:(两个WARN总感觉给自己挖了个大坑=~=|||)

image-20210111102233699

​ 三分钟之后,果然是坑…在安装Hexo步骤时成功崩溃:Hexo安装需要有Node.js的版本支持:

image-20210111113028964

————————试错结束,正确的打开方式如下————————

重新安装Node.js 10.13.0,步骤上同。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
sudo rm -rf /usr/bin/node
sudo rm -rf /usr/bin/npm
cd /usr/local
rm -f -R -v node
cd ..
cd ..
cd home
cd pi
wget https://nodejs.org/dist/v10.13.0/node-v10.13.0-linux-armv7l.tar.xz
cd /usr/local/node
sudo tar xavf ~/node-v10.13.0-linux-arm-pi.tar.gz --strip=1
sudo ln -s /usr/local/node/bin/node /usr/bin/node
sudo ln -s /usr/local/node/bin/npm /usr/bin/npm
node -v && npm -v

image-20210111113144727

填坑小结:

  1. 看论坛注意时间戳,解决方案具有时效性;
  2. 以第一目标所需配置为目标进行检索,比如安装hexo应当优先关注的是hexo所需的版本要求而不是先根据自身硬件条件去猜支持的版本;
  3. 安装路径很重要,如建立软连接sudo ln -s /usr/local/node/bin/node /usr/bin/node ,需要注意前面一个路径是否正确;如果没有设置正确,在 node -v 时会出现找不到对象;解决方法是cd到node目录下,ls -l查看当前文件目录,有的时候使用其他的解压文件方式会使得在node文件夹下建立了一个和压缩包同名的文件夹,按照各个博客里的命令设置软连接肯定是会撞在南墙上的。

安装Hexo

方式一:cnpm/npm安装

​ 国内网速较慢,nmp包管理器的速度会较慢,利用nmp安装cnpm即淘宝源,在终端输入:

1
npm install -g cnpm --registry=https://registry.npm.taobao.org
image-20210111114225195

​ 报错…Hexo论坛查找问题发现大多数人都遇到过,原因是安装权限不足,在命令前加上sudo即可,下面涉及安装的作同类处理

image-20210111131013291

​ 为cnpm建立软连接,在终端输入:

1
sudo ln -s /usr/local/node/bin/cnpm /usr/bin/cnpm

​ 安装hexo博客框架,在终端输入:

1
sudo cnpm install -g hexo-cli
image-20210111132437986

​ 这时候输入hexo -v是找不到hexo的…说明安装的步骤出了问题(或者可以跳转到下文中hexo路径配置尝试,我这里选择直接换方法)

​ cnpm有时候确实鸡肋,因为下文npm安装下载速度并不像那些推荐cnpm的博主所说的那样慢,改用npm安装:

​ 通过ape-get安装npm的需要下载以下nodejs的legacy:

1
sudo apt-get install nodejs-legacy

​ y,回车

image-20210111133211425

​ 虽然hexo官方的文档强烈建议不要使用 root、sudo 等方法覆盖权限,但其他方法太麻烦了,sudo走一个

1
sudo npm install -g hexo-cli
image-20210111134702577 image-20210111141122455

​ 骂骂咧咧找问题…

​ 第一步,先检查当前npm的镜像

1
npm get registry

​ 如果不是https://registry.npmjs.org/,终端输入npm config set registry https://registry.npmjs.org/从淘宝源换回官方源;

​ 重试sudo npm install -g hexo ,不出意外还是失败,淦…

​ 第二步,清除cache

1
npm cacha cleam --force

​ npm官方提醒:I sure hope you know what you are doing. (=//=)

image-20210111142126335

​ 第三步,设置npm的官方源以防万一

1
npm config set registry http://registry.cnpmjs.org

​ 好了,继续

1
sudo npm install -g hexo
image-20210111142658630

​ 胜利在望!!!!

​ 查看hexo版本:

1
hexo -v
image-20210111142832673

​ 骂骂咧咧找问题*2…

​ 【安装hexo提示command not found】

​ 在知乎找到了答案:

image-20210111143337916
1
npm -root -g

​ 回复:/usr/local/node/lib/node_modules,cd到这个目录下不停, ls -l 或者用VNC工具查看树莓派文件夹,目的是为了找到hexo

image-20210111143559765

​ 路径是/usr/local/node/lib/node_modules/hexo/bin/hexo,我们重新设置软连接到 /usr/bin/ 文件夹下:

1
sudo ln -s /usr/local/node/lib/node_modules/hexo/bin/hexo /usr/bin/hexo

​ 查看hexo版本:

1
hexo -v
image-20210111143812943

​ 终于,成功了…

总结

经过这一整套的折腾,发现树莓派作为博客搭载的平台确实是个很草率的决定;

但这一系列的折腾让我不得不又把那本Linux手册又重新捡起来复习,算是意料之外的收获;

考虑到接下来修改主题配置文件,如果让我重来一次我一定会选择Windows…

两种颜色的功德箱(逃