Skip to main content

从零搭建 Hugo 博客 - 完整部署教程

·989 words·2 mins

概述
#

本文详细记录了从零开始搭建 Hugo 静态博客的完整过程,包括环境部署、主题选择、配置优化等全过程。

环境准备
#

系统信息
#

  • 操作系统: Debian 12 (bookworm)
  • CPU: x86_64
  • 内存: 1.6GB
  • 磁盘: 40GB (已用 6GB)

安装 Hugo
#

官方推荐安装方式:

# Ubuntu/Debian
sudo apt update
sudo apt install hugo

# 或使用 wget 下载最新版
cd /tmp
wget https://github.com/gohugoio/hugo/releases/download/v0.143.0/hugo_extended_0.143.0_linux-amd64.tar.gz
tar -xzf hugo_extended_0.143.0_linux-amd64.tar.gz
sudo mv hugo /usr/local/bin/
sudo chmod +x /usr/local/bin/hugo

验证安装:

hugo version
# 输出: hugo v0.143.0-extended linux/amd64

主题选择
#

主题对比
#

主题 优点 缺点 推荐指数
Even 简洁、响应式、中文友好 首页不显示文章列表 ⭐⭐⭐⭐
Beautiful Hugo Bootstrap 设计、现代化 首页配置复杂 ⭐⭐⭐
Diary/Benben 日记风格、简洁 主题不活跃 ⭐⭐

选择 Even 的理由
#

  • 代码简洁,易于定制
  • 响应式设计,移动端友好
  • 中文社区支持好
  • 文档完善

项目初始化
#

创建新站点
#

# 创建项目目录
mkdir -p ~/domains/ai.mylog.vip
cd ~/domains/ai.mylog.vip

# 初始化 Hugo 站点
hugo new site .

# 添加 git 管理
git init
git submodule add https://github.com/olOwOlo/hugo-theme-even.git themes/even

基础配置
#

hugo.toml 配置文件:

baseURL = "https://ai.mylog.vip"
languageCode = "zh-CN"
title = "你的博客名称"
theme = "even"

enableRobotsTXT = true
enableEmoji = true

hasCJKLanguage = true
archivePaginate = 50

[author]
  name = "作者名"

[sitemap]
  changefreq = "weekly"
  priority = 0.5
  filename = "sitemap.xml"

[params]
  version = "4.x"
  since = "2026"
  logoTitle = "你的博客名称"
  description = "博客描述"

文章创建
#

创建新文章
#

# 创建文章
hugo new posts/my-first-post.md

# 或使用特定分类
hugo new posts/tech/my-article.md

文章格式
#

---

title: "文章标题"
featured: true
date: 2026-03-08T10:00:00+08:00
type: "post"
categories: ["技术"]
tags: ["Hugo", "教程"]
featureimage: "/images/cover_20260310_140140.png"
showHero: true
description: "文章摘要"
---

![](/images/cover_20260310_140140.png)

文章内容...

type 字段说明
#

Even 主题要求文章添加 type: "post" 才能正确识别:

# 批量添加 type 字段
for f in content/posts/*.md; do
  if ! grep -q "^type:" "$f"; then
    sed -i '1a type: "post"' "$f"
  fi
done

内容管理
#

文章分类
#

# 创建分类目录
mkdir content/posts/tech
mkdir content/posts/life

# 创建文章
hugo new posts/tech/hugo-tutorial.md
hugo new posts/life/my-story.md

标签管理
#

# 创建标签页面
hugo new tags/my-tag.md

域名与部署
#

Nginx 配置
#

server {
    listen 80;
    server_name ai.mylog.vip;

    root /var/www/ai.mylog.vip/public;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~* \.(css|js|png|jpg|jpeg|gif|ico|svg|woff|woff2)$ {
        expires 7d;
        add_header Cache-Control "public, immutable";
    }
}

权限设置
#

# 创建目录
sudo mkdir -p /var/www/ai.mylog.vip
sudo cp -r ~/domains/ai.mylog.vip/* /var/www/ai.mylog.vip/

# 设置权限
sudo chown -R www-data:www-data /var/www/ai.mylog.vip
sudo chmod -R 755 /var/www/ai.mylog.vip/public/
sudo chmod -R 644 /var/www/ai.mylog.vip/public/*

域名解析
#

在 DNS 服务商添加 A 记录:

ai.mylog.vip  →  47.252.1.11

重启 Nginx
#

sudo nginx -t
sudo systemctl reload nginx

常见问题
#

1. 权限问题
#

错误: stat() failed (13: Permission denied)

解决:

sudo chmod -R 755 /var/www/ai.mylog.vip/public/

2. 404 错误
#

检查:

  • Nginx root 路径是否正确
  • public 目录是否有文件
  • 文件权限是否正确

3. 文章不显示
#

检查:

  • type: "post" 是否添加
  • Hugo 配置的 mainSections 是否匹配
  • 重新构建站点

构建脚本
#

创建自动构建脚本:

#!/bin/bash
# build.sh

cd /var/www/ai.mylog.vip
hugo --minify

# 清理旧文件(可选)
# find public -type f -mtime +30 -delete

echo "Build completed at $(date)"

使用 cron 定时构建:

# 每天凌晨 2 点构建
0 2 * * * /var/www/ai.mylog.vip/build.sh

SEO 优化
#

sitemap.xml
#

Hugo 自动生成,检查:

curl -s https://ai.mylog.vip/sitemap.xml | head -20

robots.txt
#

User-agent: *
Sitemap: https://ai.mylog.vip/sitemap.xml

总结
#

本文档覆盖了 Hugo 博客的完整部署流程,从环境准备到域名配置,每一步都有详细说明。

下次更新: 2026-03-08


相关链接: