从头建立Hexo博客系统:一个懒人脚本

2023年之前的博客系统是基于wordpress建立的,而Hexo作为另一个广为人知的博客系统(参考:从零开始搭建个人博客),之前研究的不多。

最近倒是整了点歪门邪道,搞出来了一个脚本出来。这个脚本主要面向懒人和Hexo的小白用户,帮助实现Hexo博客系统本地仓库的一键构建,与GitHub deploy相关参数的配置。使用方法也很简单,将代码中标为橙色的几个shell变量改成自己的变量,然后chmod +x,之后直接在命令行窗口中运行就行。


我们假设读者已经对命令行操作有所了解,并已经在电脑上安装了nodejsnpm。此外,还需要准备下面的东西:一个用于存放博客源代码的空文件夹一个已经注册好的GitHub账户,以及一个GitHub Pages存储库。(理论上其他代码托管平台例如Gitee,GitLab的Pages服务也可以,但是可能需要个人提前踩坑,因此无脑选GitHub总还是好的)

然后,将下面这段代码复制下来,粘贴到一个文本文件中,并命名为init_blog.sh


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
65
66
67
68
69
70
71
72
73
74
75
76
#!/bin/bash
# 本shell脚本的目标是建立一个自动化搭建博客站点的流程,包括环境初始化、设置NexT主题,以及GitHub 账号设置。
# 部分变量值需要手动修改

#===========================================================================
# -------------------- 以下段落中的变量需要手动修改 ------------------------
## 0. 部分博客信息的设置。需要手动修改
BLOG_NAME="Blog_name" #改成博客系统的源代码文件夹的名字
# 不要带空格、英文逗号、英文引号,不然可能会造成bug;可以用下划线和中文标点代替

REPO="https://github.com/username/username.github.io.git"
# GitHub存储库的地址。在GitHub存储库里点右上角那个绿色的"Code"按钮复制就能得到。

BRANCH="main"
# GitHub存储库的代码分支。因为有些存储库是main作为主分支,有些则是master作为主分支。建议去GitHub存储库检查一下分支名称是什么。

EMAIL="user@institute.com"
# GitHub账户绑定的邮箱

USERNAME="username"
# GitHub的账户名称,例如cyclinbox或者Hazelandinstant

TOKEN="token"
# GitHub的账户令牌,在`Settings -> Developer settings -> Personal access tokens`处获得
# -------------------- 以上段落中的变量需要手动修改 ------------------------
#===========================================================================

## 1. 新建一个目录,用于存放博客源代码
mkdir $BLOG_NAME
cd $BLOG_NAME
hexo init --no-clone

## 2. 新建一个页面看看:
hexo new First_Page
echo "Hello World\! This is my First blog\!" >> source/_posts/First-Page.md

## 3. 安装Next主题
npm install hexo-theme-next
# 此时的安装路径为`node_modules/hexo-theme-next`
# 应该是不需要做其他改动的,例如不用把这个文件夹移动到theme下面。(不然可能会报错?)

## 4. 然后在_config.yml文件中修改主题。下面的代码可以自动完成这个过程。
# 这一步也可以通过直接修改_config.yml文件第100行的 theme 的内容实现。
sed -e 's/theme: landscape/theme: next/' _config.yml > _config.yml.new
mv _config.yml.new _config.yml

## 5. 修改GitHub存储库的信息
sed -e "s/ type: ''/ type: git/" _config.yml > _config.yml.new
mv _config.yml.new _config.yml
#echo "- type: git" >> _config.yml
echo " repo: ${REPO}" >> _config.yml
echo " branch: ${BRANCH}" >> _config.yml
echo " token: ${TOKEN}" >> _config.yml
echo " name: ${USERNAME}" >> _config.yml
echo " email: ${EMAIL}" >> _config.yml

## 6. 安装hexo-deployer-git插件,否则使用hexo deploy指令时会报错
npm install --save hexo-deployer-git
# 不出意外还得初始化一下存储库
git init
git config user.email ${EMAIL}
git config user.name ${USERNAME}
git remote add origin ${REPO}

## 7. 大功告成!
echo
echo "博客系统初始化完成!执行下列指令发布第一篇博客吧~"
echo "cd ${BLOG_NAME};hexo deploy"
echo "执行hexo --help查看更多帮助"
echo
echo "如果提示没有配置远程rsa密钥,则使用下列方法获得密钥后,复制公钥内容到github个人设置中的SSH and GPG keys中的 New SSH key中:"
echo "ssh-keygen -t rsa -C ${EMAIL} #一路回车就行,不用管提示"
echo "cat ~/.ssh/id_rsa.pub #这个就是公钥内容"
echo
echo "如果遇到其他错误,例如无法合并远程分支,或者其他莫名其妙的报错,可以根据报错内容,在互联网上搜索解决方案,或求助于其他人"
echo "谢谢您的使用,再会~"

之后按照自己的实际情况,修改上面第一部分的几个shell变量的内容,保存后使用chmod +x授予可执行权限,之后执行即可。

这样我们就得到了一个NexT主题的Hexo博客系统了~

至于之后的更高级配置,可以参考 个人博客第8篇——优化主题 这篇文章,以及有空的话也可以自己折腾呀~

最终效果(这个是我用自己的GitHub Page演示的,但目前的博客还是用现在这个。或许未来某天,我也会选择换到Hexo,谁知道呢?):

blog example

以上。