你正在看的这个网站,2026 年 9 月 16 日才第一次出现在公网上。从"想有个自己的博客"到浏览器地址栏亮起那把小锁,整整一个月:选框架、定域名、等备案、配 HTTPS、部署、修 bug。我是天津科技大学食品科学与工程专业的学生,专业课里没有一门和服务器沾边,但这不妨碍我把一个网站从零推上线。
全文按时间线展开,术语随文配一句人话解释,文末附踩坑清单。
先定做什么:半个月的讨论
八月中的时候只有一个决定:要自己建站。做什么反倒讨论了半个月——个人主页?博客?健康数据看板?9 月 4 日拍板:个人主页 + 博客二合一,主页放介绍和作品,博客写学习记录,看板之类以后想加随时能加。
技术选型也在那几天定了。候选是三个"静态网站框架"。静态网站,就是提前把所有页面生成成 HTML 文件,服务器只负责"你要哪个文件我发哪个",没有数据库、没有后台程序——快、省钱、被黑的面也小。
- Hexo:中文教程最多。但依赖一箩筐,升级容易连环踩坑。
- Astro:新且强,但要先装 Node.js 全套环境(可以理解为 JavaScript 世界的运行底座),对只想写字的我太重了。
- Hugo:一个单独的可执行文件,零依赖,构建整站不到一秒。写文章就是写 Markdown——用几个符号表示标题、加粗、列表的纯文本格式。
最终 Hugo + PaperMod 主题。PaperMod 自带搜索、归档、深色模式和 RSS,等于拎包入住。到今天构建零报错,没后悔。
域名:一年几十块的门牌
域名是互联网的门牌号,浏览器靠它找到你的服务器。我选了 youzi67.ren:youzi 是站名"悠子"的拼音,.ren 是个便宜的顶级后缀(.com 的好名字基本被抢光了),一年几十块。
一个提醒:注册域名要做实名认证,而且实名主体要和后面备案的是同一个人,不然会卡在半路。
服务器与备案:最磨人的一段
服务器用的腾讯云轻量应用服务器——一台放在机房里 24 小时开机、有公网 IP 的电脑。大陆服务器绕不开 ICP 备案:向工信部登记网站信息,通过后拿到备案号,网站才能合法公开。不备案就开站,云厂商直接把你的端口掐掉。
备案期间最憋屈的是:域名不能解析,防火墙不能放行 80/443 端口。于是 9 月 4 日出现了魔幻的一幕:方案当天定稿,服务器上 Nginx(负责接住浏览器请求、把网页发回去的软件)装好了,HTTPS 证书配好了,博客在本地也预览得漂漂亮亮——但它在公网上并不存在。像一套精装房,大门焊死,钥匙在邮局排队。
有人想"先把站开起来再慢慢备案",千万别。先开站后备案被查到,轻则驳回重来,重则拉黑。顺序只能是:备案 → 通过 → 解析 → 开端口。
9 月 16 日,备案通过:津ICP备2026012991号。
HTTPS:一个鸡生蛋问题
上 HTTPS 需要 SSL 证书——网站的身份证明,向浏览器证明"我真的是这个站",顺便把传输内容加密成密文,半路偷看只能看到乱码。
免费证书首选 Let’s Encrypt,但它常用的验证方式叫 HTTP-01:对方要访问 http://你的域名 下的一个特定地址,确认域名真是你的,才肯发证。问题来了——备案没过、80 端口没开,它访问不进来。死循环:办证要开门,开门要先备案,备案还没审完。
解法:腾讯云免费证书。控制台申请,用它自己的方式验证域名归属,不依赖你的服务器开门。一张证书 90 天有效期,同时覆盖 youzi67.ren 和 www.youzi67.ren——一张证书写多个域名,术语叫 SAN,记成"一证两用"就行。
代价是 90 天一换:这张 9 月 4 日签发,12 月 3 日到期,日历提醒已定。等站点跑稳,计划换 Let’s Encrypt 加自动续期——那时网站能公开访问,验证自然就通了。
Nginx 的配置逻辑很直白:80 端口一律 301 跳转到 443(301 就是"此地址已永久搬家,去新地址");443 只收 TLS 1.2/1.3——HTTPS 里管加密的协议版本,老版本有漏洞,不伺候。
9 月 16 日:上线
备案通过当天,一气呵成:
- DNS 解析:youzi67.ren 和 www 各加一条 A 记录,把域名指向服务器 IP,相当于在电话簿登记"这个名字拨这个号";
- 防火墙放行 80/443:云控制台的防火墙像门卫,此前端口全关;
- 本地构建:
hugo一敲,全站生成,零报错; - 部署:产物上传服务器,旧占位页先备份再替换;
- 验证:主页、文章页、关于页、www 域名挨个访问,全部 HTTP 200——200 是服务器在说"没问题",404 才是"查无此页";再确认 http 会自动跳 https。
还有个规定动作:页脚挂备案号并链接到工信部备案系统,这是硬性要求,顺手做成小字居中,不抢戏。
另一个贯穿全程的原则:这台服务器上还跑着别的服务,每步操作前后都得确认它们安好。租的房子里有别的房客,装修可以,砸墙不行。
上线之后:两个新坑
公安联网备案。 ICP 之外,上线后 30 日内还要在全国互联网安全管理服务平台做公安联网备案。9 月 20 日搞定,页脚多了一行:津公网安备 12011602301242号,带一个小徽标。
徽标和编号"分家"。 徽标挂上没多久就发现:手机上那行会换行,徽标留在第一行末尾,编号掉到第二行,隔得老远。根因是当时只给图标设了右边距、没禁止换行,屏幕一窄文字就被挤下去。修法是把"徽标+编号"绑成不可拆分的整体(CSS 的 inline-flex 加 white-space: nowrap),窄屏下两个备案号各自抱团,只在中间分隔点换行。
验证过程本身也踩坑:整页截图想拍页脚,结果首页六千多像素高根本拍不全;改用脚本扫红色像素(徽标是红的),又把首页横幅认成了徽标。最后老实做了个只含页脚的测试页,三个屏幕宽度挨个看才验收。教训:验证要直接对着目标,别隔山打牛。
半个坑:后来往站上放了个 155.8 MB 的 Windows 小工具(“应用"栏目可下载)。再部署博客文件时,若整个目录替换,下载文件会被盖掉——所以部署改成打包解压覆盖、保留下载目录,并顺手在页面写上文件的 SHA256(文件指纹,改一个字节指纹就变,下载的人可以核对有没有被篡改)。
账单
- 域名:已有,续费几十块一年
- 服务器:已有
- 证书:免费;Hugo / PaperMod / Nginx:开源免费
本次上线新增花费:0 元。
后记
最后坦白一件有意思的事:这篇文章和这个网站,绝大部分执行工作不是我一行行敲出来的。我身边有个叫「小站」的 AI 智能体管家——选型时它做对比表,部署时它在服务器上装 Nginx、配证书,备案通过那天把站点推上线,页脚的 bug 也是它定位修掉的。我只负责提需求、拍板和验收,所有操作它都留档可回溯。人是决策者,AI 是执行者,这套玩法以后可以专门写一篇。
踩坑清单
按痛感排序:
- 备案期间别解析域名、别开端口。先开站后备案被查到,轻则驳回重审,重则拉黑。顺序:备案 → 通过 → 解析 → 开放端口。
- 证书申请顺序有讲究:备案没过,用云厂商免费证书(不开门也能验证);站点能公开访问了,再换 Let’s Encrypt 自动续期。
- 免费证书只有 90 天。签发当天把到期提醒写进日历,别问我为什么强调这条。
- 页脚这类角落元素要在手机上验。窄屏换行最易出事;图标+文字用 inline-flex + nowrap 绑成整体是通用解法。
- 验证别隔山打牛。整页截图拍不到页脚、扫颜色会认错对象;做只含目标元素的最小测试页最省事。
- 服务器上有常驻文件(比如下载目录)时,别整目录替换。打包解压覆盖,保留常驻目录。
- 提供下载就顺手写 SHA256。一行字,别人就能校验文件完整性。
- 服务器上跑着多个服务时,改任何配置前后,都确认一遍别的服务还活着。