通过hexo-deployer-rsync部署Hexo博客到VPS主机

原来Hexo博客托管在GithubCoding,后来买了一台VPS用于翻墙,想着直接将博客部署到VPS上面,查了官网部署方式,可通过hexo-deployer-rsynchexo-deployer-ftpsync两种方式推送到VPS主机,尝试了FTP方式,不太稳定;今天通过linux的rsync方式从windows客户端平台部署到linux平台。

VPS主机安装rsync服务

我购买的VPS主机是Centos7 64位操作系统。

安装rsysnc及xinnetd

  • 执行以下命令:
1
2
yum install rsync
yum install xinetd
  • 检查是否安装成功
1
2
3
4
# rpm -qa|grep rsync
rsync-3.0.9-17.el7.x86_64
# rpm -qa|grep xinetd
xinetd-2.3.15-13.el7.x86_64

修改/etc/xinetd.d/rsync配置文件

修改/etc/xinetd.d/rsync配置文件,若没有该文件,则新建一个,将disable=yes改成disable=no

1
2
3
4
5
6
7
8
9
10
service rsync
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}

修改/etc/rsyncd.conf配置文件

修改/etc/rsyncd.conf,主要包括账号密码文件路径、同步路径等内容,信息如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#****全局参数*****
# 服务监听端口,默认873,我改了好像没用,有知道原因的朋友可以告知一下
port=873
# 运行RSYNC守护进程的用户
uid=root
# 运行RSYNC守护进程的组
gid=root
# 不使用chroot
use chroot=no
# yes只读 值为NO意思为可读可写模式,数据恢复用NO
# read only=no
# 允许访问的IP,*表示所有IP都可以访问
hosts allow=*
# 最大连接数为4
max connextions=4

#*****模块参数*****
# 这里是认证的模块名,在client端需要指定
[blog]
# 需要做镜像的目录,不可缺少
path=/usr/local/nginx/site/xxx
# 这个模块的注释信息
comment=deploy blog
# 可以忽略一些无关的IO错误
ignore errors
# yes只读 值为NO意思为可读可写模式,数据恢复用NO
read only=no
# 不允许列文件
list=no
# 认证的用户名,如果没有这行则表明是匿名,此用户与系统无关
auth users=root
# 密码文件位置,认证文件设置,设置用户名和密码
secrets file=/etc/rsyncd.secrets

设置/etc/rsyncd.secrets认证文件

在上边的配置文件中已经写好路径,/etc/rsyncd.secrets(名字随便写,只要和上边配置文件里的一致即可),格式(一行一个用户),该账号密码是linux中存在的

1
root:xxxx

配置文件授权

1
2
chown root.root /etc/rsyncd.*
chmod 600 /etc/rsyncd.*

重启xinetd服务

  • 重启服务
1
systemctl restart  xinetd.service
  • 检查是否启动成功
1
2
# netstat -an | grep 873
tcp6 0 0 :::873 :::* LISTEN

Windows客户端安装cwRsync客户端及配置

下载cwRsync客户端安装程序,链接:http://pan.baidu.com/s/1o8UJPJO 密码:oahu

安装cwRsync_4.1.0安装程序

  • 拷贝压缩包cwrsync.cmd脚本并覆盖安装程序目录下的cwrsync.cmd

  • [cwRsync_HOME]/bin加入path变量

  • 执行cwrsync.cmd,检查是否在[cwRsync_HOME]下创建home/[user]/目录。[注意:必须执行,否则通过ssh-keygen.exe生成秘钥文件时会提示目录创建失败]

通过cwRsync下的ssh-keygen.exe生成秘钥文件

CMD进入[cwRsync_HOME]/bin,执行如下命令:

1
ssh-keygen.exe -t rsa

一直回车直到完成命令,会在[cwRsync_HOME]/home/[user]/.ssh目录下生成id_rsaid_rsa.pub文件。

id_rsa文件授权

进入[cwRsync_HOME]/home/[user]/.ssh目录,给id_rsa授权:

1
chmod 600 id_rsa

若不授权,则在登录时,会出现如下错误(我在Win10下出现,Win7下没有问题):

aa24e6a7975c40f0/49b8264667d74bc5bdb1d1b6c1385de9.png

添加公钥到VPS主机

登录到VPS主机,进入目录 ~/.ssh/ ,将公钥id_rsa.pub拷贝至该目录,并执行如下命令:

1
2
cat id_rsa.pub >> authorized_keys
chmod 700 authorized_keys

测试是否配置成功

1
2
# ip 为VPS主机地址
ssh root@ip

首次登录时,需要输入root用户密码,完成登录后,会在[cwRsync_HOME]/home/[user]/.ssh目录下生成known_hosts文件。

配置Hexo发布方式

安装hexo-deployer-rsync

1
npm install hexo-deployer-rsync --save

修改_config.yml配置,参考

1
2
3
4
5
6
7
8
9
deploy:
type: rsync
host: <host>
user: <user>
root: <root>
port: [port]
delete: [true|false]
verbose: [true|false]
ignore_errors: [true|false]

aa24e6a7975c40f0/7e20ab2458944f32adee8cc504aada16.png

部署测试

1
hexo d