本博客目前是部署到github上,但是加载速度非常之慢,就需要部署到自己的VPS上,由于有ssh权限,就通过hexo-deployer-rsync插件来同步数据到VPS主机上。由于hexo-deployer-rsync就是调用rsync这个命令使用ssh的方式去同步数据的,所以请先查看 rsync教程 这个教程。
安装插件
Hexo 的 hexo-deployer-rsync 部署方式,实际是执行 Rsync 命令通过 SSH 连接服务器进行文件同步。下面就是 Hexo 根据默认配置实际执行的 Rsync 命令:
1 | $ rsync --delete -v -az -e "ssh -p 端口号" /path/to/public/ 用户名@服务器IP:/path/to/root |
所以,要使用这用部署方式,你要有一台服务器,本地和服务器都必须安装 Rsync,并且有一个可以通过 SSH 密钥登录服务器的账号。当然,首先需要在 Hexo 初始化的目录下安装 Rsync 插件:
1 | $ npm install hexo-deployer-rsync --save |
安装Rsync
由于需要在windows机器上面运行rsync,所以就需要安装win版的rsync,即 cwRsync 的客户端可以与 Linux系统上的 Rsync 进行文件传输。cwRsync 官方目前已不再提供免费版,收费版 39 美元一年,不过还是可以找到以前发布的4.1.0 免费版客户端,下载cwRsync
客户端安装程序,链接:http://pan.baidu.com/s/1o8UJPJO 密码:oahu
。
或者通过本站下载,cwRsync下载
安装cwRsync客户端最好是直接安装在C盘下,不要安装在C:\Program Files
,需要将安装目录下的 bin
目录的完整路径添加进 Windows 系统环境变量中的 path
变量(再次强调:系统环境变量,不是用户环境变量),这样才能在任意位置使用 rsync
命令。配置好环境变量后然后按 win + r
快捷键调出运行窗口,输入cmd回车打开命令窗口。
在命令窗口输入 rsync
命令就可以看到帮助信息了。值得一提的是,可以在 cwRsync 的 bin
目录中看到 ssh-keygen
等脚本,用它来生成密钥。
- 执行
cwrsync.cmd
,此脚本是检查cwRsync安装目录下面有没有创建home/%USERNAME%/
目录。[注意:必须执行,否则通过ssh-keygen.exe生成秘钥文件时会提示目录创建失败] - 运行
ssh-keygen.exe -t rsa
一直回车直到完成命令,自在/home/%USERNAME%/.ssh
下面生成了id_rsa
、id_rsa.pub
文件。其实也是在cwRsync的安装目录下生成配置。如果有安装过git,那么git所使用的密钥会生成在C:\Users\当前用户名\.ssh
目录下。注意是一样的。 - 将id_rsa.pub传到vps主机上,然后
cat id_rsa.pub >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys
- 测试ssh是否配置成功:cwRsync安装路径+ssh root@ip,不需要输入密码就表示配置正常了。
- 上一步成功之后,
rsync -v -az -e "ssh -p 22" --chmod=Dugo+r,Dugo+x,Du+w,Fugo+r,Fu+w README.md root@ip:/tmp
看是否成功,注意,—chmod是指会修改权限,目录权限为755,文件权限为644。
配置 Hexo
打开 Hexo 的配置文件 _config.yml
,关于部署的配置如下:
1 | deploy: |
参数介绍:
参数 | 描述 | 默认值 | 对应 Rsync 命令选项 |
---|---|---|---|
host |
远程主机的地址 | 服务器 IP | |
user |
SSH 用户名 | 用户名 | |
root |
要同步到服务器的哪个目录下 | /path/to/root | |
port |
SSH 端口 | 22 | 端口号 |
delete |
删除远程主机上的旧文件 | true | –delete |
verbose |
显示调试信息 | true | -v |
ignore_errors |
忽略错误 | false | –ignore-errors |
注意,跟官方的参数相比,多了args,设置文件权限。
其中 delet
,verbose
,ignore_errors
这三个参数推荐按照默认值进行配置。
port
是服务器的 SSH 端口,系统默认的 SSH 端口都是 22
,而不是文档说的 Rsync 的监听端口(默认 873
)。
配置到这里,至少和服务器的通信是没有问题的。也就是说,Hexo 这时候是可以使用 Rsync 命令来启动服务器上的 Rsync命令了。如果你足够”幸运”的话,现在已经可以使用 hexo g
命令来部署你的网站了。同样,你也可以用文章最开始的那个 Rsync 命令同步你的网站到服务器了。