Hexo Blog 优化[06] - 使用 Rsync 部署
What?
将 Source 和 Public 分离,Source 及配置通过 git 服务器管理,Public 直接部署到网站。
Why?
之前的方案是直接通过一条git push命令,在将源码推送到 Git 服务器,自动通过 hook 更新网页内容。
(参考 Hexo Blog优化[03 - 01] - Nginx 与 Git 连接 (FCGI)). 该方案虽然解决
了一个命令可以搞定 source 上传和网页部署,但却同时带来 2 个问题:
- 写完 Post 后,想要部署到网站上看看时,还得 push 一下 git
- Public 的目录也要上传在 git 服务器
这个体验不完美。Hexo 本身提供了 generate 和 deploy 功能,而 deploy 就是专门用于部署的。故想利用 deploy 功能优化管理。
How?
Git 服务器管理就没什么特别之处了。主要是 hexo 的 deploy 功能,利用 rsync 将 public 目录同 步到 nginx 服务器。其本地 hexo 的配置也比较简单,安照官网介绍来就可以 (链接)。而 nginx 服务器 rsync 的配置参考(限制 ssh 只允许 rsync 命令)。
主要遇到的问题是 windows 下使用 rsync 的问题。在 windows 下,rsync 目前找到的是 cygwin 版本,它 不能与 windows 原生版本的 OpenSSH 工作。故还需把这个给禁了,然后再将 cygwin 的 ssh 拷出来用。也可 以下载现成的cwRsync。这里主要要注意两点:
- 建 2 个目录,一个是
etc/目录,里面放一个文件,名字为nsswitch.conf,文件的内容为一行db_home: windows即可(没这个文件,ssh 会使用 cygwin 的目录去找配置,从而导致失败); 另一个是bin/目录,里面放ssh,rsync等可执行文件和相关库文件。 - 将刚刚创建的
bin目录添加到path环境变量
配置好后,就可以用hexo g命令将public目录同步到nginx上去了。