Ubuntu服务器从零开始安装Hugo博客教程

本教程记录在Ubuntu服务器上安装和配置Hugo博客的完整过程,使用YinYang主题,并配置Nginx反向代理实现域名访问。

前提条件

  • Ubuntu服务器,已安装git、python3、vim、nano等基础工具
  • 已创建普通用户(本教程使用用户名:lee)
  • 具有sudo权限

1. 安装Hugo

使用apt包管理器安装(推荐)

# 更新包列表
sudo apt update

# 安装Hugo扩展版
sudo apt install hugo

# 验证安装
hugo version

2. 创建Hugo项目

# 创建新的Hugo网站
hugo new site myblog

# 进入项目目录
cd myblog

# 初始化git仓库
git init
echo "public/" > .gitignore

3. 安装YinYang主题

# 使用HTTPS URL克隆主题(避免SSH密钥问题),模板选自己的自行clong
git clone https://github.com/joway/hugo-theme-yinyang.git themes/yinyang

# 验证主题安装
ls themes/yinyang/layouts/

4. 配置Hugo

创建配置文件

编辑 hugo.toml 文件:

nano hugo.toml

添加以下配置内容,域名信息要改成自己的:

baseURL = "http://blog.liuyuebin.cn/" 
languageCode = "en-us"
title = "Lee's Blog"
theme = "yinyang"
DefaultContentLanguage = "en"

[markup]
[markup.goldmark]
[markup.goldmark.renderer]
unsafe = true
[markup.highlight]
guessSyntax = true
noClasses = true
style = "bw"
tabWidth = 2

[author]
name = "Lee"
homepage = "https://blog.liyuebin.cn/"

[languages]
[languages.en]
contentDir = "content/en"
languageName = "English"
weight = 1

[languages.cn]
contentDir = "content/cn"
languageName = "Chinese"
weight = 2

[params]
mainSections = ["posts"]
headTitle = "Lee Wang"

[[params.socials]]
name = "About Me"
link = "https://blog.liyuebin.cn/about"

[[params.socials]]
name = "Github"
link = "https://github.com/your-username"

postHeaderContent = ""
postFooterContent = "<br/><br/><p>Thanks for reading!</p>"
extraCSSFiles = []

验证配置

# 检查配置是否正确
hugo config

5. 创建内容

创建多语言内容目录

# 创建内容目录结构
mkdir -p content/en/posts
mkdir -p content/cn/posts

创建测试文章

# 创建英文测试文章
cat << 'EOF' > content/en/posts/hello.md
---
title: "Hello World"
date: 2025-07-29T10:30:00+08:00
draft: false
---

# Hello World

This is my first post with YinYang theme!

## Features
- Clean and minimal design
- Multi-language support
- Fast and responsive

Welcome to my blog!
EOF

# 创建中文测试文章
cat << 'EOF' > content/cn/posts/hello.md
---
title: "你好世界"
date: 2025-07-29T10:30:00+08:00
draft: false
---

# 你好世界

这是我使用YinYang主题的第一篇文章!

## 特性
- 简洁优雅的设计
- 多语言支持
- 快速响应

欢迎来到我的博客!
EOF

6. 启动Hugo服务器

检查端口占用

# 检查1313端口是否被占用
netstat -tlnp | grep :1313

# 如果端口被占用,终止相关进程
# kill -TERM <PID>

启动开发服务器

# 清理之前的构建文件
rm -rf public/

# 启动Hugo服务器
hugo server -D --bind 0.0.0.0 --port 1313

启动成功后会显示:

Web Server is available at http://localhost:1313/ (bind address 0.0.0.0)
Press Ctrl+C to stop

7. 配置云服务器安全组

阿里云ECS安全组配置

  1. 登录阿里云控制台
  2. 进入ECS管理页面
  3. 找到实例,点击"安全组"
  4. 添加安全组规则:
    • 端口范围: 1313/1313
    • 授权对象: 0.0.0.0/0
    • 协议类型: TCP
    • 方向: 入方向
    • 动作: 允许

此时应该可以通过 http://服务器IP:1313 访问博客。

8. 配置Nginx反向代理(实现域名访问)

安装Nginx

sudo apt update
sudo apt install nginx

创建Nginx配置

# 创建站点配置文件
sudo nano /etc/nginx/sites-available/myblog

添加以下配置:

server {
    listen 80;
    server_name blog.liyuebin.cn;
    
    location / {
        proxy_pass http://localhost:1313;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

启用配置

# 创建软链接启用站点
sudo ln -s /etc/nginx/sites-available/myblog /etc/nginx/sites-enabled/

# 删除默认配置(可选)
sudo rm /etc/nginx/sites-enabled/default

# 测试配置语法
sudo nginx -t

# 重新加载Nginx
sudo systemctl reload nginx

配置云服务器80端口

在阿里云安全组中添加80端口规则:

  • 端口范围: 80/80
  • 授权对象: 0.0.0.0/0
  • 协议类型: TCP

9. 域名解析配置

DNS解析设置

在域名管理后台添加A记录:

  • 主机记录: blog
  • 记录类型: A
  • 记录值: 服务器公网IP
  • TTL: 600

验证解析

# 检查域名解析
nslookup blog.liyuebin.cn

# 检查服务器公网IP
curl ifconfig.me

10. 最终测试

重启Hugo服务器

# 在myblog目录下重启Hugo
hugo server -D --bind 0.0.0.0 --port 1313

验证访问

11. 后续管理

常用命令

# 检查Nginx状态
sudo systemctl status nginx

# 重启Nginx
sudo systemctl restart nginx

# 查看Nginx访问日志
sudo tail -f /var/log/nginx/access.log

# 停止Hugo服务器
# 在运行Hugo的终端按 Ctrl+C

# 重新启动Hugo
hugo server -D --bind 0.0.0.0 --port 1313

发布新文章

# 创建新文章
hugo new en/posts/new-post.md
hugo new cn/posts/新文章.md

# 编辑文章内容
nano content/en/posts/new-post.md

# Hugo会自动检测文件变化并重新构建

故障排除

端口占用问题

# 查找占用1313端口的进程
netstat -tlnp | grep :1313

# 终止进程
kill -TERM <PID>

Nginx配置问题

# 测试Nginx配置
sudo nginx -t

# 查看Nginx错误日志
sudo tail -f /var/log/nginx/error.log

域名解析问题

  • 检查DNS解析是否生效(可能需要等待几分钟到几小时)
  • 使用在线工具检查:https://www.whatsmydns.net/
  • 确保安全组已开放80端口

总结

通过以上步骤,你已经成功在Ubuntu服务器上部署了Hugo博客,使用YinYang主题,并配置了Nginx反向代理实现域名访问。博客支持中英文双语,具有简洁优雅的黑白设计风格。