Hexo 搭建个人博客

之前也曾使用 Hexo + GitHub Pages 搭建过个人博客,不过由于当时 Repository 只能是公开状态,也一直没怎么写过东西,仅作为测试 html 页面使用,后面逐渐荒废直至删库了。
这次准备使用 Hexo + GitHub + 阿里云 OSS 方式搭建博客,源文件存放 GitHub 私有库、静态博客上传到阿里云 OSS(香港),也顺便记录下这次的搭建过程,防止后面会再次用到😂。

目标

搭建 Hexo + GitHub + 阿里云 OSS 整体博客框架,暂不关注主题、博文内容

安装 Hexo

直接参考 Hexo 官方文档即可

1
2
$ brew install node
$ npm install -g hexo-cli

安装成功后使用 hexo --version 验证下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ hexo --version
hexo-cli: 4.3.0
os: darwin 21.5.0 12.4

node: 17.6.0
v8: 9.6.180.15-node.13
uv: 1.43.0
zlib: 1.2.11
brotli: 1.0.9
ares: 1.18.1
modules: 102
nghttp2: 1.46.0
napi: 8
llhttp: 6.0.4
openssl: 1.1.1m
cldr: 39.0
icu: 69.1
tz: 2021a
unicode: 13.0

建立并本地验证博客

创建本地博客注1

1
2
$ cd ~/Sites
$ hexo init myBlog

验证本地博客

1
2
cd ~/Sites/myBlog
hexo s

根据提示,浏览器打开 http://localhost:4000,可以看到 Hexo 已经默认给我们创建了一篇标题为hello-world 的博文

文件上传到 GitHub

为了方便其他电脑也能编辑、预览站点,需要把博客的源文件备份到 GitHub。

  1. GitHub 创建空白 Repo,设置为 Private
  2. 博客目录创建 .gitignore,其内容为
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    .DS_Store
    # Nginx 的 log 目录
    log/
    Thumbs.db
    db.json
    *.log
    # 可通过 package.json 安装
    node_modules/
    # 生成的静态网站目录
    public/
    .deploy*/
    _multiconfig.yml
  3. add、commit、push 一条龙,将本地博客上传到 GitHub
    1
    2
    3
    4
    5
    6
    7
    8
    $ cd ~/Sites/myBlog
    $ echo "# myBlog" >> README.md
    $ git init
    $ git add .
    $ git commit -m"first commit"
    $ git branch -M main
    $ git remote add origin xxxxx.git
    $ git push -u origin main

页面发布到阿里云

考虑到访问的稳定性,没有使用 GitHub Pages,而是将静态博客上传到阿里云 OSS。

创建 Bucket

域名没有进行备案,目前只能选择香港或海外节点

打开 Bucket 静态页面功能

配置域名和 HTTPS 证书

文件上传

将本地站点中 public 内容上传到 OSS 中,通过域名即可浏览站点内容

附注

常见错误及处理

注[1]hexo init 时报 unable to access 'https://github.com/hexojs/hexo-starter.git/': LibreSSL SSL_read: error:02FFF03C:system library:func(4095):Operation timed out, errno 60 错误

解决

1
2
$ cd myBlog
$ npm install

参考文档

Hexo 概述

Author: HenryMe
Link: https://henryme.com/2022/06/build-blog-use-hexo-e507ef42eb46.html
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.