使用 rsync 来部署 Hexo 博客

解决了一个不大不小的问题

起因

之前用过 Typecho 、WordPress 搭建博客,都能够很方便的部署在服务器上。之所以换 Hexo,是因为 Typecho 和 WordPress 都用的 PHP,比较吃性能。而我囊中羞涩,用不起高配的服务器,遂转 Hexo。
Hexo 在部署上比较常用的是 git(能够很方便的部署在 GitHub 之类的代码托管平台)
但部署在服务器上,用 git 就会有一些不方便了,毕竟 git 更倾向于代码托管的用途,并不需要那么多的 rollback 备份。
我之前采用的是 sftp,但是 sftp 我在部署博客时有一些问题,表现为推送时卡死。
所以我被迫用了 rsync
hexo-deployer-rsync 项目:https://github.com/hexojs/hexo-deployer-rsync/

用法

安装插件

在博客目录装一下这个插件

1
npm install hexo-deployer-rsync --save

如果是 npm 访问较慢,可以使用 cnpm 装(前提是你已经装了 cnpm)。

1
cnpm install hexo-deployer-rsync --save

cnpm可以这么装

1
npm install -g cnpm -registry=https://registry.npmmirror.com/

增加部署配置

根据插件的介绍,他的使用方法为在博客源码目录下的 _config.yml 文件中 Deploy 下添加一行
请注意在部署的服务器上添加你的 SSH 公钥,否则部署会出问题

1
2
3
4
5
6
7
8
9
10
- type: rsync
host: <host># 服务器的地址,例如 1.1.1.1
user: <user># 用户名,例如 root
root: <root># 同步的目录,例如 /usr/share/nginx/html/
port: [port] # SSH 端口,例如 22
delete: [true|false] # 是否删除旧文件,默认为删除
  args: <rsync args> # 可选,rsync 的附加参数,例如 --chmod=755,可以防止因为权限问题导致访问出现问题,例如 403(
rsh: <remote shell> # 可选,输入需要远程 shell 执行的指令,(我没用过)
verbose: [true|false] # 是否显示调试日志,默认为显示
ignore_errors: [true|false] # 是否忽略错误,默认为否

最终的效果应该是这样的

多个部署需要在 type 前加上一个 - ,如果只有一个部署可以不加 -

题外话

这篇文章是因为今天(5.23)有朋友在问我怎么部署的时候顺带想到的,于是乎就更新了下,顺带把 argsrsh 两个参数也加上了,可能之后这玩意再加新参数的话,我还会更新(可能的话

后记

这篇文章是我今天在给一个朋友聊天的时候突然想到的,这个朋友今天把他的博客转到 Hexo 了,这充分说明轻量才是 yyds(笑)