部署hugo服务器记录
完整部署方案
1. 安装 Hugo
推荐两种安装方式(Snap 最简单,.deb 包版本最新):
方式一:通过 Snap 安装(推荐)
sudo apt update
sudo snap install hugo
方式二:通过 .deb 包安装(获取最新版)
# 下载最新版本(以 v0.111.2 为例,可从 GitHub releases 查看最新版本号)
wget https://github.com/gohugoio/hugo/releases/download/v0.111.2/hugo_0.111.2_linux-amd64.deb
# 安装
sudo dpkg -i hugo_0.111.2_linux-amd64.deb
# 如有依赖错误,运行
sudo apt install -f
# 验证安装
hugo version
2. 创建 Hugo 站点并配置 hugo-paper 主题
# 创建新站点
hugo new site mysite
cd mysite
# 初始化 git(主题需要通过 git 管理)
git init
# 安装 hugo-paper 主题
git clone https://github.com/nanxiaobei/hugo-paper themes/paper
# 创建第一篇内容
hugo new content posts/hello.md
# 编辑配置文件
nano hugo.toml # 或 config.toml(旧版 Hugo)
配置文件示例 (hugo.toml):
baseURL = 'https://yourdomain.com'
languageCode = 'zh-CN'
title = '我的博客'
theme = 'paper'
[params]
# hugo-paper 主题参数(参考主题文档)
color = 'light' # light/dark/auto
disableHero = false
3. 构建静态文件
关键概念:在生产环境中,不需要运行 hugo server(开发服务器),而是使用 hugo 命令生成静态文件:
# 构建(生成到 public/ 目录)
hugo --minify
# 查看生成的文件
ls public/
4. 配置 Nginx
安装 Nginx:
sudo apt install nginx
Nginx 站点配置(作为静态文件服务器,而非反向代理):
创建配置文件 /etc/nginx/sites-available/mysite:
server {
listen 80;
server_name yourdomain.com;
root /var/www/mysite/public; # 指向 Hugo 生成的 public 目录
index index.html index.htm;
# 静态文件缓存
location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
# Hugo 生成的 SPA 特性支持(可选)
location / {
try_files $uri $uri/ =404;
}
# gzip 压缩
gzip on;
gzip_types text/plain text/css application/json application/javascript;
}
启用站点:
sudo ln -s /etc/nginx/sites-available/mysite /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
5. 部署流程(手动或自动)
手动部署流程:
# 在本地/服务器上构建
cd ~/mysite
hugo --minify
# 复制到 Nginx 目录(或直接在站点目录构建)
sudo rm -rf /var/www/mysite/public
sudo cp -r public /var/www/mysite/
# 设置权限
sudo chown -R www-data:www-data /var/www/mysite
自动化方案(可选): 如需自动部署,可配置 GitHub Actions + rsync 到服务器,或使用 Webhook 实现推送自动构建。
6. 启动与维护
# 本地预览(开发时)
hugo server -D --bind 0.0.0.0
# 生产构建
hugo --minify
# 重新加载 Nginx
sudo systemctl reload nginx