部署全栈 + 密钥安全
把你的全栈版 Steve's Repair 部署上线,拿到一个别人也能打开的网址;并且学会一件必须懂的安全常识:别把钥匙提交到 GitHub。这一节做完,毕业作品就上线了。
回头一题
这道题不考这一节,考前面学过的。想不起来就回去翻一眼再答——记不住的东西,真用的时候一样会卡。
第一章上线时,部署平台拿到你的代码之后先做了什么?
第一章你已经把静态官网上过一次线(1.10 推到 GitHub、1.11 连平台发布)。这次东西多了一样:你的网站要连 Supabase,得带着连接信息:Supabase 的项目地址,和一把钥匙(key)。上线之前,得先把这把钥匙安顿好。安顿不好,是这一章唯一一个"真会出事"的地方,所以这一节专门讲。
先认识:你的项目有两把钥匙
打开 Supabase 后台,你会看到它给了你不止一把 key。别混,记住两把最关键的,一把可以公开、一把打死不能露:
Publishable key(值以 sb_publishable_ 开头);老项目里叫 anon。这把是给网页用的,它出现在前端、被人看到,也不要紧。Secret key(值以 sb_secret_ 开头);老项目里叫 service_role。这把能绕过所有规则、动所有人的数据。钥匙该放哪:环境变量
那钥匙不写进代码,写哪儿?写进一个专门放这类"敏感信息"的地方,叫环境变量。你就理解成:代码里只写一句"去那个专门的抽屉里取钥匙",钥匙本身放在抽屉里,而这个抽屉不会被提交到 GitHub。
- 本地开发时,钥匙放在一个叫
.env的文件里;这个文件不上传(项目里有个.gitignore名单专门拦它)。 - 部署上线时,钥匙填到托管平台的"环境变量"设置里,同样不进代码仓库。
这些配置 Agent 会替你弄好。你要盯住的就一件事:确认钥匙没被写死在代码里、没被提交到 GitHub。
一句要命的话:别把钥匙提交到 GitHub
Supabase 换过一次命名。新建的项目给你的是 Publishable key 和 Secret key(值分别以 sb_publishable_、sb_secret_ 开头);早一点建的项目里,同样两把叫 anon 和 service_role。两套是一一对应的,规矩完全一样:前面那把能公开,后面那把打死不能露。
老的那两个名字官方计划在 2026 年底停用。你自己项目里到底是哪一套,去 Settings → API Keys 看一眼就知道;拿不准就对着 官方 API Keys 说明页核对。
网上有机器人 7×24 小时专门扫 GitHub 上不小心提交的密钥。一把 service_role 钥匙被扫到,几分钟内你的数据库就可能被人拖走、清空,或者被拿去干坏事、给你刷出天价账单。钥匙一旦提交上去,哪怕马上删掉,也要当成已经泄露,立刻去 Supabase 后台把它作废重发一把。
密钥安全小卡(记住这几条就够)
- 钥匙不写死在代码里,放环境变量(
.env/ 平台设置)里。 .env一定在.gitignore名单里,不提交。- 万能钥匙(
sb_secret_/service_role)只在后端用,绝不进前端、不进 GitHub、不发群里。 - 不小心提交了钥匙 → 当作已泄露 → 立刻去 Supabase 作废重发,再把新钥匙填回环境变量。
- 不确定某样东西能不能公开?先当成不能,去问你的 Agent:"这个贴到前端/GitHub 安全吗?"
动手:部署上线
部署前,先问它一句:
我要部署了。帮我检查一遍:
1. 我的 Supabase 钥匙有没有写死在代码里?有的话挪到环境变量。
2. .env 有没有在 .gitignore 里、确保不会被提交到 GitHub?
3. 万能钥匙(sb_secret_ 或 service_role 那把)有没有不小心出现在前端代码里?
逐条告诉我检查结果。
这次是带后端连接的应用,和第一章纯静态站不同,得部署到一个能跑它的托管平台。让 Agent 帮你选一个合适的、并把 Supabase 的连接信息配进平台的环境变量里:
帮我把这个全栈版 Steve's Repair 部署上线,选一个适合它的免费托管平台。
把 Supabase 的项目地址和前台钥匙配到平台的环境变量里(不要写进代码、不要提交到 GitHub)。
部署好之后,把线上网址给我,我要打开验证登录和提交工单都正常。
部署通常要先把项目传到 GitHub。第一章 1.8 的 Git、1.10–1.11 的上线你走过一遍,这次同理;Agent 会带你。传之前,务必先确认上面那三条钥匙检查都过了。
验证:线上真能用,才算上线
用手机或另一台设备打开线上网址,注册一个新账号、登录、提交一条工单、刷新看还在;再用店主账号登录后台,看得到全部工单。这一圈走通,你的全栈毕业作品就真上线了。不是在你自己电脑上能跑,是别人从任何设备都能用。
打开你项目的 GitHub 仓库,搜一下你的钥匙有没有出现在里面(尤其 service_role 那串)。翻不到,才安心。万一翻到了,立刻去 Supabase 作废重发。
自检:上线了,钥匙也得安顿好
对着线上真网址和 GitHub 仓库逐条核对。
下面哪把钥匙,绝对不能提交到 GitHub、也不能出现在网页前端?
部署卡住、或者拿不准某样东西能不能公开?别自己硬猜。把情况发到群里,或直接找 Abel、助教。钥匙安全这事,宁可多问一句。