虽然平常写文章不多,但是有了这个功能还是能节省很多时间的。功能简单了点,原理是利用hexo的部署脚本hexo deploy,推送commit到云服务器,然后调用Githook功能,将编译好的html及其他文件移动nginx配置的文件夹下面。

一、云服务器配置

请先确保已经安装git,并配置好了用户和email。确保已经配置好了nginx。

1. 创建blog文件夹

首先创建blog文件夹,这就是nginx配置的博客的根目录,如果已经创建过,无需再创建

1
mkdir /var/www/blog

2. 初始化git仓库

然后创建git程序的文件夹和初始化hexo程序的git仓库hexo.git(仓库名称可自定义)

1
2
3
mkdir /var/www/git
cd /var/www/git
git init --bare hexo.git

3. 创建git hook

首先创建git hook文件

1
vim /var/www/git/hexo.git/hooks/post-receive

然后写入以下内容

1
2
#!/bin/bash
git --work-tree=/var/www/blog --git-dir=/var/www/git/hexo.git checkout -f

给文件增加可执行权限

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

二、本地配置

本地配置很简单,需要安装hexo-deploy-git库,并配置根目录下面的_config.yml文件中的deploy

1. 安装 hexo-deploy-git

可能hexo程序已经自带此依赖,可以在package.json里面查看是否已存在

1
npm install hexo-deploy-git -D

2. 配置 _config.yml

首先找到deploy配置项,type和branch按照下面配置不变
里面repo的组成方式是 (你的服务器用户)@(你的服务器ip):git仓库的绝对路径

1
2
3
4
deploy:
type: 'git'
repo: root@12.34.56.78:/var/www/git/hexo.git
branch: master

如果服务器使用的密钥登录,未防止出错,请先使用其他ssh工具登录一下服务器,
如果使用的是密码登录,接下来的操作中可能会需要输入你设置的服务器用户的密码

三、开始部署

首先使用hexo clean清空一下缓存
然后使用hexo g编译文件
最后使用hexo deploy命令部署到服务器(此步骤会在根目录下面创建.deploy_git文件夹)
等到终端提示 Deploy done: git 后就表示已经成功,可以访问浏览器查看页面或者去服务器/var/www/blog下面查看部署好的文件
部署成功