Hexo-SFTP

简介

使用 SFTP 部署 Hexo 项目,即:使用 SFTP 将 Hexo 生成的的静态文件 (public 目录) 上传到服务器。

  1. 安装插件

    1
    npm install hexo-deployer-sftp --save
  2. 修改配置

    • 使用密码

      1
      2
      3
      4
      5
      6
      7
      8
      9
      deploy:
      - type: sftp
      host: host
      user: user
      pass: password
      remotePath: remote path
      port: 22
      forceUpload: false
      concurrency: 50

      修改 Hexo 配置文件 _config.yml 中的 deploy 选项,设置 concurrency: 50 避免出现因超时而导致文件上传不完整。

    • 使用秘钥

      1
      2
      3
      4
      5
      6
      7
      8
      9
      deploy:
      - type: sftp
      host: host
      user: user
      remotePath: remote path
      port: 22
      privateKey: path/to/privateKey
      passphrase: passphrase
      agent: path/to/agent/socket

      修改 Hexo 配置文件_config.yml 中的 deploy 选项,该方法我尝试的时候报错:err: Error: Cannot parse privateKey: Unsupported key format 不建议使用,参考链接

  3. 参数详解

    参数 描述 默认值
    host 远程主机的地址
    user 使用者名称
    pass 密码
    remotePath 远程主机的根目录 /
    port 端口 22
    privateKey ssh 私钥的目录地址
    passphrase (可省略)ssh 私钥的密码短语
    agent ssh 套接字的目录地址 $SSH_AUTH_SOCK
  4. 上传文件

    1
    hexo d

    使用以上步骤配置完成后,即可在生成静态文件 (public 目录) 后使用以上命令上传文件

  5. 返回参数

    1
    2
    3
    4
    5
    6
    Deploying with configuration:  {
    dryRun: false,
    forceUpload: undefined,
    excludeMode: 'remove',
    concurrency: 100
    }
    • dryRun:使用 dry-run 模式,默认为 false。
    • forceUpload:强制上传所有文件,默认为 false (只上传更新的文件)。
    • excludeMode:被排除文件的行为 (remove 或 ignore),默认为 remove。
    • concurrency:最大并发处理 SFTP 任务数。默认为 100。
  6. 部署策略

    • 该插件 (SFTP) 使用的是 增量更新 的策略,也就是说如果服务器上相同的文件已经存在,该插件会跳过已存在的文件,只更新那些服务器上不存在但是本地新增的文件以及那些服务器上已存在但是本地修改过的文件。
    • 因为使用的是 增量更新 的策略,并且默认上传是有 100 个任务并发上传,所以上传速度其实挺快的,主要影响上传速度的也就是服务器的带宽了。
  7. 注意事项

    在上传时可能会遇到 随机超时 而导致文件上传不完整的情况,参考#2,这时需要设置 concurrency: 50 方可解决该问题。