2.5
第二章 · 第 5 节

部署全栈 + 密钥安全

这一节你会拿到

把你的全栈版 Steve's Repair 部署上线,拿到一个别人也能打开的网址;并且学会一件必须懂的安全常识:别把钥匙提交到 GitHub。这一节做完,毕业作品就上线了。

回头一题

这道题不考这一节,考前面学过的。想不起来就回去翻一眼再答——记不住的东西,真用的时候一样会卡。

第一章上线时,部署平台拿到你的代码之后先做了什么?

第一章你已经把静态官网上过一次线(1.10 推到 GitHub、1.11 连平台发布)。这次东西多了一样:你的网站要连 Supabase,得带着连接信息:Supabase 的项目地址,和一把钥匙(key)。上线之前,得先把这把钥匙安顿好。安顿不好,是这一章唯一一个"真会出事"的地方,所以这一节专门讲。

先认识:你的项目有两把钥匙

打开 Supabase 后台,你会看到它给了你不止一把 key。别混,记住两把最关键的,一把可以公开、一把打死不能露:

前台钥匙(公开的)
新项目里叫 Publishable key(值以 sb_publishable_ 开头);老项目里叫 anon。这把是给网页用的,它出现在前端、被人看到,也不要紧。
为什么不怕?因为你上一节配的 RLS 在数据库门口把着,别人就算拿到这把钥匙,也只能干"规则允许的事"(比如注册、看自己的),动不了别人的数据。
万能钥匙(保密的)
新项目里叫 Secret key(值以 sb_secret_ 开头);老项目里叫 service_role。这把能绕过所有规则、动所有人的数据
这把钥匙绝对不能出现在网页里、不能提交到 GitHub、不能发给任何人。它漏出去,等于把整个数据库的大门钥匙贴到了大街上。

钥匙该放哪:环境变量

那钥匙不写进代码,写哪儿?写进一个专门放这类"敏感信息"的地方,叫环境变量。你就理解成:代码里只写一句"去那个专门的抽屉里取钥匙",钥匙本身放在抽屉里,而这个抽屉不会被提交到 GitHub。

这些配置 Agent 会替你弄好。你要盯住的就一件事:确认钥匙没被写死在代码里、没被提交到 GitHub。

一句要命的话:别把钥匙提交到 GitHub

为什么会看到两套名字

Supabase 换过一次命名。新建的项目给你的是 Publishable keySecret key(值分别以 sb_publishable_sb_secret_ 开头);早一点建的项目里,同样两把叫 anonservice_role两套是一一对应的,规矩完全一样:前面那把能公开,后面那把打死不能露。

老的那两个名字官方计划在 2026 年底停用。你自己项目里到底是哪一套,去 Settings → API Keys 看一眼就知道;拿不准就对着 官方 API Keys 说明页核对。

这不是吓唬你,是真会出事。

网上有机器人 7×24 小时专门扫 GitHub 上不小心提交的密钥。一把 service_role 钥匙被扫到,几分钟内你的数据库就可能被人拖走、清空,或者被拿去干坏事、给你刷出天价账单。钥匙一旦提交上去,哪怕马上删掉,也要当成已经泄露,立刻去 Supabase 后台把它作废重发一把。

密钥安全小卡(记住这几条就够)

动手:部署上线

操作 · 一:先让 Agent 帮你检查钥匙安全。

部署前,先问它一句:

我要部署了。帮我检查一遍:
1. 我的 Supabase 钥匙有没有写死在代码里?有的话挪到环境变量。
2. .env 有没有在 .gitignore 里、确保不会被提交到 GitHub?
3. 万能钥匙(sb_secret_ 或 service_role 那把)有没有不小心出现在前端代码里?
逐条告诉我检查结果。
操作 · 二:让 Agent 帮你部署。

这次是带后端连接的应用,和第一章纯静态站不同,得部署到一个能跑它的托管平台。让 Agent 帮你选一个合适的、并把 Supabase 的连接信息配进平台的环境变量里:

帮我把这个全栈版 Steve's Repair 部署上线,选一个适合它的免费托管平台。
把 Supabase 的项目地址和前台钥匙配到平台的环境变量里(不要写进代码、不要提交到 GitHub)。
部署好之后,把线上网址给我,我要打开验证登录和提交工单都正常。
如果之前没连过 GitHub

部署通常要先把项目传到 GitHub。第一章 1.8 的 Git、1.10–1.11 的上线你走过一遍,这次同理;Agent 会带你。传之前,务必先确认上面那三条钥匙检查都过了。

验证:线上真能用,才算上线

操作 · 三:拿到网址,当个真顾客走一遍。

用手机或另一台设备打开线上网址,注册一个新账号、登录、提交一条工单、刷新看还在;再用店主账号登录后台,看得到全部工单。这一圈走通,你的全栈毕业作品就真上线了。不是在你自己电脑上能跑,是别人从任何设备都能用

操作 · 四(安全复查):去 GitHub 上翻一眼。

打开你项目的 GitHub 仓库,搜一下你的钥匙有没有出现在里面(尤其 service_role 那串)。翻不到,才安心。万一翻到了,立刻去 Supabase 作废重发。

自检:上线了,钥匙也得安顿好

2.5 · 毕业作品上线核对

对着线上真网址和 GitHub 仓库逐条核对。

下面哪把钥匙,绝对不能提交到 GitHub、也不能出现在网页前端?

部署卡住、或者拿不准某样东西能不能公开?别自己硬猜。把情况发到群里,或直接找 Abel、助教。钥匙安全这事,宁可多问一句。

答对了!