在vps上搭建hexo

本文记录在vps上搭建hexo的过程。

在vps上搭建hexo,网络上已经有不少教程了,但是全部套路都是一样,大致流程如下:

本地搭建hexo环境 -> 配置hexo主题等 -> 本地编写md文件 -> 通过hexo d进行远程部署

这样的流程,有个最大的问题是,远程服务器只保存了最终渲染完成的html文件,每次更换电脑都需要重新部署环境,所以我就把hexo部署到了远程vps上,本地编写md,然后提交到远程git,由git的hook功能触发hexo进行渲染和部署,大致流程如下:

本地编写md -> 提交到vps上的git-repo -> post-receive -> hexo generate -> hexo deploy -> nginx

在远程仓库的hooks目录,创建post-receive文件,在这里进行hexo的渲染和部署:

1
2
3
4
5
6
#! /bin/bash

git --work-tree=/home/lniwn/hexo/source/ --git-dir=/home/git/repo/blog.git/ checkout -f
hexo --cwd /home/lniwn/hexo/ clean
hexo --cwd /home/lniwn/hexo/ g -d
cp -Rf /home/lniwnxxx/hexo/public/* /var/www/oaoa.me/

这样可以在任何地方编写md文件,写完之后通过git提交即可看到自动部署的信息

由于我创建了一个git用户,仅用于git相关操作,而我的登陆用户是lniwn,部署时经常会遇到权限问题,所以需要进行一些权限分配:

  • 将lniwn添加到git组 $ sudo usermod -a -G git lniwn
  • 修改hexo文件夹所属组 $ sudo chgrp git -R /home/lniwn/hexo/
  • 修改hexo文件夹组权限 $ sudo chmod g+rw -R /home/lniwn/hexo/

虽然每次git的push操作都会触发post-receive,从而进行自动部署,但是有时候还是希望手动部署下,所以写了个部署脚本auto-deploy-hexo,脚本很简单,就是以git用户执行post-receive文件:

1
2
3
#! /bin/bash

sudo -H -u git bash -c '/home/git/repo/blog.git/hooks/post-receive'
发布时间: 2017年12月20日 - 21时25分
更新时间: 2018年10月17日 - 21时42分
原始链接: https://oaoa.me/posts/5e9edc41/