部署记录

关于使用HEXO部署的问题

前言

虽然hexo是一个轻量的静态博客框架,其搭建过程也足够的简便,不过依然有一些细节需要多加注意,避免再次入坑。

部署方式

通常情况使用git方式来完成

1
type: git

推动原理和直接在服务器部署一个git服务器一样,使用git账号将目标内容推送至服务器

1
repo: git@yourgithost:/your/git/repo

需要注意的是,部署的方式有很多,其原理就是通过所选择的type来确定所使用的推送协议。

关于hook

官方文档给出的示例是使用git的方式来部署到github上,但是有的小伙伴会有部署到自己的云服务器的需求,这样就不得不说一下使用git方式的原理,其实就是本地输入hexo deploy命令时,在项目根目录会生成一个.deploy_git目录,这里就存放了站点所有源文件并以一个git项目的形式初始化。接着会根据*_config.yml*中所指向的repo仓库进行推送,所以要想在云服务器上进行部署,必须得先将云服务器搭建成一个git服务器并且创建一个用于接受本地推送的git仓库。
但是通常远程仓库都是一个添加了--bare参数的纯存储的仓库,并不能直接指向给web服务,所以才需要另外创建一个目录比如/var/www/yourhexo,然后通过git的hook功能将该目录进行绑定,此时在云服务器上的git仓库接收到推送的同时,会将工作区的源文件“hook(钩)”到所绑定的发布目录,这样就可以通过web服务来发布我们的hexo博客了。


在远程仓库的hooks目录下创建post-update文件,并键入以下内容即可完成hook配置

1
2
#!/bin/bash
git --work-tree=/var/www/yourhexo --git-dir/var/repo/yourrepo checkout -f

-PS:post-update文件的权限也应该是git(发布目录权限同理),这样才可以保证在推送完成后能有足够的权限将数据同步到发布目录-


部署记录
http://example.com/2022/04/21/部署记录/
Author
John Doe
Posted on
April 21, 2022
Licensed under