## Hexo 各种一键部署方式的体验 – 笔记
### 一、 文章概述
– **作者**: **瓦解**
– **平台**: **个人博客 (Hexo)**
– **主题**: **Hexo 博客一键部署方式的探索与体验**
– **时间**: **博客创建约一年后**
– **主要内容**:
– 作者尝试了多种 Hexo 博客的一键部署方式,包括 FTP、SFTP、Rsync 等,但最终都因各种问题放弃了这些方法。
– 详细描述了每种部署方式的配置过程、遇到的问题以及最终结论。
– 反思了选择 Windows Server 作为服务器操作系统带来的不便,并建议使用 Linux 系统以获得更好的生态支持和部署体验。
### 二、 各种一键部署方式体验
#### 1. **FTP 一键部署**
– **概述**:
– FTP 是最传统的一种文件传输协议,Hexo 提供了通过 FTP 进行一键部署的方式。
– **配置步骤**:
1. 安装 `hexo-deployer-ftpsync` 插件:
“`bash
npm install hexo-deployer-ftpsync –save
“`
2. 在 Hexo 配置文件 `_config.yml` 中添加以下配置:
“`yaml
deploy:
type: ftpsync
host: <host>
user: <user>
pass: <password>
remote: [remote]
port: [port]
ignore: [ignore]
connections: [connections]
verbose: [true|false]
“`
– **问题与结论**:
– 作者使用宝塔面板开启 FTP 后,尝试一键部署时直接报错。
– 即使配置正确,作者也不推荐使用 FTP 进行部署,原因如下:
– **安全性低**: FTP 传输数据时未加密,存在安全隐患。
– **易失败**: 上传大量文件时容易失败。
#### 2. **SFTP 一键部署**
– **概述**:
– SFTP 是 FTP 的安全版本,增加了加密解密环节。
– **配置步骤**:
1. 安装 `hexo-deployer-sftp` 插件:
“`bash
npm install hexo-deployer-sftp –save
“`
2. 在 Hexo 配置文件 `_config.yml` 中添加以下配置:
“`yaml
deploy:
type: sftp
host: <host>
user: <user>
pass: <password>
remotePath: [remote path]
port: [port]
privateKey: [path/to/privateKey]
passphrase: [passphrase]
agent: [path/to/agent/socket]
“`
– **注意**: 如果使用密码而非私钥,可以省略 `privateKey`、`passphrase` 和 `agent` 配置项。
– **服务器端**: 需要安装支持 SFTP 的服务器软件,例如 freesshd、coreFTPserver 等。
– **问题与结论**:
– 初次部署时,SFTP 插件可以快速且完整地上传所有内容。
– 但在后续尝试中,作者发现以下问题:
– **删除文件问题**: 当服务器目录中存在文件时,插件可能无法删除需要删除的文件,尤其在 `tags` 目录下问题严重。
– 结论: SFTP 部署方式也不可靠。
#### 3. **Rsync 一键部署**
– **概述**:
– Rsync 是一种高效的文件传输工具,Hexo 提供了通过 Rsync 进行一键部署的方式。
– **配置步骤**:
1. 在服务器上安装 `cwRsync server`。
2. 按照网上文档配置 Rsync 服务器。
3. 使用 `telnet ip+端口` 测试连接,确认 Rsync 服务器已启动。
4. 安装 `hexo-deployer-rsync` 插件:
“`bash
npm install hexo-deployer-rsync –save
“`
5. 在 Hexo 配置文件 `_config.yml` 中添加以下配置:
“`yaml
deploy:
type: rsync
host: <host>
user: <user>
root: <root>
port: [port]
delete: [true|false]
verbose: [true|false]
ignore_errors: [true|false]
“`
– **注意**: 配置文件中没有密码项,身份验证通过 SSH 密钥实现。作者将本地的 `.ssh` 文件夹复制到服务器对应用户文件夹下,但部署仍然失败。
– **问题与结论**:
– 作者遇到了身份验证问题,部署失败。
– 结论: Rsync 部署方式配置复杂,且存在身份验证问题。
#### 4. **其他方法**
– **Git 部署**:
– 作者提到可以使用 `hexo-deployer-git` 进行部署,但需要在 Windows Server 上部署 Git 仓库,并使用 Java,这增加了复杂性。
– **复制粘贴**:
– 作者最终选择使用复制粘贴的方式进行更新,虽然步骤繁琐,但速度更快、更稳定。
### 三、 总结与反思
– **Windows Server vs. Linux**:
– 作者反思了选择 Windows Server 作为服务器操作系统带来的不便:
– **生态支持不足**: 与 Linux 相比,Windows Server 的服务器软件生态不够完善,例如缺乏对 SFTP 的原生支持。
– **部署难度较大**: 在 Windows Server 上进行一些部署操作(例如 Rsync)更加复杂。
– 作者建议使用 Linux 系统(例如 Debian)来搭建 Hexo 博客,以获得更好的生态支持和更简便的部署体验。
### 四、 其他建议
– **使用 CI/CD 工具**:
– 作者没有提到使用 CI/CD 工具(例如 GitHub Actions、Travis CI 等)进行自动化部署,这可以简化部署流程,并提高部署效率。
– **使用 Docker**:
– Docker 可以将 Hexo 博客及其依赖项打包成容器,进一步简化部署过程,并提高环境的一致性。
### 五、 总结
本文详细介绍了作者在 Windows Server 上尝试 Hexo 博客各种一键部署方式的过程和经验教训。 作者最终放弃了这些方法,选择了更传统但更稳定的复制粘贴方式,并建议使用 Linux 系统以获得更好的部署体验。
暂无讨论,说说你的看法吧