Hexo博客搭建

搭建思路

首先在本地通过 Hexo 编译 md 等文件生成静态页面,然后将静态页面 git push 推送到服务器的 bare 裸库

,裸库配置有钩子,若接收到推送则会触发 shell 脚本,将当前分支 git checkout 检出到一个指定的目录,最后配置 Nginx 来转发这个目录

注意,裸库每次接收到推送后,HEAD 就超前了之前检出到指定目录中的内容,此时再次触发分支检出,指定目录中的内容将被最新的提交覆盖

本地环境

安装 Node.js (至少 6.9 版本) 和 Git

安装 Hexo

1
npm install -g hexo-cli

创建站点

1
hexo init hexo_blog

安装相关依赖

1
2
cd hexo_blog
npm install

设置主题,例如选用 NexT

Hexo 项目中有两个 _config.yml 配置文件,根目录下的为站点配置,themes 目录下的为主题配置

克隆主题到博客目录的 themes 目录下

1
2
cd hexo_blog
git clone https://github.com/theme-next/hexo-theme-next themes/next

修改站点配置文件的 theme 字段,默认为 landscape

1
theme: next

写文章

可通过 Hexo 命令创建一个 md 文件

1
hexo new post testArticle

执行后会在 source/_posts 目录下生成一个 testArticle.md

1
2
3
4
5
6
---
title: testArticle
date: 2019-05-01 20:28:25
tags:
---
以上是Front-matter,在---下面写文章正文

执行 hexo new post 生成的 md 文件中的 Front-matter 默认值是根据 scaffolds 中的配置填充的,可以修改 scaffolds ,例如添加分类 categories、标签 tags 等

1
2
3
4
5
6
---
title: {{ title }}
date: {{ date }}
categories:
tags:
---

生成的 md 文件的名字默认为hexo new post 命令的参数值,可通过站点配置文件 new_post_name 字段指定文件名称,例如配置为

1
new_post_name: :year-:month-:day-:title.md

则生成的文件名即变为 2019-04-29-testArticle.md

默认的 URL Permalinks 配置为

1
permalink: :year/:month/:day/:title/

对应的 URL 为

1
http://www.52dadudu.com/2019/04/29/testArticle

可以使用 rozbo 写的工具,将标题和时间进行 md5 再转 base64,得到的 URL 为

1
http://www.52dadudu.com/posts/8ddf18fb.html

首先安装依赖

1
npm install hexo-abbrlink --save

站点配置文件

1
2
3
4
5
6
url: http://www.52dadudu.com
root: /
permalink: posts/:abbrlink/
abbrlink:
  alg: crc32  
  rep: hex   

若文章中有图片,则可以将图片都放在 source/images 目录下,通过 markdown 语法访问,例如

1
![](/images/image.jpg)

本地测试

编译生成的静态页面保存在 public 目录下

1
hexo generate

可以在本地启动测试服务,访问 http://localhost:4000/ 查看

1
hexo server

文章更新之后,为了防止出错可在编译之前先清除一次 public 目录

1
hexo clean

服务器环境

站点目录,即存放静态文件的路径 /hexo/www ,裸库路径为 /hexo/repo/hexo.git

1
2
mkdir -p /hexo/www
mkdir /hexo/repo

进入 /hexo/repo 并创建 hexo.git 裸库

1
2
cd /hexo/repo
git init --bare hexo.git

配置 hooks

1
vim /hexo/repo/hexo.git/hooks/post-receive
1
2
#!/bin/bash
git --work-tree=/hexo/www --git-dir=/hexo/repo/hexo.git checkout -f
1
chmod +x /hexo/repo/hexo.git/hooks/post-receive

配置 Nginx

1
vim /usr/local/nginx/conf/nginx.conf
1
2
3
4
5
6
7
server {
  listen 80;
  server_name www.52dadudu.com;
  root /hexo/www;
  index index.html;
  access_log /tmp/logs/hexo.access.log;
}

加载 Nginx 配置文件

1
/usr/local/nginx/sbin/nginx -s reload

从本地部署到服务器

首先要将本地的 SSH 公钥拷贝到服务器的 ~/.ssh/authorized_keys 中,配置 SSH Key 连接

安装 git 部署工具

1
npm install hexo-deployer-git --save

修改站点配置文件 _config.yml

1
2
3
4
deploy:
  type: git
  repo: root@www.52dadudu.com/hexo/repo/hexo.git
  branch: master

清除 public,编译,推送

1
hexo clean && hexo generate && hexo deploy

以上内容是玉山整理的笔记,如有错误还请指出