WoadZS's Blog

若是你因错失太阳而流泪,你也会错失繁星。

WoadZS's avatar WoadZS

新站落成

自己的博客,之前一直是基于 WordPress 搭载在某虚拟空间上的,虽说这个服务商也带有 CDN 的功能,但效果实在是不敢恭维,也有可能是钱没给够哈哈。于是乎现在想起来转投到静态博客的怀抱,尝试使用 Hexo 加上 Github Page Coding Page 来做这个博客。

基本思路

  • 双线部署,国外走 Github Page 国内走 Coding Page,这样的话对于国内外访问速度都有保障
  • 强制开启 SSL 支持,不然的话国内访问可能满屏你的时间非常宝贵
  • 如果可能,寻找靠谱的 CDN 服务商
  • 利用 OneDrive 进行同步,达到多台电脑都能更新博客的目的

环境搭建

本机必须安装的组件有:

  • Node.js 推荐安装 LTS 也就是 Long Term Support 版本
  • Git

出于个人使用习惯,我还安装了:

  • OneDrive 基本上不用自行安装,Windows 系统自带,如果你使用 Mac, 可以考虑别的同步型网盘
  • Visual Studio Code 这是我的主力 Markdown 编辑器

开始安装

安装 Hexo

具体如何部署 Hexo 网上已经有很多文章了,这里不再赘述,另外可以参考 Hexo 官方文档

多 Git 平台部署

前面说到希望能部署到国内外两个平台,部署方式是通过 Git

  • 生成配对 ssh

    首先要做是生成与两个平台同步间需要使用的安全密钥,这里假设多个 Git 都用的一个邮箱注册的,在 Git Bash 界面中输入一下命令
    ssh‐keygen ‐t rsa ‐C "[email protected]"
    

然后一路回车就可以,生成好的密钥与公钥一般存放在电脑的 ~/.ssh/ , 假如你使用的 Windows 的系统并且用户名为 WoadZS , 那么你就可以在 C:\Users\WoadZS\.ssh 这个文件夹找到你的密钥:

  1. id_rsa.pub //这是你的公钥
  2. id_rsa //这是你的私钥

你需要使用记事本打开 id_rsa.pub 并复制里面的所有内容,到你所要使用的平台,比如说 GithubCoding.net 上加入到 SSH 密钥中。

具体加入方式参考:

Adding a new SSH key to your GitHub account

SSH公钥配置 | Coding.net

  • 测试连通

    Git Bash中输入
    # 测试 Github 连接
    ssh -T [email protected]
    # 测试 Coding.net 连接
    ssh -T [email protected]
    
    平台可能会返回诸如以下提示,直接输入 yes 即可(以 Github 为例):
    The authenticity of host 'github.com (192.30.252.1)' can't be established.
    RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
    Are you sure you want to continue connecting (yes/no)?
    
    如果成功,将返回以下消息:
    Hi username! You've successfully authenticated, but GitHub does not
    provide shell access.
    
  • 建立 Git 平台的 Pages 页面
    网上教程众多,不做赘述,官方指导:

    Configuring a publishing source for GitHub Pages

    开始使用 Coding Pages

Hexo 的主配置文件 _config.yml 中,将 deploy 部分字段改为如下多 Git 平台设置方式

# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy: 
  type: git
  repo: 
    Github: [email protected]:woadzs/woadzs.github.io.git,master
    Conding: [email protected]:WoadZS/woadzs.git,master

多平台同步

这里讲一下怎么在多台电脑之间同步 Hexo 工作目录,以便于我们在多台电脑上都可以进行博客管理。

网上一般的做法是通过 Git 进行管理,这样其实对小白们并不是太友好,也不是特别方便。

这里采用同步网盘的方法进行。

找到新电脑上已经同步过来的 Hexo 目录,同时保证新电脑上都安装了 Node.jsGit.

然后开始 Hexo 同步素质三连 :

# 在新电脑安装 Hexo
npm install -g hexo-cli

# 注意这里千万不要进行hexo初始化:hexo init
# 否则之前的hexo配置参数都会重置
# 安装依赖库
npm install

# 安装部署相关配置
npm install hexo-deployer-git

其实就跟全新安装 Hexo 差不多,唯一的区别是少了 hexo init 命令,

接下来请参考上文 多 Git 平台部署 的部分,在新电脑配置 ssh 连接即可。

国内外分流访问

假设你已经在某处购买了属于自己的域名

证书问题及设置

这里有一个问题,因为国内部署的空间是 Coding.net , Coding.net 原生提供的证书方式为 HTML 验证的 Let's Encrypt 证书,因此需要确保验证的时候 DNS 解析是在 Coding.net 的页面上。阿里云 DNS 会对访问进行分流,但无法避免的是我们没法对 Let's Encrypt 的验证做单独解析,因此用一个域名对国内外同时进行加密访问很难实现。

如果 Coding.net 能提供自定义证书,则问题就很好解决了。

通过一些列测试证明, Coding.netCDN 也能在全球范围内提供可以接受的访问速度,因此可以将访问直接引流到 Coding.net 上, Github 作为备份。

Coding.netSSL 部署是在你的静态页面 repository 的 Pages服务 里面一键生成。



最后建议开启 强制 HTTPS 访问 以加强安全性。

如果要将流量主要导流到 Github ,因为 Github 无法为自己的域名绑定 SSL , 所以正确的做法是利用 Netlify 来为 Github Pages 启用 SSL 访问(可以自己上传自己的证书),并且还能开启 HSTS ,这也算隐藏福利之一。

Netlify 从国内访问主要是访问其在日本或者新加坡的 CDN 节点,大陆访问速度不如 Coding.net 但海外访问速度很快。

因此证书的分流设置的结论就是:

  1. 现在只能顾着一头,最多只能一个站有 SSL 才能方便管理,除非有更好的平台提供更好的解决方案;
  2. 根据你的阅读群体,大陆读者居多的请将流量导入 Coding.net,反之导入 Netlify;
  3. 如果你不执念于 SSL, 虽然不建议这么做,那你可以直接使用 DNS 进行分流,国内走 Coding.net, 国外走 Netlify;

DNS 设置

本站使用的是 阿里云 DNS 云解析免费版

之所以不使用 DNSPod 的原因是其免费版 CNAME 设置条数限制实在太低。

如果前文的判断,你只想把流量导入其中一个平台,那简单,以 Coding Pages 为例,直接设定单一 CNAME 记录就行了:


如果你想进行国内外分流,在解析线路出可以直接制定国内和海外的 CNAME 记录。

CDN

网站是否使用 CDN 是一个见仁见智的问题,如果是直接使用的 Coding.net 或者 Github 的服务,几乎不用再额外配置 CDN . 如果是自己假设的服务器,最好还是再找一个靠谱的 CDN.

其实很多个人博客的域名是没有经过备案的,没有备案的域名是无法使用大陆节点的 CDN 的,最多也就是走香港或者日本的节点。所以使用之前注意考虑

其他

图床

本站图床用的是 新浪微博图床, 为了方便使用,使用了 新浪微博图床 这款 Chrome 插件.

更多的图床选择:SM.MS

主题

本站所用主题为 Viosey 开发的 Matearial

插件

  1. Hexo-Prism-Plugin

    代码高亮

编写

编写所用工具为:Visual Studio Code , 并配合插件:

  1. vscode-hexo

    Provides Hexo init, new, generate, server, deploy, publish, clean commands in the VSCode Editor.

  2. Code Runner

    Run your codes in VSCode

  3. Jupyter Notebook

    这个不是插件,是 Python 的笔记本软件,可以直接导出为 Markdown 格式进行编辑再发布。