Website · Deployment
把个人开发者网站从本地放到阿里云,我踩过的几个点
一开始这个网站只是本地静态页面。能打开、能看、样式也差不多,就很容易产生一种错觉:上线应该只是把文件传到服务器。
真的放到阿里云之后才发现,静态网站本身不复杂,复杂的是它周围那圈小事:域名解析、备案、HTTPS、Nginx、部署脚本、缓存、不要把 .git 一起传上去。
第一步:先让域名稳定指到服务器
我买了 huangcodes.com,然后在 DNS 里给根域名和 www 都加了 A 记录,指向服务器的 IPv4 地址。
这里最重要的不是点哪个按钮,而是验证结果。设置完成后,我会用 dig +short huangcodes.com 和 dig +short www.huangcodes.com 看返回值是不是服务器 IP。控制台显示成功不等于公网已经生效,命令行返回才更踏实。
第二步:HTTPS 要尽早配
个人网站如果要作为 App Store 的 Support URL 和 Privacy Policy URL,用 HTTPS 基本是必需的。用户点开也会更放心。
我的理解是:不要等页面全写完再配证书。域名解析通了以后,就应该尽早把 HTTPS、自动续期、HTTP 到 HTTPS 跳转这些基础设施配好。否则后面每次测试 URL,都可能遇到「本地没问题,线上链接不够正式」的尴尬。
第三步:部署脚本比手动命令可靠
我最早是手动敲 rsync。这当然能用,但每次都要复制一长串命令,迟早会忘参数。
后来我把它收进 scripts/deploy.sh:部署前重建字体子集,传输时排除 .git、源码字体、脚本目录等不该上线的东西,再把静态文件同步到服务器目录。
这个脚本的价值不是省几秒,而是把「正确做法」固定下来。以后我只要记得跑脚本,不用每次重新思考哪些文件该传、哪些不该传。
第四步:上线后要从域名反查
每次部署后,我现在都会用线上域名拉页面验证,比如检查某个 changelog 里最新版本号是不是出现了,检查 sitemap 里有没有新 URL。
这一步很重要。因为「本地文件改了」和「线上用户看到了」之间隔着部署、缓存、路径、Nginx 配置好几层。只看本地预览是不够的。
这次学到的
- 静态网站也需要工程化部署,不是随手拖文件
- DNS 和 HTTPS 是网站可信度的一部分
- 部署脚本要排除开发文件,尤其是
.git - 每次上线后都应该从真实域名验证
- 备案、邮箱、隐私页这些非代码事项,也会影响产品发布
独立开发很多时候不是缺一个复杂架构,而是缺一个不容易忘事的流程。网站上线也是这样。