从头开始搭建自己的博客
起因
其实在很早之前就使用过 hexo 搭建了一套博客,部署在了 GitHub Pages 上,但由于大家都懂的一些原因导致站点经常访问不上或者速度很慢,后来也没有继续维护下去,后续的文章都集中发到了公司内部的空间中。
随着技术文章和博客积累的越来越多,终于下定决心要好好整理一下自己的知识体系,并把内容放到一个属于自己的平台上,于是就又有了自建博客站点的打算。
正好遇到双十一阿里云服务器搞活动,就花了点小钱买了一台服务器和一个域名,从此就正式开始了搭建博客的日程。
搭建方案
博客系统搭建
博客使用 Hexo 搭建,主题使用的 inside,主要工作量在主题的定制上,可以参考:Hexo + inside 博客个性化定制
以及官方的主题定制教程:Inside 主题配置
博客搭建注意事项
关于 CDN
文章中涉及到使用 CDN 的库,涉及第三方的都使用了第三方提供的 CDN 资源,只要注意辨别别用国外小众的域名即可。
部分我们自己编写的 js 文件,要是想放到 CDN 上,可以使用 jsdelivr 这个工具。
这个工具最强大的地方是可以直接将 GitHub 上的代码同步到 CDN 上。只需要我们在 Git 中建立相对应的仓库,并且发布 release 即可。可参考:https://github.com/suzhihao/libs
另外 inside 官方也支持直接配置 CDN 的 prefix:
1 |
|
配置完后所有的图片都会加上统一的前缀,正好可以和 jsdelivr 配合使用。
但我仍不建议直接使用博客源码 master 仓库上的文件同步 CDN,因为 CDN 有缓存机制,所以同一个文件要是没有 hash 值或者版本号会出现更新问题,所以基本上都是配合 GitHub 的 release 一同使用。
关于评论系统
评论系统没有使用文章中推荐的 Valine,而是使用了 gitalk。
主要考虑到评论的账号可以和 GitHub 打通,并且我的博客源码也放在 GitHub 上,可以直接使用源码仓库的 Issues 作为评论仓库。省去了单独去别的平台注册服务的麻烦。
Hexo new xxx 标题错乱
GitHub 也有人提了相同的 Issue,大概就是使用 Hexo 命令创建新的文章,标题会出现乱码,如下所示:
1 |
|
排查了很久之后发现居然是我的 vscode 的 prettier 插件自动格式化了 scaffolds 目录下的代码!!!
原文件应该是这样的:
1 |
|
格式化后变成了这样:
1 |
|
添加的空格 Hexo 无法识别导致了生成的文件乱码。
最最最坑的一点
本地调试 Hexo 时,经常会出现修改了配置不生效的情况,一开始调试了很久没有发现原因,最终定位是缓存的原因。
当发现修改了配置没有生效时,运行npm run clean
清除缓存再重启即可。
博客系统部署
部署我使用的是一台阿里云的轻量应用服务器 + nginx 的方式部署静态资源。
后续有空的话应该会结合 docker 和 CI/CD 再写一篇文章,本文暂时就基于静态文件手动部署。
服务器配置
安装 node 和设置 npm 仓库。
1 |
|
node 版本号根据个人喜好更改即可。
安装 nginx
网上也有很多安装 nginx 的教程,这里不再过多介绍。
要注意一点的是默认 nginx 安装是不带 ssl 相关的库的,要是以后涉及配置 https 又得重新安装,所以最好一次性全部把相关依赖装全。
推荐启用的模块:
1 |
|
配置 HTTPS
使用acme.sh 可以获得免费的证书。
但在阿里云的机器上执行:
1 |
|
发现有超时的现象,所以就手动将其代码:https://raw.githubusercontent.com/acmesh-official/acme.sh/master/acme.sh 下载下来后手动执行就能解决问题。
如果发现之前安装的 nginx 不支持 HTTPS 可以按照此教程重新安装:https://www.cnblogs.com/michaelcnblogs/p/12832411.html