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 PagesVercel 起步——5 分钟就能拿到一个真实网址,成就感来得快。等业务真的面向国内用户、需要自己的域名和稳定访问时,再迁到国内方案并走备案。

③ 主流平台横向对比

平台地区费用免费二级域名需备案难度适合
GitHub Pages 海外海外免费代码已在 GitHub、个人/开源项目
Vercel 海外海外免费额度极低追求最省事、SSG 框架
Netlify 海外海外免费额度极低拖拽上线、表单等小功能
Cloudflare Pages 海外海外免费额度大流量、CDN 全球加速
阿里云 OSS 国内大陆按量(便宜)是*国内长期运营
腾讯云 COS/静态托管 国内大陆按量(便宜)是*国内长期运营
轻量应用服务器 国内大陆包月(几十元/月)较高需后台/数据库/自定义

* 使用平台自带的境外节点访问域名通常无需备案;一旦绑定你自己的域名并解析到大陆节点,就必须先完成 ICP 备案。

④ 手把手:GitHub Pages(免费)

前提:有一个 GitHub 账号。整个过程 = 把文件传到 GitHub 仓库 → 打开 Pages 开关。

  1. 1

    新建仓库

    登录 GitHub → 右上角 +New repository → 起个名字(如 my-site)→ 选 PublicCreate repository

  2. 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. 3

    开启 Pages

    仓库 Settings → 左侧 PagesSourceDeploy from a branch → 分支选 main、文件夹选 /(root)Save

  4. 4

    拿到网址

    稍等 1–2 分钟,页面顶部会出现你的线上地址,形如:

    你的网站地址
    https://你的用户名.github.io/my-site/

    打开它,你已经有一个"活"的网站了 🎉。以后改内容,只需重新 push(或重新上传),网站自动更新。

小技巧:如果想让网址更短(用户名.github.io 直接进首页),可以新建一个名字恰好为 用户名.github.io 的仓库,把首页文件放在其根目录。

⑤ 最省事:Vercel / Netlify

这两个平台对新手极其友好:用 GitHub 账号一键登录,连上仓库就自动部署,还支持"改了自动上线"。以 Vercel 为例:

  1. 1

    用 GitHub 登录

    打开 vercel.comContinue with GitHub 授权登录。

  2. 2

    导入仓库

    在 Dashboard 点 Add New → Project → 找到你刚才的 my-site 仓库 → Import

  3. 3

    直接部署

    纯静态项目一般不用改任何设置(框架选 "Other",构建命令留空),点 Deploy。几秒后给你一个 xxx.vercel.app 网址。

  4. 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. 1

    注册并实名认证

    注册阿里云/腾讯云账号,完成个人实名认证(这步国内云都要求,也是后续备案的前提)。

  2. 2

    创建存储桶(Bucket)

    进入 OSS/COS 控制台 → 创建存储桶 → 地域选离你用户近的 → 读写权限选公有读私有写

  3. 3

    上传静态文件

    my-site 里的文件上传进桶,确保首页文件名为 index.html

  4. 4

    开启"静态网站托管"

    在 Bucket 设置里找到"基础设置 → 静态网站"→ 开启,把默认首页设为 index.html默认 404 页设为 404.html

  5. 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、可随时换平台部署的习惯,迁移成本就极低。