hexo使用rsync部署发布

hexo发布

hexo提供了很多种部署发布的工具集成,如:git、heroku、Netlify、Rsync、OpenShift、FTPSync和SFTP。

网上讲得比较多,就是git的集成发布了,因为多数人部署hexo都是发布到GitHub page的(免费好用,不过GitHub page屏蔽了百度爬虫,百度搜索引擎是搜索不出来的)。

然而我是部署在自有的服务器上,如果使用git,就需要在服务器上搭建git的服务仓库,只能说很繁琐,所以我自己写了两个简单的部署脚本来处理部署的事情,不过随着文章越来越多和越来越大,每次部署都需要很长的传输时间。

后续研究了一番Rsync,以及与hexo集成使用,终于发现了新大陆。

Rsync的服务部署

默认情况Ubuntu已经安装了rsync服务,如果没有安装也可通过apt-get安装.
sudo apt-get install rsync

hexo集成的rsync使用的是ssh底层,所以rsync的服务配置只需要简单配置一下即可,目的是需要rsync服务起来:

编辑配置文件:sudo vim /etc/rsyncd.conf

1
2
3
4
5
6
7
8
uid = nobody
gid = nobody
port = 873 #不会使用到这个端口号,防火墙可以屏蔽它
use chroot = no
max connections = 4
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log

服务启动:sudo rsync --daemon

hexo集成安装

npm install hexo-deployer-rsync --save

hexo配置部署

1
2
3
4
5
6
7
8
9
deploy:
type: rsync
host: 服务器host
user: ssh用户名
root: 你的站点根目录
port: 22 #ssh端口号
delete: true
verbose: true
ignore_errors: false

这里有一个要注意的点是,默认hexo使用的是~/.ssh/id_rsa(.pub)的那对ssh公私钥文件,官方文档也没看到哪里可以指定自己的ssh文件。

这里有两个解决方案,第一个是,在服务器的/.ssh/authorized_keys中添加本地的/.ssh/id_rsa.pub的公钥内容;

第二个是共用底层通道,通过配置~/.ssh/config

1
2
3
host *
ControlMaster auto
ControlPath ~/.ssh/control/%C

如果同一个服务器的连接,第二次就不需要校验的了,因为它们是共用同一个传输通道的,所以你只需要在打开一个窗口(以iterm2为例)ssh连接上服务器,在另一个本地窗口你的hexo博客目录执行hexo deploy即可。

最后,每次部署就不需要所有文件都部署传输一次了,rsync只会将新的和修改过的部署到服务器上。

  • 本文作者:二当家的
  • 本文链接: 2019/01/06/hexo使用rsync部署发布/
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!
  • 彩蛋: 左边Overview微信公众号二维码,扫描它获取更多技术信息