三种免费部署方式,十分钟把站点挂上网
站点在本地跑起来之后,下一步就是让别人能打开它。静态站的好处是完全不需要服务器,直接挂在免费的托管服务上就行。
先明确一件事:site/ 目录就是整个网站。 里面全是 HTML、CSS、JS 和图片,没有任何需要服务端处理的东西。谁提供静态文件托管,谁就能跑这个站。
一、GitHub Pages
适合:代码已经在 GitHub 上、想顺手用仓库管理版本的人。
- 新建一个仓库,把站点文件推上去:
cd myblog
git init
git add .
git commit -m "first commit"
git branch -M main
git remote add origin git@github.com:你的用户名/仓库名.git
git push -u origin main
- 打开仓库的 Settings → Pages,Source 选
Deploy from a branch,分支选main、目录选/ (root),保存。 - 等一两分钟,访问
https://你的用户名.github.io/仓库名/。
要想访问地址不带仓库名(https://你的用户名.github.io),得把仓库命名为 你的用户名.github.io。
注意:GitHub Pages 在公开仓库上免费,私有仓库需要付费套餐。另外默认构建有大小和流量上的软性限制,个人博客完全够用,具体额度以官方文档为准。
这个仓库可以同时放源码和产物:源码放 content/、build.py,产物提交到单独的 docs/ 目录,Pages 的目录就选 /docs。这样在 GitHub 上也能直接改文章、提交,线上自动更新。
二、Netlify
适合:不想碰 Git、想最快看到结果的人。
- 在本地构建好:
python3 build.py - 打开 app.netlify.com/drop,把
site文件夹直接拖进去。 - 几秒后它给你一个
xxx.netlify.app的地址,可以立刻分享。 - 要绑定自己的域名,去 Domain settings 添加,然后按提示在域名商那边加一条 CNAME 记录。
拖拽方式改文章不太方便(每次都得重新拖),所以更推荐把 GitHub 仓库连上去:构建命令留空,Publish directory 填 site。不过 Netlify 的构建环境没有 Python?——有的,build.py 只用到标准库,所以构建命令直接写 python3 build.py 也能跑通。
三、Cloudflare Pages
适合:想要无限流量、且域名已经托管在 Cloudflare 的人。
- 登录 Cloudflare 控制台 → Workers & Pages → Create → Pages;
- 连接 GitHub 仓库;
- Framework preset 选
None,Build command 填python3 build.py,Build output directory 填site; - 保存部署,之后每次
git push自动重新构建。
Cloudflare 的免费档在请求数和带宽上给得比较宽松,对个人站点基本等于不花钱。
自定义域名要做的三件事
- 在域名商那里把域名解析指向托管商给出的地址(CNAME 或 A 记录);
- 在托管商那里添加自定义域名,开启 HTTPS(三家都提供免费证书,一般自动签发);
- 回到
build.py,把CONFIG里的site_url改成你的真实域名——它会影响 RSS 和 sitemap 里的链接,不改的话订阅器里的文章链接会指向example.com。
CONFIG = {
"title": "我的博客",
"site_url": "https://your-domain.com", # ← 改这一行
...
}
关于国内访问
如果服务器在境外(以上三家都是),国内访问速度看线路,有些时候会不稳定。三个选择:
- 用 Cloudflare 的 CDN 加速(免费),通常能改善;
- 换国内的静态托管或对象存储(OSS/COS + CDN),访问快,但自定义域名需要 ICP 备案,流程少则一两周;
- 先不管,反正是给自己和搜索结果看的,慢一点也能接受。
我的选择是先跑起来,真的有人反馈慢再优化。不要在建站第一天就去折腾备案和 CDN。
部署完的检查清单
- 首页能打开,样式正常(不是一堆没样式的纯文字)
- 随便点一篇文章,上一页/下一页能跳转
- 搜索页输入关键词能出结果(注意:必须通过 http 访问,本地直接双击 HTML 文件会因为浏览器安全策略加载不了
index.json) - 深色模式切换正常,刷新后保持
-
/feed.xml能被浏览器正常解析(打开不是报错页) - 手机上打开看一眼,字号和边距是否还舒服