1. 需求背景之前一直使用动态博客程序如 WordPress虽然功能丰富但数据库和 PHP 环境需要持续维护服务器资源占用也偏高。对于以文字内容为主的个人博客静态站点生成器更轻量、更安全且无需数据库访问速度也更快。在本地编写 Markdown 文章通过 Hugo 生成静态页面再同步到云服务器上对外提供服务三丰云现在可以免费提供。这种方式既节省资源又便于版本管理。服务器环境操作系统Ubuntu 22.04已开放端口22、80、443已安装 Nginx2. Hugo 安装与站点创建Hugo 是 Go 语言编写的静态站点生成器单二进制文件安装简单。从 GitHub 获取最新版本bashwget https://github.com/gohugoio/hugo/releases/download/v0.128.0/hugo_extended_0.128.0_linux-amd64.tar.gz tar -xzf hugo_extended_0.128.0_linux-amd64.tar.gz sudo mv hugo /usr/local/bin/ hugo version创建新站点bashhugo new site myblog cd myblog添加主题以 PaperMod 主题为例bashgit init git submodule add https://github.com/adityatelange/hugo-PaperMod.git themes/PaperMod在hugo.toml中指定主题tomltheme PaperMod3. 编写内容与本地预览新建第一篇文章bashhugo new posts/first-post.md编辑content/posts/first-post.md写入测试内容。本地预览bashhugo server -D访问http://localhost:1313查看效果确认无误后生成静态文件bashhugo -D生成的静态文件默认位于public/目录。4. 服务器端 Nginx 配置在云服务器上创建网站根目录bashsudo mkdir -p /var/www/myblog将本地public/目录中的内容上传到服务器bashscp -r public/* user服务器IP:/var/www/myblog/配置 Nginx 站点nginxserver { listen 80; server_name _; # 可替换为实际域名 root /var/www/myblog; index index.html; location / { try_files $uri $uri/ 404; } # 静态资源缓存 location ~* \.(css|js|png|jpg|jpeg|gif|ico|svg)$ { expires 30d; add_header Cache-Control public, immutable; } }启用配置并重启bashsudo ln -s /etc/nginx/sites-available/myblog /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx此时访问服务器 IP 即可看到博客首页。5. 自动化发布脚本每次手动上传比较繁琐可以编写一个简单的部署脚本在本地执行后自动构建并同步到服务器。创建deploy.shbash#!/bin/bash # 构建 hugo # 同步到服务器 rsync -avz --delete public/ user服务器IP:/var/www/myblog/ echo 部署完成赋予执行权限bashchmod x deploy.sh以后每次写完文章运行./deploy.sh即可完成发布。rsync只同步变更文件速度较快。6. HTTPS 配置可选如需启用 HTTPS可使用 Lets Encrypt 申请免费证书bashsudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx -d your-domain.comCertbot 会自动修改 Nginx 配置并启用证书后续通过certbot renew续期即可。7. 运行状态博客上线后页面加载速度明显优于之前的动态程序。内存占用主要来自 Nginx 进程约 50-80MBCPU 基本无负载。对于个人博客场景这套方案在资源利用率和维护成本上都有明显优势。免费虚拟主机通常不支持 SSH 访问和自定义 Nginx 配置因此这类部署方式更适合使用云服务器来完成。8. 踩坑记录主题子模块使用git submodule添加主题后克隆仓库时需要加上--recursive参数否则主题目录为空。端口放行部署完成后访问 80 端口无响应检查云服务商安全组策略确认 80 端口已放行。baseURL 设置如果博客部署在子目录而非根路径需要在hugo.toml中配置baseURL为实际路径。文件权限Nginx 运行用户通常为www-data需要有网站目录的读取权限使用chown或chmod调整。