Hexo的自动化部署折腾记录

Hexo作为一个静态博客系统,一般都是部署到Github或Coding等平台,零成本就能搭建起一个博客,利用插件就可以直接推送到Github,但是如果利用这个插件推送到自己的服务器就需要折腾一下了

在服务器上建立远程仓库

需要在服务器上建立一个中心仓库,本地生成的静态文件会推送到这个仓库

首先需要安装git,pacman -S git即可

建立一个文件夹来保存仓库

1
2
cd /home
mkdir git

为了安全,需要新建一个用户git并禁用shell权限来管理仓库,由于Archlinux自动建立好了我也就不赘述了,只需要更改一下用户的主目录即可,usermod -d /home/git -m git

建立一个空仓库

1
git init --bare /home/git/hexo.git

由于中心仓库是无法直接看到代码的,所以需要再clone一遍仓库才能看到推送上来的静态文件

1
git clone /home/git/hexo.git

为了方便也可以设置用公钥登录,免得每次都要输密码

设置远程仓库的hooks

git的服务端有个hook可以在收到推送之后执行一个脚本,可以利用这个来自动更新静态文件

编辑/home/git/hexo.git/hooks/post-receive,没有就新建一个,加入以下内容

1
2
3
4
#!/usr/bin/bash
unset GIT_DIR
cd /home/git/hexo
git pull

赋予执行权限

1
chmod +x /home/git/hexo.git/hooks/post-receive

最后更改所有者,避免权限问题

1
chown git:git -R /home/git

这样在客户端推送更新到服务器时就会自动拉取新的静态文件

配置Nginx

建立软连接

1
ln -s /home/git/hexo /srv/http/hexo

将Nginx虚拟主机的的根目录设置为/srv/http/hexo即可

本地Hexo配置

编辑Hexo的_config.yml配置文件,修改为

1
2
3
4
deploy:
type: git
repo: git@yooomu.com:/home/git/hexo.git
branch: master

注意把域名(或IP)修改为自己的

这样本地执行hexo d就会触发自动部署流程

Hexo的自动化部署折腾记录

https://jktu.cc/Hexo的自动化部署折腾记录/

作者

udp_bbr

发布于

2019-03-09

更新于

2020-03-25

许可协议