Hexo博客使用git插件结合cpanel自动部署

背景

最近折腾博客发现FTP插件上传发布网站还是比较慢,而且FTP传这么多文件经常超时导致hexo部署失败。所以又开始折腾新的部署方式了。

准备

hexo git 插件

首先是hexo官方网站关于git插件的介绍: git-deploy

git-deploy

cpanel git repo部署

我使用的主机厂商控制台是cpanel,刚好cpanel附带git version 插件支持自动化部署网站,相应的介绍页面:
guide-to-git-how-to-set-up-deployment

cpanel-pull-push

从图上可以看到,这个插件支持两种部署方式,一种是推送代码,用户电脑推送更新到cpanel管理的git仓库,然后就会自动部署了;另一种是拉取代码,用户推送代码到远程仓库,cpanel拉取远程仓库的代码,然后手工操作部署。当然是用推送方式部署更好啦。

当然要实现自动部署肯定还需要别的步骤,比如这个.cpanel.yml,这个文件定义了部署之后的操作:

cpanel-yml

使用这个插件建立能自动部署的私有仓库还必须有shell访问权限guide-to-git-set-up-access-to-private-repositories

cpanel-shell

实践

首先当然是需要有shell权限,这个需要联系主机商提供,我这是找了一周多才帮我处理的:

shell-access

然后是在cpanel控制台建立git私有仓库:

private-repo

在hexo目录使用npm 安装hexo git部署插件:npm install hexo-deployer-git --save
并进行插件配置:

config

编写.cpanel.yml定制自动部署操作:

deploy

这里有些小坑,我们需要调整hexo配置文件保证我们的.cpanel.yml能正常上传,默认git提交不会提交隐藏文件:

include

同时拷贝一份该文件到实际的git提交目录:

deploy-git

好了,现在测试部署吧,使用hexo cleanhexo g -d命令清理文件并部署,测试如下:

result

打开cpanel控制台,可以看到确实自动部署了:

result2

总结

使用git插件通过ssh部署果然方便多了,也没有卡顿了,终于可以告别ftp的烦恼了。