前言
之前一段时间都是用wordpress做个人博客,后来发现Git Page + hexo可以免费做静态页面……尝试了一下,后面就真香了(x)
关于wordpress和hexo孰优孰劣的问题这里不做详细讨论,只是介绍一下如何用Git Page+hexo搭建一个个人博客。二者具体的比较可以参考知乎的激(you)烈(hao)讨论。
简介
What’s GitHub Page
简而言之就是 白嫖
GitHub的服务器,通过仓库挂一个自己的静态网站。
What’s Hexo
一个渲染静态博客的框架,基于
Node.js,将markdown文件渲染成html文件
Hexo + Github Page
- 利用
hexo快速生成需要的页面,利用github在公网展示出来
创建Github Pages
创建一个公网能访问的page,让大家能看到你的博客,这里利用Github page
创建repo
创建一个名为xxx.github.io的仓库,且允许公网访问:

创建Pages
在里面随便新建一个文件,确保main分支有东西。
然后在Settings -> Pages里面设置分支和网站根目录:这里直接设置为main和/(root)。如果网页上传在其他分支上可以在这里修改。

此时访问https://test.github.io应该就能看到刚刚的网页了。(因为我已经开了一个xiabee.github.io,而免费版只能开一个网页,所以test.github.io就暂时无法展示)
环境搭建
Node.js
Linux用户:直接包管理器安装即可1
2
3# 例如Ubuntu
apt update
apt install nodejs包管理器找不到
nodejs的可以和Windows用户一样取官网安装。Windows用户:官网下载并安装
NPM
node.js一般自带npm,但是可能不是最新版的npm,直接更新即可1
2
3
4
5
6
7
8
9
10apt-get install nodejs-legacy
apt-get install npm
npm install -g n
# 安装n模块
n stable
# 升级nodejs到最新stable版本
npm install npm@latest -g
# 升级最新npm如果没有自带
npm可以去官网看看,手动安装npm
Git
HEXO
先装hexo-cli:
1 | sudo npm install -g hexo-cli |
本地调试
hexo根目录
选择一个空目录做为hexo的根目录,初始化并安装相关依赖:
这里建议把刚刚创建的Github Page的repo克隆下来,再把该目录删空作为根目录……不然可能会遇到分支没有共同基点不能合并的问题。
1 | hexo init |
常用hexo命令:
1 | hexo g # hexo generate |
访问http://localhost:4000,出现hexo页面说明渲染成功

这里我修改过主页,所以可能看起来和初始模板不太一样。
Tips:如果server一直起不来,可能是端口被占用了。Ctrl C 关闭服务器,运行 hexo server -p 5000 更改端口号后重试。
hexo常见目录结构
1 | ├── _config.yml # 网站配置信息 |
远程推送
把hexo推送到github中
安装hexo-deployer-git
1 | npm install hexo-deployer-git --save |
修改_comfig.yml
找到hexo根目录下的_config.yml,文末deploy:模块:
1 | ## Docs: https://hexo.io/docs/one-command-deployment |
这里是做了Gitee+GitHub双备份,如果不传gitee的话可以只写github的仓库地址。
此时指定hexo上传的网页文件为main分支,如果刚刚Github Page的分支不是main的可以修改一下……改哪个都可以,一致即可。

这里GitHub Pages用的就是main分支,不需要修改
推送
1 | hexo g |
此时访问公网地址,已经能看到该博客了:

写文章
编辑源文件
在_posts目录下创建markdown文件,仿照Hello World写就行:

然后hexo g -d,渲染、推送。
关于图床
如果是整个媒体库都上传到Github上的话,相当于是把Github作为图床了……然而众所周知Github在国内的速度非常非常慢。所以建议换一个好用的图床。
关于图床的推荐可以参考一下知乎。
这里我个人使用的是微博图床,配合Chrome插件新浪微博图床使用,可以直接微信截图到剪贴板,然后复制粘贴,灰常方便:

当然,用这个图床的前提是你得有一个微博账号(x)
Hexo备份
- 利用
Git分支 - 参考这篇博客