Hexo各种一键部署方式的体验
前言
hexo本身提供了好多种一键部署的方式,在博客创建快一年的时候,我尝试了一下各种简便一键部署方式,但是最后,我还是放弃了。
如果你的博客部署在github pages抑或是linux服务器上,你可能根本无法遇到这些烦恼,因为你可以通过hexo-deployer-git
一键部署到github,或者是在linux服务器上部署一个git仓库。而我当初偏偏选择了使用windows server,才导致了昨天+今天的痛苦。
FTP一键部署
FTP应该算是最久远的一种文件传输协议了,hexo文档的一键部署中提供了这种方式。按照文档,你首先需要安装hexo-deployer-ftpsync
。
npm install hexo-deployer-ftpsync --save |
然后在hexo的配置文件中添加对应的配置:
deploy: |
我使用宝塔面板为目录开启了ftp,然后兴致冲冲地准备尝试一键deploy,您猜怎么着,直接报错了。看样子并非是配置内容的问题,也并非服务器ftp功能的问题(在filezilla可以正常上传)。从另一个角度来说,即便这种方式可行,也不是很推荐。因为FTP的安全性并不高,其次,上传大量文件有较大的机率失败。
SFTP一键部署
SFTP是FTP的后辈,但是在安全性上有所改进。传言它比FTP多了一个加密解密的环节所以上传速度较慢,但实际体验上来看速度并没有明显的区别。要使用SFTP一键部署,首先需要安装hexo-deployer-sftp
插件。
$ npm install hexo-deployer-sftp --save |
然后在hexo的配置文件中添加对应配置:
deploy: |
如果你不用私钥而是使用密码和没有其它需求的话,后面三项配置可以直接删掉。Filezilla server不支持开启SFTP,所以你需要额外的SFTP服务端来完成。我测试了好几个服务端的软件,比如最多人推荐的freesshd,也包括coreFTPserver和它的mini版。
在配置好以后我尝试了hexo deploy,嗯,快速且完整地上传了所有内容,很棒!但是第二次第三次第N次尝试的时候,发现SFTP插件一键部署的方式也存在问题。它确实可以正常地删除应当删除的文件,也可以上传本地新增的文件。但是我hexo有一个目录是tags,tags文件夹下有非常多的文件夹,再下一层才是html页面,不知道是否是这个原因,它在服务器目录存在文件的时候,可能出现无法删除需要删除的文件的情况,在tags目录下问题尤其严重。
简而言之,SFTP也非常不可靠!
Rsync一键部署
在查了无数网页,看了无数的issue之后,我发现有一个issue里有人提到了rsync这种方式,比SFTP更快,更方便。
于是我在服务器安装了cwRsync server
,按照网上的文档配置好之后,在本地telnet ip+端口,返回的内容表示我已成功在服务器上启动了cwRsync。这其中无数次安装卸载安装启动就不说了。最后我安装了 hexo-deployer-rsync
插件:
$ npm install hexo-deployer-rsync --save |
并在hexo的配置文件里添加了对应的配置内容:
deploy: |
等等!配置内容里没有密码这一项,那么本地和服务端是如何验证身份并传输数据的呢?我搜了好几篇文章,终于看到有人说是通过.ssh里面的密钥验证,于是我把本地的.ssh文件夹复制到服务器对应的用户文件夹下然后deploy,结果也失败了。
此刻,我只想大声问:
还有一个一键部署的办法就是使用hexo-deployer-git,然而在winserver上部署git仓库还要用到java??罢了罢了。我还是老老实实用复制粘贴的方式来更新吧,虽然步骤要繁琐那么一点点,但是速度又快又稳定。
最后
winserver在十年前可能还是国内最流行的服务器系统,因为windows用户数量庞大,加上界面又可视化,比起linux的入门难度低了不止一个等次。当初我就是考虑到这一点,加上winserver可以挂机一些软件,所以选择了安装这个系统。但是随着时间的发展,linux已经成了众多服务器的首选系统,如今winserver的生态可能远远比不上linux了。
回想起来,如果我安装的是debian或者其它linux衍生系统,那么我是不是早就可以轻松解决这个一件部署的问题了?