- 基础逻辑说明
github提供了静态网页展示的功能,我们可以在自己的github上创建username.github.io
名字的仓库,然后在这个仓库的settings里开启Pages的功能。这里需要html文件才能以
静态网页的形式把内容展示出来,而一般我们直接书写的是md或者是rst这样的文本文件。
网上有各种各样的从文本文件生成html文件的框架,hexo就是其中的一个,它是基于JS的。
hexo支持主题可选,通过选不同的主题,博客的风格会不一样,我们选的是NexT主题,这个
主题使用的人很多,相关的资料也容易找。
我们把整个blog分成三个代码仓库来管理:
hexo代码仓库,这个仓库是hexo代码,我们的博客原文也放在这个目录下。
静态网页仓库,这个仓库里的静态网页都是hexo生成的。我们把这个仓库推到如上的
username.github.io这个仓库,然后从浏览器就可有通过https://username.github.io
访问到。NexT主题的仓库,我们把这个仓库fork一份到自己的github上,一般我们只需要改动
NexT的配置文件就好,但是我们这里还是把仓库本身也保存一份,日后可以直接修改NexT
的代码,然后提交到自己的仓库暂时保存。我们把自己的这个NexT仓库作为hexo仓库的
submodule保存。
- 搭建过程
安装npm、nodejs和hexo
sudo apt install npm nodejs
sudo npm install -g hexo-cliNote: 上面安装的nodejs是10.x.x的,后面生成博客的时候会报错,我们这里需要安装
12.x.x的nodejs版本。nodejs的版本可以通过node -v 来看。安装12.x.x nodejs
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudp apt update
sudo apt install -y nodejs下载hexo和NexT
mkdir hexo; cd hexo
hexo init blog
cd blog
sudo npm install把NexT fork到自己的github, 我们用url_priv_next表示自己NexT的github仓库地址。
创建一个空的github仓库用来存放hexo代码, 我们用url_priv_hexo表示自己的这个hexo
仓库的github地址。在hexo仓库把自己的NexT仓库设置成自己的hexo仓库的submodule:git submodule add url_priv_next themes/next
到这里为止,基本的仓库以及他们之间的关系我们都搞定了。我们看看hexo里几个目录
里放什么:source里放博客相关的原文件,其中包括md文件和相关的图片;themes放各种
主题,所以NexT也放到这个目录下;scaffolds放各种模版,比如后面会讲到的生成文章
就会默认用到scaffolds/post.md这个模版,所以我们更改这个模版生成的文章也会带上
相关的改动,如下的description就是这样的一个例子, draft.md这个模版可以用来生成
草稿文档,比如我们可以用hexo new draft “draft_1”来生成名字是draft_1的草稿文档,
这个草稿文档以draft.md为模版,存放在source/_drafts下;public用来放后面生成
的html文档;node_modules是一些和Hexo nodejs相关的东西。配置hexo以及NexT的配置文件
如上的配置已经可以生成静态网页。出于个人偏好,我自己的配置文件的改动如下,
具体的改动可以看相关地方的注释:
1 | hexo _config.yml |
1 | NexT _config.yml |
添加文章和生成静态网页
hexo n “文章名字”
hexo clean && hexo g会在public目录里生成相关的静态网页,把public里的内容copy出来然后push到如上的
username.github.io仓库里。本地调试的话可以先运行: hexo server, 然后在本地浏览器里通过http://localhost:4000
观察生成的静态网页。保存本地改动到GitHub
cd hexo/blog; git add <改动文件>; git commit -s -m <改动描述>;
cd hexo/themes/next; git add <改动文件>; git commit -s -m <改动描述>;
git remote add url_priv_hexo
git push –recurse-submodules=on-demand origin master:master在其他地方可以使用如下的方式迭代clone hexo和NexT仓库:
git clone –recursive url_priv_hexo
最后整理于 2025-11-11