如何配置hexo的deploy同时发布到GitHub和rsync

如何配置hexo的deploy同时发布到GitHub和rsync

配置 deploy 快速发布,免去手动上传的烦恼。

配置多个 deploy 同时发布,作镜像备份。

配置deploy到GitHub

新建一个仓库

  1. 登录到GitHub页面,没有账号的话就注册一个。点击加号新建一个仓库

image-20200416145213738

仓库名称按你自己喜欢填,如果你想访问的时候不带子目录的话,这里仓库名称应设置为 username.github.io ,将 username 替换成你的 github 用户名。然后其他保持默认,点绿色的按钮创建。

  1. 将刚刚创建的 仓库HTTPS地址 复制下来并保存。

hexo配置

  1. 安装 deploy 插件

    1
    npm install hexo-deployer-git --save
  2. 打开 hexo 项目根目录,打开并编辑 _config.yml 文件

    请直接找到的底部,填入如下几个信息,注意缩进保持一致!

    1
    2
    3
    4
    5
    deploy:
    - type: git #类型
    repo: https://github.com/sevth-developer/sevth-developer.github.io.git #仓库地址,即刚刚复制的那个链接
    branch: master #默认分支,写一样就好
    message: 'update article' #默认提交信息,自己随意写
  3. 输入命令 hexo g -d 提交一次,不出意外的话,系统会弹出提示框让你输入 github 的账号密码,记得点保存。如果没有提示,那么检查系统内 git 是否安装。(文末附windows版下载地址,其他系统请用命令行安装)

    如果发布成功,命令行最后应该会显示 deploy git done字样。

  4. 进入github仓库检查是否有数据。

配置 GitHub page

  1. 进入仓库页面,点击顶栏的 Settings 按钮进入仓库设置。

  2. 页面往下拉找到 github page 选项

    image-20200416154642452

  3. 一般配置的如果是这种域名仓库的形式,会自动打开这个配置选项。如果没有打开,手动打开一下就行了。

    自定义域名设置

    1. 如果你有自己的域名,可以在 Custom domain 里面填入自己的域名。

    2. github 将在你的页面仓库根目录创建一个 CNAME 文件,你可以将这个文件下载下来,或者参照里面的内容自己写一个。

    3. 在你自己的 域名DNS提供商,创建一条cname记录,指向地址为 <user>.github.io (你的仓库github page域名)

    4. 等待解析生效,即可使用自定义域名访问。

    如何避免每次发布时 CNAME 文件丢失

    1. CNAME 放到对应主题目录下的 source文件夹内。

    这样每次hexo解析的时候都会将 CNMAE 文件带上,deploy 也不成问题了。

    1. 安装 插件

      1
      npm install hexo-generator-cname --save

      之后在 _config.yml 文件中 Plugins 添加一条记录:

      1
      2
      Plugins:
      - hexo-generator-cname

      Tips: 记得在配置文件中设置一下网站的 url,否则生成的文件域名可能有误,导致无法使用自定义域名访问。

配置deploy到rsync

服务器配置

  1. 安装rsync服务

    1
    sudo apt-get install rsync
  2. 编辑配置文件 (根据别人博客上的参考,hexo集成的rsync仅仅是使用了ssh底层传输)

    1
    sudo vim /etc/rsymcd.conf

    配置文件输入如下内容:

    1
    2
    3
    4
    5
    6
    7
    8
    uid = nobody
    gid = nobody
    port = 873 #不会使用到这个端口号,防火墙可以屏蔽它
    use chroot = no
    max connections = 10
    pid file = /var/run/rsyncd.pid
    lock file = /var/run/rsync.lock
    log file = /var/log/rsyncd.log
  3. 启动服务

    1
    sudo rsync --daemon

hexo配置

  1. 安装集成插件

    1
    npm install hexo-deployer-rsync --save
  2. 编辑 _config.yml 配置文件,填入如下类似信息:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    deploy:
    type: rsync
    host: 服务器host
    user: ssh用户名
    root: 你的站点根目录
    port: 22 #ssh端口号
    delete: true #发布时是否删除旧文件
    verbose: true #发布时显示详细的信息
    ignore_errors: false #发布时忽略错误
  3. 测试一下,使用 hexo d 看看是否能够发布成功。

使用SSH公钥,免输入密码

  1. 服务器配置秘钥连接 SSH 参考 参考阅读

  2. 将能够正确连接 SSH 的秘钥写入系统默认配置中。默认系统秘钥文件地址在 ~/.ssh/id_rsa

    你可以手动复制秘钥内容至该文件内,或者使用如下方式:

    1
    2
    cat /path/to/private_rsa > ~/.ssh/id_rsa		#将前面修改为你自己的秘钥文件保存地址,该操作将覆盖id_rsa文件内容,如果你在此步骤之前已经存在该文件,请注意备份保存
    chmod go-rwx ~/.ssh/id_rsa #设置权限
  3. 好了,全部配置完成后,你可以试验一下看看是否正常。

修改 hexodeploy插件,自定义秘钥文件位置

  1. 进入 hexo 项目根目录,找到 deployer.js 文件 (文件位于 node_modules/hexo-deployer-rsync/lib/deployer.js)

  2. 修改如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    ... 省略其他代码
    if (!Object.prototype.hasOwnProperty.call(args, 'delete')) args.delete = true;
    if (!Object.prototype.hasOwnProperty.call(args, 'verbose')) args.verbose = true;
    if (!Object.prototype.hasOwnProperty.call(args, 'ignore_errors')) args.ignore_errors = false;
    if (!Object.prototype.hasOwnProperty.call(args, 'key')) args.key = false; //加入此条代码

    ... 省略一段代码

    if (args.port && args.port > 0 && args.port < 65536) {
    params.splice(params.length - 2, 0, '-e');
    if (args.key) { //添加的代码
    params.splice(params.length - 2, 0, `ssh -p ${args.port} -i ${args.key}`);
    } else {
    params.splice(params.length - 2, 0, 'ssh -p ' + args.port);
    }
    }

    ... 省略之后代码
  3. 在项目的配置文件deploy 添加一项 key 后面填写私钥地址,如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    deploy:
    - type: rsync
    host: ip
    user: user
    root: path
    port: 22
    delete: true/false
    verbose: true/false
    ignore_errors: true/false
    key: ~/.ssh/web_rsa

Tips: 生成秘钥对的时候,不要输入私钥密码。可能会直接失败或者每次都要求输入密码。

配置同时发布

编辑 _config.yml 文件,按照如下格式填写:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
deploy:
- type: rsync
host: ip
user: 用户名
root: 站点根目录
port: 22
delete: true
verbose: true
ignore_errors: false

- type: git
repo: 你的仓库地址
branch: master
message: 'update article'

测试一下。

image-20200416165646239

附件下载

  1. Git-2.26.1-64-bit

参考阅读

  1. Github Page 自定义域名官方说明
  2. 将Hexo部署到 GitHub Pages
  3. Hexo 一键部署
  4. hexo使用rsync部署发布
  5. 设置 SSH 通过密钥登录

评论


:D 一言句子获取中...