说来也巧,上一篇博客刚好写在3年前,也是一篇替换的。
博客没写几篇,虚拟空间却已经被垃圾日志塞满,续费通知又来了,想想还是换个地方吧。
博客系统选择
WordPress 是不想继续用了,这么多年又出来好多博客框架可以玩一玩了。目标是支持 Markdown,导入 WP 历史文章。
首先尝试的 Ghost,商业化了,各种支持肯定更好。搭完了发现不太稳定,还以为是我的VPS太弱鸡(其实不是),就放弃了。
又尝试了 Hexo, 各种简洁,非常喜欢。当然遇到的问题还是不少,一路披荆斩棘,或者绕路,总算定型了。
稳定性问题
一番观察+思索后,锁定了博客不稳定的原因是 tls-shunt-proxy。作为 trojan 前的分流器,它承担了超出它能力范围的工作。打开一个页面,起码10个SSL请求,它忙不过来了。解决方法就是让它退居二线,让Nginx顶上去。
nginx 通过 ssl_preread_server_name
区别不同域名的流量,转发到不同的端口。科学上网专用域名的流量转给 tls-shunt-proxy (其实可以省了), hexo 静态文件一个端口,其他转发服务再一个端口。
1 | nginx |
SSL证书
为了实现上面的SNI转发,SSL是少不了的,可是那么多域名一个一个搞太麻烦,直接搞个泛域名证书。
1 | acme.sh --issue -d zrenx.com -d *.zrenx.com --dns dns_cf |
HTTP 跳 HTTPS
找到两种跳转方式:
1 | server { |
导入文章
导入文章很简单,用 hexo-migrator-wordpress
。
导入评论
Valine比较简单,设置却走了很多弯路。
- Valine.min.js CDN要换一个
- LeanCloud 要设置安全域名
- Valine 配置 serverUrls,要用 LeanCloud 绑定的域名,不然CORS错误
导入历史数据也挺麻烦,自己写了个脚本从Wordpress导出的xml里提取了,写成一个json文件,LeanCloud 结构化数据就能导入了。
1 | import fs from "fs"; |
写作
Hexo 怎么写博客呢,试了几个后台管理插件,都不理想。
SSH 我熟,Markdown 容易写,结合起来却不怎么方便了。
最终想到我天天在用的VS Code,两个插件搞定了。Remote - SSH直接管理远程文件,Hexo Utils方便写博客。