Hexo 提供多种部署方式选择,详见 官方文档,考虑到 GitHub pages 在国内感人的访问速度,本站决定部署到国内个人 vps 上,采用 Git Hooks 自动部署的方案。

默认服务器已安装好 git,并配置好 ssh 访问。默认服务器已安装好 nginx,并有可使用的域名。

# 原理

# Git hooks

Git hooks 是在 Git 仓库中特定事件(certain points)触发后被调用的脚本,通过钩子可以自定义 Git 内部的相关(如 git push)行为,在开发周期中的关键点触发自定义的行为。

Git hooks 有两种类型:客户端的和服务器端的,客户端的 hooks 由诸如提交和合并这样的操作所调用,服务端的 hooks 作用于诸如接收被推送的提交这样的联网操作。

# 流程

  1. 用户在客户端执行 git push 操作
  2. 远程仓库发现有用户执行了 push 操作,就会自动执行一个脚本 post-receive
  3. 在 post-receive 脚本中,将 git 仓库的代码拷贝到 web 站点目录下

# 配置

# 服务器配置

  1. 创建目录并初始化一个 git 裸仓库
mkdir -p /home/hexo
cd /home/hexo
git init --bare blog.git

使用 --bare 参数,Git 就会创建一个裸仓库,裸仓库没有工作区,我们不会在裸仓库上进行操作,它只为共享而存在。

  1. 配置 git hooks
# 进入 blog.git 下的 hooks 目录
cd /home/hexo/blog.git/hooks
# 新建 post-receive 并写入命令
vim post-receive
# 要写入的内容如下:
git --work-tree=/www/hexo --git-dir=/home/hexo/blog.git checkout -f
# 保存后赋予可执行权限
chmod +x post-receive

# 本地配置

  1. 安装 hexo-deployer-git 包
npm install --save hexo-deployer-git
  1. _config.yml 文件中增加如下配置:
deploy:
- type: git
  repo: root@your server ip:/home/hexo/blog.git
  branch: master

# 使用

执行如下命令即可将本地内容自动部署到远程服务器上

hexo clean
hexo g
hexo d
此文章已被阅读次数:正在加载...更新于

请我喝杯咖啡吧☕️

木亦 微信支付

微信支付

木亦 支付宝

支付宝