前几天把 hexo blog 迁移到阿里云服务器,全程看别人的文章,每篇文章描述的方式不尽相同,加之软件环境的不同,再加之我的理解能力短板,中间走了好几次弯路,配完之后,对整体过程加深了理解,之后又重新看了 git hook 的文档,结合配置过程,这里做一次小记。

注:

  • 因为是迁移,所以这篇笔记不会介绍 Hexo 相关用法。
  • 网上详细的教程非常多,这里细节不做详述,只会总结整体流程以及过程中遇到的坑

之前使用 Hexo 部署静态博客到 Github 或者 coding,也没有细究实现原理,但是一直在折腾,后来看到了下面这张图,这是从 hexo d -g 命令一直到浏览器访问到博客页面的整个流程的架构图。
在部署之前看懂这张图,部署过程会十分流畅。

流程架构

  • Hexo 文件结构下,\source 存放所有 markdown 原文件,我们写的文章 存放在 \source\_post 目录下
  • hexo generate 命令将 \source 下的 markdown 文件编译为 html 文件存放到 \public 目录下,并且根据时间、tag、category 等生成了索引页面。
  • hexo deploy 命令将把 \public 目录下内容推到服务器。
  • 现在博文已经在服务器了,只不过是在仓库里,我们将内容 checkout 或者 clone 到某个可以通过 nginx 访问的目录下,例如 \var\www(如无 www,可以新建),注意:不要放在用户文录下
  • 通过 nginx 或者其他服务器,将静态站点暴露出去,到这里,所有的核心工作已经完成了

DIY

如果需要 DIY,可以分以下三步走

  • 搭建 Git 服务器:中英文链接在文末,可能需要花点时间
  • 编写 post-receive 脚本:中英文链接在文末,这一步,可以简单粗暴
  • 配置 nginx:配置 nginx 服务器,这个也很简单

仅供参考

关于 Git 服务器,可以参考 Git 官网文档,或者是廖雪峰先生的教程,做到正常推拉即可。

关于 git hooks,昨天写的小记 Git Hooks,可以了解下
上面我说这一步可以简单粗暴,下面是我的服务器上的 post-receive 脚本,我把代码 从仓库直接 clone/var/www/hexo 目录下

1
2
3
4
#!/bin/sh
unset GIT_DIR
cd /var/www/hexo
git pull origin master

关于 nginx 配置

1
2
3
4
5
6
7
8
9
10
11
12
server  {
# 指定端口
listen 80;
# 绑定域名
server_name localhost www.lijundong.com lijundong.com;
access_log /var/log/nginx/domain1.access.log;
# 入口文件
index index.html index.htm;
# 博客路径
root /var/www/hexo;
error_page 404 /404.html;
}

教程虽好,且看且学习,知其然,更应知其所以然

晚安!

参考: