发布于 2026-10-22 · 最后核实:2026-10-22 · 文中价格与额度以各官网为准
部署平台每隔一段时间就会改版界面、调整免费额度,但「把一个网站放到网上」这件事的底层流程这些年几乎没变过。把这套流程弄懂,你就不必每换一个平台都重新查一遍教程。
结论先说:现代托管平台的标准模式是「Git 仓库 → 自动构建 → 全球分发」。你要做的只有六件事:准备好能本地构建的代码、推到 Git 仓库、在平台导入仓库、填对构建设置、配好环境变量、绑定域名。 学会预览部署和回滚,你就能放心地频繁更新。
先分清:你的网站是哪一种
| 类型 | 特点 | 部署难度 |
|---|---|---|
| 纯静态站 | 构建后就是一堆 HTML/CSS/JS 文件,比如博客、作品集、文档站 | 最简单,几乎所有平台都免费支持 |
| 带服务端逻辑的站 | 有 API 接口、服务端渲染、需要读写数据库 | 需要平台支持对应的运行时(Serverless 函数、边缘函数等) |
| 需要常驻进程的应用 | 长时间运行的后台服务、WebSocket、定时任务密集 | 免费的静态托管平台通常不适合,需要容器或服务器类服务 |
一个人起步时,尽量把网站做成前两种:内容用静态生成,少量动态功能交给 Serverless 函数,数据交给 Supabase 这类托管数据库。这样部署最省心,也最容易落在免费额度内。
第一步:确认代码能在本地构建成功
这是最容易被跳过、也最常导致部署失败的一步。在推代码之前,先在本地跑一遍项目的构建命令(常见的是 npm run build),确认:
- 构建能成功结束,没有报错;
- 你知道构建产物输出到哪个目录(比如
dist、build、out、.next); - 依赖都写进了
package.json之类的清单文件,并且锁文件(package-lock.json、pnpm-lock.yaml等)也提交了。
本地都构建不过,平台上一定也过不了。平台的构建环境是一台干净的机器,你电脑上「碰巧装过」的东西它没有。
第二步:把代码推到 Git 仓库
在 GitHub 或 GitLab 上新建仓库,把代码推上去(Git 的基本操作见本站的 Git 入门教程)。私有仓库也完全可以,主流平台都支持。
推之前检查 .gitignore:node_modules、构建产物目录、.env 这类存放密钥的文件,都不应该进仓库。
第三步:在平台导入仓库
以 Vercel、Netlify、Cloudflare Pages 为例,流程几乎一样:
- 用 GitHub 账号登录平台,授权它读取你的仓库。授权时可以只勾选需要部署的那几个仓库,而不是全部。
- 选择要部署的仓库。
- 选择生产分支,通常是
main。推到这个分支的代码会部署成正式网站,推到其他分支的代码会生成预览版本。
国内访问为主的项目,也可以考虑 腾讯 EdgeOne 这类在国内有节点的平台,流程同样是连接仓库、填构建设置;但网站如果使用中国内地节点,需要先完成 ICP 备案。
第四步:填对构建设置
平台通常会自动识别 Next.js、Astro、Vite 等常见框架,并预填好设置。但你要能看懂这三项,因为出错时就要靠它们排查:
- 构建命令(Build command):比如
npm run build。 - 输出目录(Output directory):构建产物所在的文件夹,必须和你本地看到的一致。
- 根目录(Root directory):如果项目不在仓库根目录(比如放在
web/子目录里),要在这里指定。
另外留意 Node.js 等运行时的版本。本地用的版本和平台默认版本不一致,是「本地好好的,线上构建失败」的常见原因。可以在项目里声明版本(比如 package.json 的 engines 字段或 .nvmrc 文件),或在平台设置里指定。
第五步:配置环境变量
API 密钥、数据库地址这类信息,不要写在代码里,而是放在平台的「环境变量」设置中,代码通过变量名读取。
几个要点:
- 区分环境:大多数平台允许为生产环境和预览环境设置不同的值。预览环境最好连测试数据库,别让测试数据写进正式库。
- 改了变量要重新部署:Vercel 文档明确写了,对环境变量的修改只作用于新的部署,不会影响已有的部署。改完记得触发一次重新部署。
- 分清公开和私密:很多前端框架约定带特定前缀的变量(例如
NEXT_PUBLIC_、VITE_)会被打包进浏览器端代码,任何访客都能看到。真正的密钥绝不能用这种前缀。
第六步:绑定自己的域名
部署成功后,平台会给你一个免费的子域名(如 项目名.平台域名)。在项目的域名设置里添加你自己的域名,按提示去 DNS 里加 A 记录或 CNAME 记录,平台会自动签发 HTTPS 证书。具体的 DNS 原理、带不带 www 的选择,见本站的 DNS 教程。
上线之后:预览部署和回滚
这是托管平台最值钱、却最常被忽略的两个功能。
预览部署:每当你推送一个非生产分支或打开一个 Pull Request,平台会生成一个独立的预览网址。Cloudflare Pages 的文档描述得很清楚:每个 PR 都会得到一个唯一的预览链接,并随着你继续推送而更新。养成习惯:大改动先开分支,看过预览链接没问题,再合并到 main。
回滚:线上出了问题,第一反应不应该是赶紧改代码,而是先回滚到上一个正常的版本,止住损失,再慢慢查原因。Vercel、Netlify 等平台都支持把生产环境切回之前的某次部署,通常几秒钟生效(不同套餐能回滚的范围不同,以平台文档为准)。注意:回滚恢复的是代码和构建产物,数据库里已经改掉的数据不会跟着回去。
免费方案要留意的几件事
- 读一遍免费计划的使用条款。 有的平台的免费计划只允许个人、非商业用途,网站开始挂广告或卖东西后,按条款应升级或换平台。
- 了解超额后的处理方式。 有的平台超出额度会暂停网站,有的会开始计费。具体额度变化频繁,请以官网定价页为准。
- 免费数据库可能会休眠。 部分托管数据库的免费项目长期无活动会被暂停,正式项目要留意。
- 构建次数和构建时长也是额度。频繁推送小改动,可能比你想象的更快用完构建额度。
常见的坑
- 输出目录填错:构建成功但网站一片空白或 404,八成是输出目录不对。
- 大小写问题:你的电脑可能不区分文件名大小写,而构建服务器(Linux)区分。
import './Header'和文件名header.tsx在本地能跑,上线就报错。 - 把密钥提交进了仓库:即使后来删掉,它仍留在 Git 历史里。正确做法是立刻到对应服务后台作废并重新生成这个密钥。
- 单页应用刷新 404:用前端路由的单页应用,直接访问子路径时需要配置「所有路径回退到 index.html」的重写规则,各平台写法不同,查对应文档。
- 只看首页:上线后至少点一遍主要页面、提交一次表单、在手机上打开一次。
- 忘了告诉搜索引擎:上线后在 Google Search Console 验证网站并提交站点地图,再装一个统计工具(比如 Umami),你才知道有没有人来。
一张上线检查清单
- 本地
build成功,知道输出目录 -
.gitignore排除了依赖、构建产物和.env - 平台的生产分支、构建命令、输出目录、运行时版本都确认过
- 环境变量按生产 / 预览分开,密钥没有使用公开前缀
- 自定义域名已绑定,HTTPS 正常
- 知道在哪里点「回滚」
- 读过免费计划的条款和超额规则
这套流程走熟一遍,以后无论换到哪个平台,你需要找的只是「这个平台把这几个设置放在哪里」。
参考资料
- Cloudflare Pages 文档:Git integration guide — https://developers.cloudflare.com/pages/get-started/git-integration/
- Cloudflare Pages 文档:Preview deployments — https://developers.cloudflare.com/pages/configuration/preview-deployments/
- Cloudflare Pages 文档:Custom domains — https://developers.cloudflare.com/pages/configuration/custom-domains/
- Vercel 文档:Deploying to Vercel — https://vercel.com/docs/deployments
- Vercel 文档:Environment variables — https://vercel.com/docs/environment-variables
- Vercel 文档:Instant Rollback — https://vercel.com/docs/instant-rollback
- Netlify 文档:Create deploys — https://docs.netlify.com/deploy/create-deploys/
- GitHub Docs:What is GitHub Pages? — https://docs.github.com/en/pages/getting-started-with-github-pages/what-is-github-pages
- 阿里云帮助中心:什么是 ICP 备案 — https://help.aliyun.com/zh/icp-filing/basic-icp-service/product-overview/what-is-an-icp-filing
常见问题
- 把网站部署上线需要做哪几步?
- 六件事:准备好能本地构建的代码、推到 Git 仓库、在平台导入仓库、填对构建设置、配好环境变量、绑定域名。学会预览部署和回滚,就能放心地频繁更新。
- 为什么本地能跑,部署到平台就构建失败?
- 平台的构建环境是一台干净的机器,你电脑上碰巧装过的东西它没有。常见原因包括依赖没写进清单、锁文件没提交、本地和平台的 Node.js 版本不一致,以及构建服务器(Linux)区分文件名大小写。
- 网站部署成功但一片空白或 404,是什么原因?
- 八成是输出目录填错了。输出目录必须和你本地构建时看到的产物目录一致,比如 dist、build、out、.next。
- 在平台上改了环境变量为什么没生效?
- Vercel 文档写明,对环境变量的修改只作用于新的部署,不会影响已有的部署。改完记得触发一次重新部署。
- 网站上线后出问题,第一步该做什么?
- 先回滚到上一个正常的版本止住损失,再慢慢查原因。Vercel、Netlify 等平台都支持把生产环境切回之前的某次部署。注意回滚恢复的是代码和构建产物,数据库里已经改掉的数据不会跟着回去。