十三个课程站,一个人怎么维护
十三个课程站加一个门户,写起来是十三次重复劳动,维护起来是同一个问题。 这篇记录一年里攒下的三件东西:一套统一的版面语言、一个会体检的打包脚本、两套能直接复制的部署配置。
第一个课程站是我一个人写的,第二个也是。写到第三个的时候我开始复制粘贴, 写到第五个的时候,改一处样式要打开十几个文件夹——那时候才明白,问题不在「做站」,在「维护」。
一八个站,一套版面语言
十三个站原来各写各的:Hadoop 深青、Hive 蓝、Java 橙,各有各的卡片圆角、各有各的标题字号。 单独看都还行,摆在一起像八个人做的。后来统一成一套「刊物」语言:两种字体、 一套间距、一条细线分栏,颜色只留一个变量给栏目。
改完之后,新增一个站从两天变成半天。省下来的不是打字速度,是不用再重新决定「这个站长什么样」, 只需要决定「这个站讲什么」。
一个人做十三个站,省下来的时间不是写得快,是不用再决定。 ——本文第 2 稿,写在改完第八个站的凌晨
二打包脚本顺带做体检
站点是静态的,构建产物放进一个目录就能跑。但每次手工拷目录都会漏东西:一个相对链接写错了、 文件名大小写在 Windows 上没问题到 Linux 就 404、某个路径是绝对路径,搬到子目录就断。 这三类错误有个共同点——本地打开看不出来。
所以打包脚本多做了三件事:扫全部链接检查目标存在、比对文件名与实际大小写、把根绝对路径挑出来。 跑一遍十几秒,比上线之后挨个点省事得多。
| 方式 | 适合什么 | 要维护什么 | 坑 |
|---|---|---|---|
| Caddy | 自己的机器、给局域网看 | 一个地址、一行密码 | 子路径要 handle_path |
| nginx 主机装 | 云主机、长期跑 | charset、gzip、缓存、鉴权 | 默认不认中文目录 |
| Docker 容器 | 换机器、想一键复现 | 镜像与本机目录的挂载 | 挂载时忘了只读 |
表格最后一行是我现在的选择。换服务器的时候,最怕的不是配置写不出来, 而是记不清上一次写了什么——容器把那份记忆变成了一个文件。
三两套配置,各有用处
自己机器上给局域网看,用 Caddy:一行地址就是自动 HTTPS,加一层 basic_auth 挡一下,
配置文件十几行。搬到云主机上用 nginx:要自己写 charset utf-8,
不然中文目录名直接 404;要开 gzip,要设静态缓存,要配鉴权,或者干脆只开内网。
两套配置都留在仓库里。不是为了炫技,是因为下一次部署的时候,我大概率不记得上次是怎么弄的。 留一份能复制的东西,比留一份能理解的东西更管用。
四三条教训
这三条都是花时间换的,写在这里免得再交一次学费:
- 课件原件 120MB,别塞进站点。第一版把 PPT 和视频原件也打进包里,上传一次要八分钟。现在只放生成后的 HTML,原件另存。
- 中文目录必须 charset utf-8。nginx 默认不是,出问题的时候它不会告诉你原因,只会给你 404。
- 迁移前先备份。这条是拿一百多个会话记录换来的,代价最大,道理最简单。
现在八个站加一个门户装在一台 2 核 4G 的机器上,跑着不费劲。维护的成本主要不在服务器, 在我自己的记性——所以脚本越写越啰嗦,注释越写越长,都是写给三个月后的我看的。
1 十三个站指 Hadoop、Hive、Java、Python、Scala、JavaScript、数据库、数据可视化、数据采集、专业英语、Photoshop、经济学原理、四级等课程站与一个门户页; 打包后体积约 96MB,其中课件 PDF 占七成,不进仓库。
全文完