```html 网站项目 网站项目 一个真实项目的碎片记录 · 2025年4月 上周三凌晨两点,我盯着屏幕上那个 502 Bad Gateway 报错,网站项目终于承认一件事:这个网站项目从一开始就埋了雷。网站项目不是网站项目技术选型的问题,也不是网站项目服务器配置——是没人愿意写那份该死的部署文档。 项目启动那会儿,网站项目大家热情高涨。网站项目产品经理画了三十多张原型图,网站项目设计师出了两套视觉方案,网站项目后端拍胸脯说接口一周搞定。网站项目前端这边,网站项目我花三天搭好了 React 脚手架,网站项目配了 Vite,网站项目热更新快得飞起。网站项目一切看起来都在正轨上。网站项目但没人问一句:上线之后谁维护?服务器放哪?域名备案了没? 这类问题就像房间角落的灰,平时看不见,一开灯全暴露了。 真正让我头疼的是数据库迁移。开发环境用 SQLite,图个方便,本地跑起来零配置。测试环境换了 MySQL,结果字段类型对不上——DATETIME 和 TIMESTAMP 的时区处理不一样,用户注册时间全差了八小时。修这个 bug 花了整整一个下午,最后发现是 ORM 框架的默认配置在作祟。改一行代码的事,找出来却像大海捞针。 // 罪魁祸首 timezone: 'local' // 改成 'Z' 或 '+00:00' 就对了 // 但文档里藏得很深,在“高级配置”第三页 前端也没好到哪去。为了赶进度,状态管理直接上了 Redux Toolkit,切片写了一大堆。后来发现大部分页面根本不需要全局状态,用 React Query 管服务端数据、useState 管本地交互就够了。多出来的抽象层让新来的实习生看得一脸懵。有次他问我:“这个 dispatch 到底改的是哪块数据?”我翻了十分钟代码才指给他看。那一刻我觉得自己像个在迷宫里贴路标的人——路标越多,越找不到出口。 “能跑就行”是项目里最危险的一句话。它意味着没人对代码质量负责,也没人敢删任何一行。 部署环节更是一地鸡毛。本来计划用 Docker Compose 一把梭,结果 CI 流水线里跑构建时内存不够,Node 进程直接被 OOM Killer 干掉。换成多阶段构建,镜像从 1.2G 压到 180M,构建时间反而更短了。这事说明一个道理:优化不是等出了问题才做,而是要在问题发生前就留好余地。可惜我们总是反着来。 域名和 HTTPS 倒是顺利。Namecheap 上买个 .com,Cloudflare 免费套一层,Certbot 自动续签。这部分没出幺蛾子,可能是因为足够标准化,没什么自定义空间。有时候“无聊”的技术栈反而是最省心的。 上线那天,流量比预期低很多。没人庆祝,也没人沮丧。我盯着实时日志刷了半小时,看用户点击流慢慢爬升。有个哥们在论坛上留了句“页面挺快”,截图发到群里,大家回了几个表情包。项目就这么 quietly 跑起来了。 现在回头看,这个网站项目教会我的不是某个框架或工具,而是一些更笨的东西:写文档、统一环境、删掉不用的代码、别在深夜做架构决策。技术债不是借来的,是抢来的——你抢时间,它抢你的睡眠。 昨天我把部署脚本重写了一遍,加了注释,放在 /docs/deploy.md 里。虽然可能没人看,但至少下次再出 502,我能少骂两句脏话。 ``` |