- Published on
新站落成
- Authors
- Name
- WoadZS
自己的博客,之前一直是基于 WordPress
搭载在某虚拟空间上的,虽说这个服务商也带有 CDN
的功能,但效果实在是不敢恭维,也有可能是钱没给够哈哈。于是乎现在想起来转投到静态博客的怀抱,尝试使用 Hexo
加上 Github Page
Coding Page
来做这个博客。
基本思路
- 双线部署,国外走
Github Page
国内走Coding Page
,这样的话对于国内外访问速度都有保障 - 强制开启
SSL
支持,不然的话国内访问可能满屏你的时间非常宝贵 - 如果可能,寻找靠谱的
CDN
服务商 - 利用
OneDrive
进行同步,达到多台电脑都能更新博客的目的
环境搭建
本机必须安装的组件有:
出于个人使用习惯,我还安装了:
- 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
这个文件夹找到你的密钥:
- id_rsa.pub //这是你的公钥
- id_rsa //这是你的私钥
你需要使用记事本打开 id_rsa.pub
并复制里面的所有内容,到你所要使用的平台,比如说 Github
和 Coding.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.js 和 Git.
然后开始 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.net
的 CDN
也能在全球范围内提供可以接受的访问速度,因此可以将访问直接引流到 Coding.net
上, Github
作为备份。
如果要将流量主要导流到 Github
,因为 Github
无法为自己的域名绑定 SSL
, 所以正确的做法是利用 Netlify 来为 Github Pages
启用 SSL
访问(可以自己上传自己的证书),并且还能开启 HSTS
,这也算隐藏福利之一。 Netlify
从国内访问主要是访问其在日本或者新加坡的 CDN
节点,大陆访问速度不如 Coding.net
但海外访问速度很快。
因此证书的分流设置的结论就是:
- 现在只能顾着一头,最多只能一个站有
SSL
才能方便管理,除非有更好的平台提供更好的解决方案; - 根据你的阅读群体,大陆读者居多的请将流量导入
Coding.net
,反之导入Netlify
; - 如果你不执念于
SSL
, 虽然不建议这么做,那你可以直接使用DNS
进行分流,国内走Coding.net
, 国外走Netlify
;
DNS 设置
本站使用的是 阿里云 DNS 云解析免费版 之所以不使用 DNSPod 的原因是其免费版 CNAME
设置条数限制实在太低。
CDN
网站是否使用 CDN
是一个见仁见智的问题,如果是直接使用的 Coding.net
或者 Github
的服务,几乎不用再额外配置 CDN
. 如果是自己假设的服务器,最好还是再找一个靠谱的 CDN
. 其实很多个人博客的域名是没有经过备案的,没有备案的域名是无法使用大陆节点的 CDN
的,最多也就是走香港或者日本的节点。所以使用之前注意考虑
其他
图床
本站图床用的是 新浪微博图床
, 为了方便使用,使用了 新浪微博图床 这款 Chrome
插件. 更多的图床选择:SM.MS
主题
本站所用主题为 Viosey 开发的 Matearial
PS: 于 2018 年 4 月更新为 iTimeTraveler 开发的 HikerNews
插件
编写
编写所用工具为:Visual Studio Code , 并配合插件:
- vscode-hexo
Provides
Hexo init
,new
,generate
,server
,deploy
,publish
,clean
commands in the VSCode Editor. - Code Runner
Run your codes in VSCode
- Jupyter Notebook
这个不是插件,是
Python
的笔记本软件,可以直接导出为Markdown
格式进行编辑再发布。