前言
我在 Windows 11 专业工作站版 23H2 环境下使用 nodejs v22.4.0
与 npm v10.8.1
安装了 Hexo,并打算将 Hexo 部署至服务器(系统镜像:Ubuntu 22.04,Rsync 版本:3.2.7)上,利用 hexo-deployer-rsync 插件,部署方式为 Rsync
。
首先要在本地和服务器上安装 Rsync ,服务器上一般默认已经安装好了,而 Windows 下安装 Rsync 有两种方式:
一是通过 Cygwin 安装
二是安装 cwRsync(Windows 下的 Rsync 程序)
然而我的本地 Windows 通过上述两种方式安装 Rsync 与 Linux 同步会出现如下报错:
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver] |
一开始我以为是本地与服务器的 Rsync 版本不一致导致的问题,于是我在服务器上重新编译安装了最新版本的 Rsync(Version 3.3.0),依然存在如上报错。
后来,我通过本地 CentOS 7 虚拟机进行测试两台 Linux 服务器之间的 Rsync 部署,能够成功部署 Hexo。所以,我打算在 WSL 上安装 Hexo,通过 WSL 上的 Rsync 程序向服务器部署 Hexo。
基于 WSL 的特性,我能够通过 Windows 文件资源管理器直接访问 WSL 内部文件,方便我管理和编辑 Markdown 文档。以下是详细的步骤,这里只介绍利用 WSL 通过 Rsync 向服务器部署 Hexo,其余部分我会在其他文章中介绍。
第一步 在 WSL 中安装 Hexo 及部署插件
我选用的 WSL 发行版为 Debian,其他 Linux 发行版均可参考此文。打开 WSL 终端,进入到用户的家目录下,通过下方命令安装 Hexo。
在家目录中创建 hexo
文件夹(可自定义文件夹名称),绝对路径为 /home/caisre/hexo
,进入该目录下,运行下方命令,Hexo 将会该文件夹中新建所需要的文件,完成初始化工作,具体内容可参考 Setup | Hexo 文档。
然后在此目录下,通过终端,运行下方命令,安装 hexo-deployer-rsync 部署插件。
第二步 修改 _config.yml
配置文件
在 /home/caisre/hexo
目录下找到 _config.yml
文件并修改配置,参考如下。
deploy: |
它可以在本地复制,通过 SSH 复制或拉取远程资源,或通过指定 Rsync 用户复制资源到远程主机或通过 Rsync 守护进程从远程主机拉取资源。我们这里是通过 SSH 复制或拉取,一般分为口令(密码)或公钥(无密码)传输方式。
主机名一般为服务器 IP 地址或其所绑定的域名。站点目录即为 Rsync 将生成的 Hexo 静态文件传输存放的地方,并要确保站点目录的所属者为该用户。用户即服务器登录账户,不建议使用 root
账户,安全性不高。
例如我在服务器上创建了 hexo
用户,指定登录 Shell 为 /bin/bash
,并在用户家目录下的 .ssh
文件中上传 SSH 公钥文件并将公钥文件内容添加至 authorized_keys
文件中。
在权限方面,要确保 .ssh
文件夹的权限为 0700,authorized_keys
文件的权限为 0600,两者所属者为 hexo
,否则在 Rsync 部署时会提示权限过高而报错。
而在 WSL 本地用户家目录 /home/caisre/.ssh
中要放置私钥文件和 config
配置文件,否则部署时仍会要求输入用户密码。配置文件内容如下。
Host 主机别名,可为绑定的域名 |
以上免密认证登录配置完成后,可以使用 ssh [user]@[hostname]
测试,根据提示首次连接需保存验证指纹信息,之后便能成功登录,无需输入密码。
第三步 部署 Hexo 至服务器
在本地 WSL 终端中,运行下方命令,即可将 Hexo 部署至服务器对应的站点目录中。
或者运行简写的命令 hexo g && hexo d
。