CHAPTER 02 · 部署上线
让全世界都能打开你的网站
"部署"就是把本地的一堆文件,放到一台别人能访问的服务器上,并得到一个网址。静态网站的部署特别简单——很多平台免费、不用买服务器、几分钟搞定。这一章海外与国内方案都讲。
① 部署到底在做什么
你现在双击 index.html 只能在自己电脑上看。要让别人访问,文件必须放到一台常年开机、有公网地址的机器上,并且配好网址。部署平台帮你做的正是这件事,你通常只需要"把文件交给它"。交出文件有两种主流方式:
🅰 Git 推送(推荐)
把代码放进 GitHub 仓库,平台监听仓库,你一 git push,它自动上线。改内容→推送→自动更新,是最省心的工作方式。
🅱 拖拽上传
直接在网页上把一个文件夹拖进去就上线。最快最直观,适合第一次体验或临时展示,不用会 Git。
无论哪种方式,交出去的永远是那个纯静态文件夹(手写项目就是 my-site/;SSG 工具就是它的 dist//public/ 产物)。这正是第 01 章说的"产物都是静态文件"的意义。
② 先做选择:海外 还是 国内?
这是本章最重要的一步,直接决定你要不要备案。用一句话概括:
🌍 海外免费平台
GitHub Pages / Vercel / Netlify / Cloudflare Pages
- 完全免费、自带 HTTPS、自带一个能用的二级域名。
- 不需要买服务器,通常也不需要备案(服务器不在大陆)。
- 适合个人作品、练习、面向海外或不受国内访问限制的展示。
- 代价:在中国大陆访问,部分平台可能较慢或不稳定。
🇨🇳 国内云平台
阿里云 OSS / 腾讯云 COS 静态托管、轻量服务器
- 大陆访问速度快、稳定,适合面向国内用户、要长期运营。
- 一般要花钱(静态托管很便宜,常常几元/月甚至免费额度)。
- 用自己的域名 + 大陆节点,必须完成 ICP 备案(见第 04 章)。
- 适合正式项目、企业/校园展示。
建议路线:第一次先把网站"点亮",强烈建议从 GitHub Pages 或 Vercel 起步——5 分钟就能拿到一个真实网址,成就感来得快。等业务真的面向国内用户、需要自己的域名和稳定访问时,再迁到国内方案并走备案。
③ 主流平台横向对比
| 平台 | 地区 | 费用 | 免费二级域名 | 需备案 | 难度 | 适合 |
|---|---|---|---|---|---|---|
| GitHub Pages 海外 | 海外 | 免费 | ✔ | 否 | 低 | 代码已在 GitHub、个人/开源项目 |
| Vercel 海外 | 海外 | 免费额度 | ✔ | 否 | 极低 | 追求最省事、SSG 框架 |
| Netlify 海外 | 海外 | 免费额度 | ✔ | 否 | 极低 | 拖拽上线、表单等小功能 |
| Cloudflare Pages 海外 | 海外 | 免费额度 | ✔ | 否 | 低 | 大流量、CDN 全球加速 |
| 阿里云 OSS 国内 | 大陆 | 按量(便宜) | ✔ | 是* | 中 | 国内长期运营 |
| 腾讯云 COS/静态托管 国内 | 大陆 | 按量(便宜) | ✔ | 是* | 中 | 国内长期运营 |
| 轻量应用服务器 国内 | 大陆 | 包月(几十元/月) | — | 是 | 较高 | 需后台/数据库/自定义 |
* 使用平台自带的境外节点访问域名通常无需备案;一旦绑定你自己的域名并解析到大陆节点,就必须先完成 ICP 备案。
④ 手把手:GitHub Pages(免费)
前提:有一个 GitHub 账号。整个过程 = 把文件传到 GitHub 仓库 → 打开 Pages 开关。
- 1
新建仓库
登录 GitHub → 右上角
+→New repository→ 起个名字(如my-site)→ 选 Public →Create repository。 - 2
上传文件
两种方式任选其一:
网页拖拽(最简单):在仓库页点
uploading an existing file,把my-site里的文件(含index.html)拖进去,写句说明,点Commit changes。命令行(适合已会 Git 的人):
终端cd my-site git init git add . git commit -m "deploy: my first static site" git branch -M main git remote add origin https://github.com/你的用户名/my-site.git git push -u origin main - 3
开启 Pages
仓库
Settings→ 左侧Pages→ Source 选Deploy from a branch→ 分支选main、文件夹选/(root)→Save。 - 4
拿到网址
稍等 1–2 分钟,页面顶部会出现你的线上地址,形如:
你的网站地址https://你的用户名.github.io/my-site/打开它,你已经有一个"活"的网站了 🎉。以后改内容,只需重新 push(或重新上传),网站自动更新。
小技巧:如果想让网址更短(用户名.github.io 直接进首页),可以新建一个名字恰好为 用户名.github.io 的仓库,把首页文件放在其根目录。
⑤ 最省事:Vercel / Netlify
这两个平台对新手极其友好:用 GitHub 账号一键登录,连上仓库就自动部署,还支持"改了自动上线"。以 Vercel 为例:
- 1
用 GitHub 登录
打开 vercel.com →
Continue with GitHub授权登录。 - 2
导入仓库
在 Dashboard 点
Add New → Project→ 找到你刚才的my-site仓库 →Import。 - 3
直接部署
纯静态项目一般不用改任何设置(框架选 "Other",构建命令留空),点
Deploy。几秒后给你一个xxx.vercel.app网址。 - 4
拖拽党更简单
不想用 Git?打开 Netlify Drop,直接把整个文件夹拖进网页框,立刻上线。全程零命令行。
Vercel / Netlify 的免费二级域名(如 .vercel.app)在国内个别网络下访问可能不稳定。若要面向国内稳定访问,看下面国内方案;要绑定自己的域名,看 第 03 章。
⑥ Cloudflare Pages(全球 CDN)
Cloudflare 是全球顶级网络服务商,Pages 免费额度慷慨、自带 CDN 加速,访问速度通常优于同类海外平台,并且它家还有免费的域名注册/DNS 服务,很适合作为"域名 + 托管"一站式方案。步骤与 Vercel 类似:Cloudflare Dashboard → Workers & Pages → Create → Pages → 连接 Git 仓库或直接上传。
⑦ 国内方案:云存储静态托管 / 服务器 需备案
面向国内用户、要长期稳定运营,推荐用国内云的"对象存储静态网站托管",它比传统服务器省心、还便宜。
方案 A:对象存储静态托管(推荐)
阿里云 OSS、腾讯云 COS 都提供"把一桶文件当作网站"的功能:
- 1
注册并实名认证
注册阿里云/腾讯云账号,完成个人实名认证(这步国内云都要求,也是后续备案的前提)。
- 2
创建存储桶(Bucket)
进入 OSS/COS 控制台 → 创建存储桶 → 地域选离你用户近的 → 读写权限选公有读私有写。
- 3
上传静态文件
把
my-site里的文件上传进桶,确保首页文件名为index.html。 - 4
开启"静态网站托管"
在 Bucket 设置里找到"基础设置 → 静态网站"→ 开启,把默认首页设为
index.html、默认 404 页设为404.html。 - 5
绑定自定义域名 + 备案
默认给的是平台长域名。要用自己的域名,需在"传输管理/域名管理"里绑定 → 去 DNS 加一条 CNAME 记录指向该桶 → 而域名解析到大陆节点必须先完成 ICP 备案(见第 04 章),并配置 HTTPS 证书。
方案 B:轻量应用服务器
如果你还需要后台、数据库、跑脚本(不只是静态展示),就买一台"轻量应用服务器",用可视面板一键装 Nginx/WordPress,把文件放进网站根目录(如 /var/www/html)即可。同样需要 ICP 备案。难度更高,纯静态网站一般用不上它。
合规红线:服务器在中国大陆,却未完成 ICP 备案就对外提供网站服务,属于违规——平台会阻断访问(域名解析会被拦截)。这也是很多新手"绑了域名却打不开"的真正原因。请务必先看 第 04 章备案。
⑧ 加上 HTTPS(那把小绿锁)
现代网站几乎都应是 https://(加密传输)。好消息是:绝大多数平台都免费自动提供,你基本不用操心。
- GitHub Pages / Vercel / Netlify / Cloudflare:用平台自带域名默认就是 HTTPS;绑定自定义域名后,平台会自动签发续期证书(基于 Let's Encrypt)。
- 国内云:在存储桶/CDN 的"证书"处申请或上传免费证书后开启 HTTPS;部分平台提供免费 DV 证书可直接申请。
只要看到地址栏有小锁 🔒、且访问 http:// 会自动跳到 https://,就说明配置成功。
⑨ 部署常见问题
为什么我上线后样式/图片全丢了?▾
几乎都是路径大小写或绝对路径问题。Linux 服务器区分大小写:文件叫 Style.CSS 但你写 style.css 就 404。另外别用 /Users/.../Desktop 这类本地绝对路径。用相对路径,并保证大小写一致。
打开网址显示 404 Not Found?▾
确认首页文件叫 index.html 且在根目录;确认已开启"静态网站托管/Deploy from branch"并保存。若用子目录部署(GitHub Pages 的 /my-site/),记得内部资源用相对路径或补上子目录前缀。
改了内容,线上没变?▾
多半是浏览器缓存。用 Cmd/Ctrl + Shift + R 强制刷新;云端 CDN 缓存可等几分钟或到平台点"清除缓存/重新部署"。
免费平台会不会哪天收费/关停?▾
对个人静态小站,上述免费额度都绰绰有余,可长期使用。但把重要网站只押在免费平台上不稳妥——养成源码随时在 Git、可随时换平台部署的习惯,迁移成本就极低。