在树莓派上部署Hexo博客

本文主要介绍如何将Hexo博客部署在树莓派上,从而实现在本地局域网直接访问博客内容。由于博客的源码保存在本地PC,并已经同步到Github。因此,只需将Hexo生成的网页文件发布到树莓派的Nginx服务器。

安装nginx

首先在树莓派上安装nginx服务器,用于发布博客网站。

获取并更新软件列表。

sudo apt-get update

安装 nginx服务器。

sudo apt-get install nginx

查看nginx服务器的版本,确认已安装成功。

$ nginx -v
nginx version: nginx/1.18.0

配置nginx服务器随机启动。

sudo systemctl enable nginx.service

创建一个新的文件夹/var/www/hexo,用于存放博客的网页文件,并将该文件夹作为nginx服务器的根目录。

sudo mkdir -p /var/www/hexo
sudo chown -R $USER:$USER /var/www/hexo
sudo chmod -R 755 /var/www/hexo

打开nginx的配置文件,将根目录设置为/var/www/hexo

sudo vi /etc/nginx/sites-available/default

将配置文件中默认的根目录root /var/www/html用#号注释掉,并在下方添加新的根目录为root /var/www/hexo

# Default server configuration
#
server {
listen 80 default_server;
listen [::]:80 default_server;

# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;

#root /var/www/html;
root /var/www/hexo;

配置完成后,重启 nginx服务器。

sudo service nginx restart

安装 git

查看树莓派上是否已安装git,如果没有安装,可以执行以下命令。

sudo apt-get install git

安装完成后,查看版本,确认已安装成功。

$ git --version
git version 2.30.2

远程Git仓库

在树莓派上建立一个远程仓库,这样本地PC就可以将网页文件提交到该仓库。

创建一个新的文件夹,并在该文件夹下面建立一个新的Git仓库。

mkdir /home/pi/myapps/git_repository
cd /home/pi/myapps/git_repository
git init --bare myblog.git

git init - 创建一个空的Git仓库或者重新初始化现有的仓库。
–bare - 创建一个全新的Git仓库。
myblog.git - 仓库的名称为myblog,并添加后缀.git。

然后在仓库 myblog.git 下创建一个钩子,将网页文件传送到nginx服务器的根目录下,即 /var/www/hexo下面:

#在仓库下创建一个新的钩子文件
sudo vi /home/pi/myblog.git/hooks/post-receive

在文件中添加以下命令,然后保存文件。该命令中的--work-tree参数可以将目录/var/www/hexo映射到仓库中,本地提交的网页文件会自动存储到/var/www/hexo目录下。

#!/bin/bash
git --work-tree=/var/www/hexo --git-dir=/home/pi/myapps/git_repository/myblog.git checkout -f

为文件post-receive添加可执行权限。

sudo chmod +x /var/repo/web_blog.git/hooks/post-receive

配置SSH公钥登录

在本地 PC上生成公钥文件id_rsa.pub

$ ssh-keygen -t rsa -P ''

Generating public/private rsa key pair.
Enter file in which to save the key (/user/.ssh/id_rsa):
Your identification has been saved in /user/.ssh/id_rsa.
Your public key has been saved in /user/.ssh/id_rsa.pub.
The key fingerprint is:
3f:35:7c:d2:33:65:d6:69:7f:34:92:31:38:1d:c1:94 user@bogon
The key's randomart image is:
+--[ RSA 2048]----+
| =B==B|
| o E*o=|
| ... o|
| . . . .|
| S + o |
| o o |
| + |
| . . |
| |
+————————+

本地PC的公钥上传到树莓派。

ssh-copy-id -i ~/.ssh/id_rsa.pub pi@pi

以上命令会将本地PC的公钥写入到树莓派的~/.ssh/authorized_keys文件中。如果树莓派上不存在文件authorized_keysssh-copy-id会新建文件。

配置本地Hexo

打开Hexo的配置文件_config.yml,设置部署博客的方式。

type: git
repo: pi@pi:/home/pi/myapps/git_repository/myblog
branch: main

deploy:
- type: git
repo: pi@pi:/home/pi/myapps/git_repository/myblog
branch: main

在本地PC执行命令hexo g -d后,本地生成的网页文件会自动部署到树莓派上。

hexo g -d