多机更新 Hexo 博客

因为博客长时间不更新的事,最近被 L 叔点名批评了。过年回家,我又把已经在寝室吃了整整一年灰的笔记本给挖出来了,打算过年期间把过去一个多月的欠账给补上。但之前的 Hexo + Github Pages 的博客生产环境是部署在实验室的台式机上的,现在在笔记本上该怎么重新配置生产环境呢?这篇文章就是记录一下这个问题的解决步骤。

1. 动手前的思考

还是按照我个人的老习惯,在动手前,先来理清思路,看看我们大概需要做哪些操作,为什么要做这些?这篇文章默认读者已经在另外一台电脑上部署好了,现在只是需要在另外一台电脑上部署。如果读者关注的只是如何使用 Hexo + Github Pages 搭建自己的博客,可以移步我之前的一篇文章 《知行合一 | 用 Hexo 搭建博客》

既然博客的生产环境是 Hexo + Github Pages,那么重部署的工作就围绕着 Hexo 和 Github Pages 展开。回顾一下,两者在我们搭建博客的时候具体扮演着什么角色。

  • Hexo:是一个静态博客生成器,根据给定的主题,负责把写好的 Markdown 文章转换成一堆 HTML + CSS + Javascript 页面。另外,Hexo 还有把生成好的站点上传到 Github Pages 的功能。
  • Github Pages:这是我们的网站内容(那一堆 HTML + CSS + Javascript)真正存放的地方。

Hexo 是把 Markdown 转换成 HTML 的,那么首先,需要给 Hexo 提供 Markdown 文件。由于,我希望打开任何一台电脑都能更新最新的容,Hexo 博客的内容应该放到一个同步盘的文件夹下面,坚果云、Dropbox、OneDrive 这些都行。其次,Hexo 是基于 Node.js 的,但笔记本上完全没有 Node.js 环境,所以需要安装 Node.js。还有,很多文章都会用到类似 hexo-katex 这样的插件,新电脑上也没安装,需要安装这些必须的插件。

对于 Github Pages,最大的问题在于告诉 Github 服务器,这次的提交更改不是别人,也是由我做出的,所以一定要接受我的改动。在《知行合一 | 用 Hexo 搭建博客》中我已经讲过了,这个身份认证是由 SSH Key 来完成的,在重新部署中,我们还是要弄这个。

2. 重部署流程

2.1 文件同步

要把整一个 your_name.github.io 文件夹同步过来,里面包含的 .gitignore 等文件包含了等下要提交的文件对应哪个 repo 等的信息,还有

2.2 Hexo 配置

因为笔记本上完全没有 Hexo 环境,所以我们还要重新部署下,根据《知行合一 | 用 Hexo 搭建博客》步骤大体如下。

先安装 Node.jsGit,再安装完这两者后,再打开 Node.js command prompt 安装 Hexo。但由于 Node.js 官方的源安装速度非常慢,我们先将源改成国内淘宝的镜像,执行:

1
npm config set registry "https://registry.npm.taobao.org"

cd 到同步的 your_name.github.io 内, 然后再安装 Hexo:

1
npm install -g hexo-cli

安装完后,可以对比下新电脑里your_name.github.io 文件夹下面的 package.json 里面的插件和老电脑里的package.json 插件列表有什么不同,把缺的插件统统装一遍就可以了。这个就需要在同步前,也就是在敲npm install -g hexo-cli 前就把老电脑里的插件信息另存为。可惜我当时没想到这一点,不过我就额外安装过 Noise 主题和 hexo-katex 插件,所以根据我另外一篇文章 《Hexo 博客支持 KaTeX(回炉版)》,还需要执行如下命令:

1
2
npm install hexo-renderer-pandoc --save
npm install hexo-katex --save

由于 hexo-renderer-pandoc 插件会调用 pandoc,所以还需要先去下载安装 Padoc。为了 Noise 主题,执行

1
2
npm install hexo-renderer-jade --save
npm install hexo-renderer-less --save

为了部署,还要执行

1
npm install hexo-deployer-git --save

至此,在新的平台上运行 hexo cleanhexo generatehexo server 等命令应该就没有问题了。

2.3 Github 配置

这一环节,其实同《知行合一 | 用 Hexo 搭建博客》一样,唯一的差别就是省去了创建 repo 这一环节,因为我们的 repo 是同步过来的。具体步骤如下,更详细的解释可以看《知行合一 | 用 Hexo 搭建博客》一文:

  • Step 1:Setting up Git。在 Git Bash 中执行如下代码即可:

    1
    2
    git config --global user.name "YOUR NAME"
    git config --global user.email "YOUR EMAIL ADDRESS"

    其中,YOUR NAME 是自己取的名字,YOUR EMAIL ADDRESS 是自己的 Github 邮箱。

  • Step 2:Authenticating with GitHub from Git。

    • 在 Git Bash 下执行如下命令,生成 SSH key

      1
      ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

      其中,your_email@example.com 是你的 Github 注册邮箱,剩下的一路回车即可。

    • 将 SSH key 添加到 ssh-agent

      • 在 Git Bash 下执行如下命令,开启 ssh-agent

        1
        eval "$(ssh-agent -s)"
      • 将这个 SSH key 添加到 ssh-agent 里去

        1
        ssh-add ~/.ssh/id_rsa
    • 将 SSH key 添加到 Github 账户

      • 在 Git Bash 中将 SSH Key 拷贝出来:

        1
        clip < ~/.ssh/id_rsa.pub
      • 此时,SSH Key 已经在我们的剪切板里了。然后登录 Github 帐号,依次点击自己的头像,SettingsSSH and GPG keysAdd SSH key, 在 Title 这里输入 Key 的label,比如 your_name - PC,然后在 Key 里面把 SSH Key 粘贴进去,点击 Add SSH key 大功告成。

    • 测试 SSH 连接,在 Git Bash 中敲入

      1
      ssh -T git@github.com

      应该可以看到提示你成功的信息。

  • Hexo 部署:*执行hexo deploy 应该就可以大功告成了。

3. 动手后的再思考

这篇文章写到这里,发现写的内容基本都是上一篇《知行合一 | 用 Hexo 搭建博客》内容的重复,也就是说多台电脑同时更新的问题,并不是一个完全不同的问题,绝大部分其实都是可以复用的。最初,让我困惑的并不是这些操作步骤,而是如何正确的刨分这个问题,哪些是我熟悉的,哪些是我陌生的。其实,这篇文章主要想讲两点:

  • 仅仅将那些插件文件同步,并不等于安装了那些插件,所以我们才需要在新电脑上安装 hexo-katex 等插件;
  • 只要将新电脑的 SSH key 添加到 Github 的项目里面,就通过了身份认证。

如果您觉得我的文章对您有所帮助,不妨小额捐助一下,您的鼓励是我长期坚持的动力。

Alipay_Middle Wechat_Middle