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安全组配置
- 登录阿里云控制台
- 进入ECS管理页面
- 找到实例,点击"安全组"
- 添加安全组规则:
- 端口范围: 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
验证访问
- 通过IP访问: http://服务器IP:1313
- 通过域名访问: http://blog.liyuebin.cn
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反向代理实现域名访问。博客支持中英文双语,具有简洁优雅的黑白设计风格。