在 VPS 上部署 hexo blog 有两种最常见的方式 ,第一种是最常见的做法是在 VPS 上搭建完整的 node 环境后用 nginx 反向代理本地 localhost:4000 然后实现访问;另一种类似于托管在 Github 之上仅需要 nginx 做静态环境(适合一些小内存的VPS),在本地生成静态文件后 Push 到 Server 端利用 Git hooks 自动实现部署到 nginx 根目录实现完成访问。

这里介绍下我用的第二种方案。

  1. 首先需要在服务器端搭建好 Git 和 Nginx 环境,然后创建 hexoBlog.git 文件夹并进行 Git 仓库初始化。
1
git --bare init
  1. 初始化完成后进入 hooks 目录下新建 post-receive 文件
1
vim post-receive
  1. 复制下面脚本
1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash -l
GIT_REPO='/home/git/Repository/hexoBlog.git' #指定git仓库目录

TMP_GIT_CLONE='/tmp/hexoBlog'

PUBLIC_WWW='/home/wwwroot/hexoBlog' #指定nginx 根目录

rm -rf ${TMP_GIT_CLONE}
git clone $GIT_REPO $TMP_GIT_CLONE
rm -rf ${PUBLIC_WWW}/*
cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}
  1. 赋予脚本执行权限
1
chmod  +x  pos-receive
  1. 本地进行部署
1
hexo d -g

部署成功后可以看到最新文件会自动同步至 nginx 根目录下,部署失败则会整体回滚不会影响之前的文件。