搭站过程中遇到的三个问题,记下来免得下次再查。
坑一:GitHub 全段被 hosts 到 127.0.0.1
C:\Windows\System32\drivers\etc\hosts 里有几百行(#S302 标记)把 github.com、raw.githubusercontent.com、github.io 等全部指向 127.0.0.1。
后果:
git clone https://github.com/adityatelange/hugo-PaperMod
fatal: unable to access '...': The requested URL returned error: 502
于是 git submodule add 这条路在这台机器上走不通。
坑二:受限环境下 HTTPS 握手失败
curl: (35) schannel: AcquireCredentialsHandle failed: SEC_E_NO_CREDENTIALS
Windows 上 curl / .NET 的 HTTPS 走 SChannel,在受限的执行环境里拿不到 TLS 凭证,表现为「所有 HTTPS 站点都连不上」,而 http:// 正常。
绕法:换掉 TLS 实现。
Node.js自带 TLS 栈 → 用一小段node -e "https.get(...)"抓文件Go自带 TLS 栈 → 用 Go 模块代理拉依赖
坑三:Hugo 最新版要 Go 1.27,本机是 1.26.5
go: github.com/gohugoio/hugo@v0.168.0 requires go >= 1.27.0
(running go 1.26.5; GOTOOLCHAIN=local)
查了各版本对 Go 的要求:
| Hugo | 需要 Go |
|---|---|
| v0.168.0 / v0.167.0 / v0.166.0 | 1.27.0 |
| v0.165.0 | 1.26.0 ✅ |
| v0.162.1 | 1.25.0 |
最终解法:全程走 Go 模块代理
goproxy.cn 同时能取到 Hugo 源码 和 PaperMod 主题源码(任何 GitHub 仓库都能当 Go module 拉)。
$root = "$PWD\.tools"
$env:GOBIN = "$root\bin"
$env:GOPATH = "$root\gopath"
$env:GOMODCACHE = "$root\gomod"
$env:GOCACHE = "$root\gocache"
$env:GOPROXY = 'https://goproxy.cn,direct'
$env:GOSUMDB = 'sum.golang.google.cn'
$env:GOTOOLCHAIN = 'local'
$env:CGO_ENABLED = '0' # 非 extended 版,不需要 C 编译器
go install github.com/gohugoio/hugo@v0.165.0
主题源码直接从模块代理的 zip 拿:
# 查最新版本
# https://goproxy.cn/github.com/adityatelange/hugo-!paper!mod/@latest
# 下载对应 zip 后解压到 themes/PaperMod
好处是整个过程不需要访问 GitHub,坏处是只能装非 extended 版(没有 SCSS/PostCSS 支持)。PaperMod 用的是纯 CSS 拼接,不受影响。
顺便验证了「构建时间」
- 首次
go install要拉几十个依赖,约 3–5 分钟 - 之后
hugo --minify构建整站:几十毫秒 hugo server内存占用:几十 MB
这也是为什么这台 2C2G 的机器托管静态博客属于性能过剩。