关于博主
白い霧,资深运维工程师,目前工作主要涉及 B 端政企客户基于 k8s(kubernetes) 集群的私有云、边缘云 IoT 平台的部署维护, 同时兼运维开发参与监控、运维工具以及 DevOps 平台的开发工作。
为什么创建这个博客
其实挺早之前就想自己搭建一个博客,记录下自己工作、学习中遇到的有用的知识和经验。 然而自律性不够,有几次想开始做但是没坚持下来。 前些天在公司处理完一个 CDH 大数据集群中 Yarn ResourceManager 组件的内存泄露问题之后,和一位研发的同事分享了问题和过程, 他建议我可以自己写个博客分享出去,并给我看了他的百万浏览量的博客,瞬间惊呼😲大神就在我身边。 这件事让我下决心投入时间建设一个属于自己的博客,刚好新的一年到来动力十足😆,于是便开始投入业余时间到本博客的建设上。
本着要么不做,要做就尽力做好的精神,一开始便打算自行搭建和部署。找个博客网站注册个账号写写博客提交上去这样的事情实在是不适合我。 做这个博客一方面是想记录、分享、展现自我,另一方面也是想通过建设这个博客,去学习和了解更多自己感兴趣的事情。 目前计划中会涉及的技术包括 前后端开发、测试、Serverless、CDN、SEO 等等, 我希望借此自己动手的机会不断学习并加深对各种技术的理解,朝着 全栈工程师、架构师 的目标小步前进。
技术方案
博客本质上就是前端静态页面,静态页面生成技术非常多而且成熟,我接触过的包括 Gitbook、 Hogo、 Nextjs,其它了诸如 Wordpress、Ghost 之类的没有过多的去了解。 另外 Markdown 语法的简洁让其成为我写博客的首选,所以 Markdown 的支持必不可少。
因为近期有在学习前端开发的技术,并且使用 Nextjs 开发过一些工具,所以作为前端应用开发的主流技术之一的 Nextjs 自然成为了我的首选。 搜索了 Nextjs + Markdown 渲染的相关技术方案后,确定了使用 Nextra (opens in a new tab) 及其官方主题做定制化的建设方案。
Nextra 提供的官方主题有 2 个,nextra-theme-blog 和 nextra-theme-docs。
- nextra-theme-blog (Demo (opens in a new tab)) 这个主题顾名思义是专门为博客提供的,实现了一个博客的基本功能。 但是稍微有些简陋,要用来作为我自己的博客稍微有些不太满意。
- nextra-theme-docs (Demo (opens in a new tab)) 则专门为文档编写提供的。 这个主题用于制作产品文档我认为真的是非常合适,有兴趣建议点进 Demo 去了解一下。不过虽然用来制作文档非常不错但是要用来建设一个博客不是很合适。
所以最终我选择在 nextra-theme-docs 这个主题之上,结合自己的需求并参考 nextra-theme-blog 主题里面的一些功能实现,来定制属于我自己的 Blog 主题。
主题定制
Nextra 虽然有计划推出自定义主题的教程,但截止至今天 2023-01-11 还没有文档推出。
所以在主题定制这一块稍微花了不少时间去看源码了解 Nextra 项目和主题的构建、渲染方式,找到了修改主题的途径,并大致了解了其原理之后便开始了愉快的 Blog 主题的定制之旅。
博文编写
作为第一篇博客,想的是顺手记录一下当前正在做的跟这个博客相关的一些事情,于是就有了这篇文章。
由于选择了 Nextjs + Nextra 的组合来做这个博客,博文编写为 MDX (opens in a new tab) 格式,内容大部分由 Markdown 语法构成, 同时也可也添加自定义的 React 组件 到博文中实现一些高度自定义化的段落。
例如可以使用 nextra-theme-docs 主题内置的 Callout (opens in a new tab) 组件实现这样的提示性段落。
也可以像下方 Timeline 处展示的嵌入自己创建的 React 组件,该 Timeline 组件由 MUI Core (opens in a new tab) 提供。
部署
一开始计划是使用阿里云 Serverless 弹性容器 ECI 部署。 但是实际部署过程发现 ECI 不知为何有时会卡在调度阶段很久部署不成功, 而且实际上计算最低规格实例 0.25 vCPU, 0.5 GB 内存按量付费计算约为 元/月,价格比最低规格的香港轻量服务器 24 元/月 都高上不少, 所以直接购买了一台香港区域的轻量应用服务器进行部署。
将博客打包成 Docker 镜像之后,推送到阿里云镜像仓库上。然后在购买轻量应用服务器上面通过 docker compose 进行部署。 docker compose 部署的时候除了 Blog 容器之外,还启动了一个 Traefik 网关。 Traefik 网关负责从 Let's Encrypt (opens in a new tab) 申请免费证书、自动轮换证书、充当博客的反向代理并终止 TLS 证书。
在香港服务器上部署上线之后,目前正在走域名备案流程。后续计划备案完成后加上 CDN 优化访问速度。
Timeline
- 2023-01-04开始着手博客搭建
Start to build my blog.
- 2023-01-11初版博客主题定制完成
First version of theme customized!
- 2023-01-12第一篇博文完成
First post added!
- 2023-01-15首次部署上线
First deploy done!
- 持续迭代
Continuous Iteration