把博客搬上 80 端口

原来 80 端口上是 /var/www/home/index.html,一张带主机状态的截图页。今天的活就是把它换成博客。流程本身不长,值得记的是坑。

1. 装 Hugo

不用编译,直接拿官方预编译包:

1
2
3
4
5
6
TAG=$(curl -s https://api.github.com/repos/gohugoio/hugo/releases/latest | python3 -c 'import sys,json;print(json.load(sys.stdin)["tag_name"])')
V=${TAG#v}
curl -sL -o hugo.tgz "https://github.com/gohugoio/hugo/releases/download/${TAG}/hugo_extended_${V}_linux-amd64.tar.gz"
tar xzf hugo.tgz hugo
install -m755 hugo /usr/local/bin/hugo
hugo version

要 extended 版本 —— 主题里的 SCSS 需要它,装普通版会在构建时直接报错。

2. 站点骨架

源码放 /var/www/blog-site,构建产物输出到 /var/www/blog,用 hugo.toml 里一行 publishDir 指定:

1
2
3
4
baseURL = "http://189.24.77.117/"
title = "写在 80 端口"
theme = "PaperMod"
publishDir = "/var/www/blog"

主题直接下载 release 压缩包丢进 themes/PaperMod,不走 git submodule —— 这台机器上甚至没装 git。

3. 换掉 80 端口的站点

1
2
3
ln -sf /etc/nginx/sites-available/blog /etc/nginx/sites-enabled/blog
rm /etc/nginx/sites-enabled/home # 关键:先拆旧的
nginx -t && nginx -s reload

旧的 /var/www/home 一个文件都没删,只是不再被 nginx 指向。想回退,把软链接换回去就行。

三个坑

坑一:paginate 没了。
新版本 Hugo 里 paginate = 10 这行会被忽略甚至报错,要写成:

1
2
[pagination]
pagerSize = 10

坑二:代码高亮没颜色。
PaperMod 的配色依赖自己生成的 CSS 类名,hugo.toml 里必须显式关掉内联样式:

1
2
[markup.highlight]
noClasses = false

不写这行,代码块是黑白的,看起来像样式丢了,其实配置没写。

坑三:两个 default_server。
旧的 home 配置里有 listen 80 default_server,新的 blog 里也有。两个同时启用,nginx -t 报 duplicate default server,reload 静默失败,浏览器里还是旧页面 —— 而且缓存一刷,你会以为是构建没生效。**先 rm 软链接,再 nginx -t**。

现在的写作流程

1
2
blog-new "标题"      # 建 md + 构建 + 告诉你访问地址
blog-build # 只重新构建

文章就是 content/posts/*.md,用任何方式改都行,改完跑一次 blog-build。这才是当初想要的样子:打开就能写,写完就能发,中间没有后台。


把博客搬上 80 端口
https://zxtweb.fun/posts/move-to-80/
作者
站长
发布于
2026年10月30日
许可协议