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 | uid = nobody |
服务启动:sudo rsync --daemon
hexo集成安装
npm install hexo-deployer-rsync --save
hexo配置部署
1 | deploy: |
这里有一个要注意的点是,默认hexo使用的是~/.ssh/id_rsa(.pub)的那对ssh公私钥文件,官方文档也没看到哪里可以指定自己的ssh文件。
这里有两个解决方案,第一个是,在服务器的/.ssh/authorized_keys中添加本地的/.ssh/id_rsa.pub的公钥内容;
第二个是共用底层通道,通过配置~/.ssh/config
1 | host * |
如果同一个服务器的连接,第二次就不需要校验的了,因为它们是共用同一个传输通道的,所以你只需要在打开一个窗口(以iterm2为例)ssh连接上服务器,在另一个本地窗口你的hexo博客目录执行hexo deploy
即可。
最后,每次部署就不需要所有文件都部署传输一次了,rsync只会将新的和修改过的部署到服务器上。