用git hooks自动化部署hexo
背景
hexo是知名的博客部署框架
,采用SSG(Static Site Generation)
的方式生成静态页面,结合使用github等托管平台可以快速部署我们的站点。hexo也给我们提供了支持部署的插件,安装完成以后我们可以使用hexo deploy
推送内容到托管平台。
虽然hexo已经给我们提供了一套方便的部署方案,但是使用hexo最大的痛点之一就是当我们要换设备时无法方便的迁移。因为hexo deploy
只负责把hexo生成的静态页面,也就是public
目录下的内容推送到托管平台,我们如果要迁移我们的文章到另一台机器,只能把文件夹拷贝过去,非常的不方便,如果我们意外丢失这个文件夹,那么我们原来的markdown
文章都会丢失。
今天要介绍的git hooks
就是解决问题的一套方案,我们用git
维护我们的hexo文件,不仅方便迁移,而且增加了维护历史版本的功能。
git hooks
开始之前还是先简单的介绍一下git hooks
钩子
可以简单的理解为在特定时机触发的程序。我们用git hooks来举一个简单的例子
1 | git init git-hooks-test |
我们可以看到很多的文件
我们以pre-commit
为例,这个文件中的脚本会在每次commit之前执行,我们来简单的测试一下,把pre-commit
的内容复制为下文。
在复制内容之前记得把sample删除,带这个后缀的钩子文件会被忽略
1 | !/bin/bash |
测试一下
1 | git commit -m 'test hooks' |
可以看到我们设置的hello world被打印出来,那么其它钩子也是同理的,不再说明
搭建环境
我们接下来分别搭建服务端和客户端的环境
服务端
node和git
操作系统为ubuntu
1 | sudo useradd hexo -m # 创建用户及其home目录 |
git hooks配置
接下来配置git仓库和git hooks
1 | cd /home/hexo |
配置如下
1 | !/bin/bash |
1 | 记得给执行权限 |
暂时这样配置就好了
nginx配置
接下来下载nginx
(这里下的nginx版本感觉过于落后,后面如果你的nginx没有相关文件那么只需要修改/etc/nginx/nginx.conf
里的root
位置就可以了)
1 | sudo apt install nginx |
找到配置文件中root
的配置,如果找不到可能是nginx版本不同,可以尝试直接修改nginx.conf
文件中的对应部分
1 | # 不同的版本可能默认的root位置不同,总之现在修改为我们需要的root |
然后重启nginx
1 | sudo nginx -s reload |
客户端
hexo环境创建过程不再重复
1 | hexo init myblog |
自己可以看到正确的提示信息就是配置好了
然后试着访问服务器ip,查看部署情况