本站创世纪
Rodent-Nick | 2026年05月16日
关于啮齿屋(一代目)
啮齿屋这个网站曾经有过一代目,这个时候啮齿静物还不谙世事,以为学了LAMP就能自己搭建一个宏伟框架,
当时所有的文章都以Markdown的形式储存在MySQL数据库里,文章随访问随从数据库中由一个统一的PHP页面
调用,然后通过Javscript渲染Markdown和
当时网站的截图
当然这很无厘头……从SEO到负载都是一塌糊涂:且不说搜索引擎和网民会如何看待这种靠文章id 从数据库里先找文章然后当场从Markdown拼成HTML的行为,每次有人访问博文就会引发一次数 据库读……前期流量低还好应付,如果之后稍微流量大一点,或者服务器承担一些别的业务,就有 死翘翘的风险了。
因此当前最好的策略就是及时停止进一步开发,且研究生学业逐渐忙碌起来,所以就耽搁下来了。
以下的文本是在一代目网站中的自我介绍文章的一部分,题为《我和啮齿屋》。现在这个文章已经下线了。
《我和啮齿屋》
我从来没有想过自己会有一个属于自己的网站。我之前有过一些VPS,但是从来没有想过建站。买VPS的原因只 是为了和朋友们联机玩Minecraft,但是后来朋友们都去忙他们的事情了,我也变成里单人玩家。
同时,建站似乎一直很贵。玩游戏用的VPS机器配置都很好,但是唯独静态IP极贵。如果说玩游戏还可以,无非 选一个邪恶五位端口即可,然后走NAT转发。但是如果建站,还是需要一个正常访问的80端口,这就需要有静态 IP。
一个偶然的机会,我在某云厂商发现了一个非常好的bargin:2C4G服务器带弹性IP,两年才400多一点。激情 下单!但是下单后,其实发现并没有什么可用的。4G的内容只能容下一些很小的东西,连OnlyOffice这样的 协作文档软件都没办法host。所以这个服务器买来之后就一直在搁置,并无进展。
再往后一年之后,在学院303自习室里的一个无聊下午,我还是决定利用一下这个服务器。先配置了SSH,然后 尝试配置了一个git远端仓库。配置好之后确实很方便,因为当时在做C++的hobby projects(请看看我的 Github),迫切地需要一个CMake的模板,而使用远端仓库我 可以在任何机器上创建一个调教得特别丝滑的
CMakeLists.txt。尝试了git之后,终于下定决心学习LAMP中后三个(Apache, MySQL, PHP)。在配置之前并没有相关具体应 该在站内写什么样的文章,只是一路配置,一路过关斩将攻克难题。直到一切都配置妥当之后,要给网站做ICP 备案了。备案的时候要求填写网站内容,最终才决定把这里定为我的博客屋。
然后就是学习很多Web的知识,自己一个人既当前端也当后端,重新温习了MySQL,学了Tailwind和PHP,最 终:啮齿屋这个网站上线了。
CGC实验与啮齿屋
在博客建设暂停的期间,我和学院里另外一位同学合作开展一项 SLA实证研究。因为实验环境需 要有跨平台性能,我就利用这个服务器来搭建了Web环境。
在搭建期间,我也逐渐发现Tailwind框架的诸多不便。作为一个小网站,使用Tailwind这种框架实在是没有 必要,不如从CDN加载一个Bootstrap 5来得方便,这样也给网站减轻了流量压力。
虽然有了发现,但是仍然没有时间来重构博客屋,因此项目一直拖延着。
啮齿屋(二周目)
许久之后,在实验推动间隙,我终于找到了一些时间空闲。同时, 我还了解到了eleventy这个框架。这个框架通过NodeJS部署在 服务器上,可以将Markdown根据给定模板生成HTML,非常符合 我的博客要求。
最主要的是这个生成器能够节省数据库的读写次数,并且不需要 在浏览器端把Markdown转为HTML。同时,通过Collection和 Shortcodes,我还可以对于模板HTML进行定制,包括实现一些 我原以为只有动态网站能实现的功能,比如显示所有文章。
同时,eleventy的插件也很丰富,比如说原来的
其他的便利还包括<code>的语法高亮等等,不一而足。 于是花了几个不想干活的下午,鼓捣出了啮齿屋的二代目。
同时,相较一代目,这一代的啮齿屋对于响应式设计的支持也优化 了。例如如果用手机访问博客屋主页,所有卡片会排成一列; 然而用电脑访问,文章卡片则会排成三列。在手机上,图片 显示逻辑也根据手机宽高比优化。
手机上,所有图片的宽度会增加适配手机的窄屏宽。
其实原本还有git远程仓库提交后用post-receive的hook 自动部署的设想,但是奈何我对于git hooks的熟悉程度极 低,尝试着写了好几版的hooks都无法部属,还涉及到文件 权限的问题……所以改为SSH直连到服务器上,用SFTP读写远 程文件,然后再用SSH执行部属,也算是解决了一部分问题。