2026-02-08观察时长: 5 分钟

从本地开发到上线:域名、部署与数据库的那些事

Building bridges between code and reality, one deployment at a time.

技术笔记

从本地开发到上线:域名、部署与数据库的那些事

距离上一篇博客已经过去一天了。昨天我还在本地调试代码,今天网站就已经正式上线了。这中间发生了很多事情,我想把它们记录下来,也算是给这段经历留个纪念。

买域名:给自己的网站一个名字

其实最开始我并没有打算买域名。我想着,用 Vercel 提供的免费域名就够了,反正只是自己用,也不指望有多少人访问。

但后来想想,既然都花时间做了这个网站,为什么不给它一个正式的名字呢?就像给自己的孩子起名字一样,有了域名,这个网站才有了真正的"身份"。

选域名其实挺难的。我想要一个简短好记的、有意义的,最好和我的网名或者兴趣相关,而且不太贵的。我试了很多组合,但大部分都被注册了。最后选了一个还算满意的,虽然不算特别短,但至少有意义,而且价格在可接受范围内。

买域名的曲折过程

买域名的过程比我想象的要麻烦得多。我最开始是在 namecheap 上选的,选好了想要的域名,本来都打算付款了,结果看到它有需要信用卡支付的硬性条件。但我并不愿意用信用卡,所以只能放弃。

然后我又去看了 cloudflare,想着它应该会有其他支付方式,结果发现也是同样的理由,必须用信用卡。当时真的有点绝望,感觉国外的域名服务商都这样,没有信用卡就买不了。

实在没辙了,我想着要不试试国内的?虽然之前没考虑过,但既然国外的不行,那就看看国内的吧。最后转回国内,在阿里云上买的域名。

结果发现国内的网站买我这个域名,一个能支持支付宝支付,很方便,而且价格还便宜不少。这让我有点意外,没想到国内的服务反而更适合我这种没有信用卡的学生。

不过缺点就是中间需要验证实名信息和备案,这比较吃时间。实名验证还好,主要是备案流程比较繁琐,需要提交各种材料,还要等审核。但总的来说,能用支付宝支付,价格还便宜,这点等待时间还是值得的。

买完域名后,等待 DNS 生效的那几个小时,我一直在刷新页面。虽然知道肯定会生效,但还是忍不住想看看是不是已经可以访问了。

部署到 Vercel:从本地到云端

Vercel 的部署体验真的很棒。基本上就是把代码推送到 GitHub,然后在 Vercel 上连接仓库,配置一下环境变量,点击部署,几分钟后网站就上线了。整个过程几乎不需要任何配置,Vercel 会自动检测 Next.js 项目,使用正确的构建命令。

最让我惊喜的是,Vercel 支持自动部署。每次我推送代码到 GitHub 的 main 分支,Vercel 就会自动检测到变化,然后重新构建和部署。这意味着我可以在本地开发、测试,然后直接 push,几分钟后就能在线上看到效果。这种体验真的很棒,让我感觉开发和部署之间没有隔阂,就像在本地运行一样自然。

接入数据库:最大的坑

这是整个过程中最复杂,但也最有成就感的部分。说实话,这也是我遇到最多问题的地方。

为什么需要数据库

在上一篇博客里,我提到留言板功能还很简单,数据只存在前端,刷新页面就没了。这显然不是长久之计。如果我想让这个网站真正"活"起来,让访客的留言能够保存下来,就必须要有后端数据库。

尝试 Twikoo 的失败经历

最开始,我想用 Twikoo,因为看很多朋友的博客都在用,感觉应该挺成熟的。但不知道为什么,在我这边总是出问题。我按照文档一步步配置,但就是连不上,要么是网络问题,要么是配置问题,反反复复调试了好几天,最后还是放弃了。

现在想想,可能是因为我的项目结构或者 Next.js 版本的问题,Twikoo 的某些配置在我这里不兼容。但当时真的很挫败,感觉别人都能用,为什么我就不行。

自建数据库:和 Gemini 一起学习

既然现成的方案不行,那就自己来吧。我决定直接复用之前本来为了使用 Twikoo 而注册的 MongoDB,然后和 Gemini 一起学习怎么搭建。说实话,这个过程比我想象的要复杂得多。

整个过程需要理解数据库的基本概念,学习 Mongoose 的用法,设计 API 路由,最后对接前端。每一步都有很多细节需要注意,比如连接缓存、错误处理、数据验证等等,稍不注意就会出问题。

最让我头疼的是网络访问的问题。最开始连接 MongoDB 时,经常出现超时错误。我以为是代码写错了,但后来发现是因为 VPN 的问题,关掉 VPN 就好了。这种问题真的很难排查,因为错误信息不会直接告诉你是因为网络。

还有 Next.js 15 的改动。我在创建 API 路由时,发现 Next.js 15 把路由参数改成了异步的,必须先用 await 才能拿到值。这个改动让我调试了很久,因为错误信息也不明显,就是找不到模块或者参数未定义。

这段经历的意义

虽然过程很曲折,但我觉得这段经历很有意义。这些搭建过程中遇到的困难,正好能为下个学期的课程踏平道路。下学期我要去德国上 Web Technology 这门课,现在提前遇到了这些难点,知道了哪些地方容易出问题,到时候学习起来应该会更顺利。

而且,知道了难点也方便更好的学习。如果我只是用现成的方案,可能永远也不会理解数据库连接、API 设计这些底层的东西。但现在我自己搭建了一遍,虽然花了很多时间,但对整个系统有了更深入的理解。这段经历也算独特,大部分同学可能都是直接用现成的评论系统,很少有人会自己从零开始搭建。虽然过程很痛苦,但最后看到留言板真正"活"起来的时候,那种成就感是直接用现成方案无法比拟的。

数据库接入后的效果

接入数据库后,留言板真正"活"起来了。评论会永久保存,刷新页面也不会丢失,点赞数会持久化,回复功能也正常工作了。所有数据都存储在云端,不用担心本地数据丢失。这种感觉真的很奇妙,看着自己的代码真正"连接"到了互联网,数据在云端流动,就像给网站注入了生命一样。

一些感想

从本地开发到正式上线,这个过程让我学到了很多。部署其实不难,现代的工具让部署变得非常简单。但数据库接入真的不容易,特别是对于我这种没有后端经验的人来说。不过,也正是因为这些困难,让我对系统有了更深入的理解。现在我知道了数据库连接是怎么工作的,知道了 API 路由是怎么设计的,知道了前后端是怎么交互的。这些知识在下学期的课程里肯定能派上用场。

关于下一篇文章

说到这里,我想预告一下下一篇文章。下一篇文章会是一个正式的自我介绍。我会聊聊我是谁,我在做什么,我的兴趣和爱好,还有我对未来的规划。

虽然这个网站本身已经有很多关于我的信息,但我想用更正式、更完整的方式,写一篇关于自己的文章。这既是对自己的总结,也是给访客的一个"欢迎信"。

如果你看到了这篇文章,说明你已经来到了我的网站。欢迎你在这里留下足迹,也欢迎你通过留言板和我交流。这个网站对我来说,不仅仅是一个作品,更是一个可以持续记录和分享的空间。


"在代码与现实的交界处,搭建一座桥梁。"

留言板

[Preview]
输入内容将实时预览..._
140 / 140
[Status]

We respect your privacy. Gravatar/GitHub profiles are used only for display.