通常搭建一个个人博客需要租用「虚拟服务器」,在服务器部署整个服务端,成本较高,维护麻烦
不同于自行部署整个服务端的成本高昂,使用静态网页的形式可以大大减少部署成本。
概述
GitHub 提供了一个免费的 300M 大小的免费空间供我们放置静态网页并直接访问,需要我们在GitHub新建一个特定名称的 Repo ,在推送静态网页到 Github 后即可访问特定域名访问博客。
以 GitHub 名 SUSTYuxiao 为例:
新建项目 SUSTYuxiao.github.io,部署后可通过 https://sustyuxiao.github.io 访问
hexo 是一个可以自动化生成 静态页面的工具,结合 GitHub 上丰富的主题,可以高效简单地部署个人静态博客。
本文不再赘述 Git 基本命令
hexo 官方文档 https://hexo.io/zh-cn/docs/
环境安装
作者环境为 linux(centos) , mac/win 用户参见官方文档
hexo 框架
hexo 需要依赖 git 和 Node.js ,如果没有安装则依次执行
1 | #install git |
执行以下代码完成 hexo 的安装
1 | $ npm install -g hexo-cli |
next 主题
安装主题前,先进行 hexo 项目的初始化
1 | $ hexo init <folder> #<folder>是即将创建的项目的文件夹的名字 ex. 「$ hexo init myBlog」 |
在工程目录下,执行
1 | $ git clone https://github.com/iissnan/hexo-theme-next themes/next |
参数配置
配置之前,大概了解一下项目文件树
1 | . |
_config.yml 为 hexo 工程的配置文件,称之为「站点配置文件」
_config.yml 文件同样存在于 主题目录 next 内,为next主题的配置文件,称之为「主题配置文件」
本文只介绍部分主要配置项,其他选项参见配置文件中的「注释」以及「官方文档」
站点配置
- title:
#此项为博客主页名称 - author:
#作者名 - language: zh-Hans
- theme: next #主题默认为 landscape 这里改为 next
hexo 自带部署功能,在站点配置文件 deploy 修改字段为
1 | deploy: |
据论坛反应, deploy 不稳定,后面我们使用 git 的方式直接部署。
主题配置
切换样式
1 | scheme: Muse |
头像设置
1 | avatar: http://example.com/avatar.png |
也可将图片放置在 source/images/
目录下
配置为:avatar: /images/avatar.png
菜单配置
1 | # ex. |
通过注释#
,控制,着重强调一下分类页面categories
,经过上述配置,主页即可看到「分类」项,但如果点击会出现 not found
分类页面配置
在工程目录下,首先执行
1 | $ hexo new page categories |
在 source 文件夹下即会出现 categories 目录,编辑目录内的文件 index.md
修改字段为
1 | --- |
即可正常显示分类页面
部署
编写文章
hexo 默认管理文章的方式有些繁琐,有兴趣请自行查阅官方文档
任选一个 markdown 编辑器,在撰写文档时,在文档头部增加以下字段
1 | --- |
博客页面的文章标题依赖 title
字段,排序默认依赖 date
字段
分类标签依赖 categories
字段, 其值第一项为一级分类名,第二项为二级分类名,以此类推…
准备部署
md 文件应放置在站点目录下的 source 目录下的 _posts 目录内
我们可以 markdown 编辑器直接管理 _posts
本文使用 Linux 虚拟环境,在 mac 与 linux 下分别安装了「坚果云」同步两者文档。
生成静态网站
依次执行
1 | $ hexo clean |
clean
用以清理缓存;g
为简写,功能为生成静态网页,输出目录为站点目录下 public 目录。
此时我们将 public 内文件 push 到 GitHub 即可访问。
本文使用
1 | $ git clone git@github.com:SUSTYuxiao/SUSTYuxiao.github.io.git |
克隆后,编写脚本文件方便后续部署。
1 | !/bin/bash |
保存文件,后缀名为.sh
,并执行以下代码以赋予文件执行权限
1 | $ chmod +x ./push.sh |
随后我们即可通过以下代码推送所有修改
1 | $ ./push.sh |
成品预览 https://sustyuxiao.github.io
仍存在的一个小问题是,执行./push.sh
后 GitHub Page 页面部分样式没有变化,需要再执行一次,或者修改脚本为
1 | !/bin/bash |
有解决方案的大佬希望告诉我一下呀