目录

我的第一篇博客

这些是我与DeepSeek的对话记录

hugo 部署方案

没问题,用Hugo在Arch Linux上搭建博客,再配合自动化部署,是套很成熟的方案。我帮你把整个工作流梳理了一下,可以根据偏好选择部署平台。

1. 本地环境搭建 (Arch Linux)

首先安装Hugo(建议安装hugo扩展版以支持Sass/SCSS)和Git:

sudo pacman -S hugo git

安装后验证:hugo version

2. 创建并配置博客站点

hugo new site my-blog
cd my-blog
git init

然后添加一个主题(以流行的PaperMod主题为例):

git submodule add https://github.com/adityatelange/hugo-PaperMod.git themes/PaperMod

hugo.toml中设置theme = 'PaperMod'

新建第一篇文章测试:

hugo new posts/my-first-post.md

本地预览:hugo server -D,访问 http://localhost:1313 查看效果。

3. 在GitHub上创建仓库并推送

在GitHub新建一个仓库(命名为 你的用户名.github.io)。然后关联本地并推送:

git remote add origin git@github.com:你的用户名/你的用户名.github.io.git
git branch -M main
git add .
git commit -m "Initial commit"
git push -u origin main

4. 自动化部署工作流

你可以选择以下任一平台进行部署。无论选哪个,都建议先在static目录下创建一个CNAME文件(无扩展名),里面只写你的域名(如blog.example.com)。

方案A:使用GitHub Pages(最直接)

  1. 启用Pages:在仓库 Settings > Pages 中,将“Source”改为 “GitHub Actions”
  2. 创建Workflow文件:在项目根目录创建 .github/workflows/hugo.yaml,粘贴Hugo官方提供的工作流配置。
  3. 推送触发部署git add . && git commit -m "Add GitHub Actions workflow" && git push。之后可在仓库的“Actions”选项卡查看进度。

方案B:使用Netlify(功能丰富)

  1. 连接仓库:登录Netlify,选“Add new site” -> “Import an existing project”,连接你的GitHub仓库。
  2. 配置构建设置:构建命令填 hugo --minify,发布目录填 public
  3. 部署:点击“Deploy site”。之后每次推送都会自动触发构建。

方案C:使用Surge.sh(极其轻量)

  1. 安装Surgenpm install --global surge
  2. 构建并部署hugo --minify 然后进入public目录执行 surge,按提示注册即可获得一个 *.surge.sh 的临时域名。
  3. 持续部署:可编写一个简单的deploy.sh脚本,将 hugosurge --domain your-domain.surge.sh 放在一起。

5. 绑定自定义域名

  • GitHub Pages:在仓库 Settings > Pages 的“Custom domain”处填入你的域名,并确保static/CNAME文件内容一致。然后在域名注册商处添加CNAME记录指向 你的用户名.github.io
  • Netlify:在站点 Site settings > Domain management 中添加自定义域名。Netlify会指导你添加ACNAME记录,并自动帮你配置免费的HTTPS证书。
  • Surge.sh:部署时使用 surge --domain your-domain.com。在你的DNS提供商处将域名指向 na-west1.surge.sh

💎 总结建议

  • 追求极致简单:选 GitHub Pages + GitHub Actions,一切都在GitHub生态内完成。
  • 想要更多功能(如分支预览、表单处理):选 Netlify,配置更灵活。
  • 想要最快部署:选 Surge.sh,命令行操作极其轻量和迅速。

建议先从GitHub Pages开始,这是最主流也最方便的方案。

hugo 项目初始化

可以的,仓库名不是固定的 username.github.io 完全没问题,这属于 Project Pages 站点。部署稍有不同,下面是完整步骤:

1. 初始化站点并安装LoveIt主题

在Arch Linux终端中执行:

# 创建新站点
hugo new site hugoblogloveit
cd hugoblogloveit

# 初始化Git仓库
git init

# 添加LoveIt主题作为Git子模块
git submodule add https://github.com/dillonzq/LoveIt.git themes/LoveIt

2. 配置站点

将主题的示例配置复制到站点根目录:

cp -r themes/LoveIt/exampleSite/* .

然后编辑根目录下的 config.toml 文件:

baseURL = "https://你的用户名.github.io/hugoblogloveit/"  # 注意末尾斜杠
title = "我的技术博客"
theme = "LoveIt"

3. 在GitHub上创建仓库并推送

在GitHub新建一个公开仓库,命名为 hugoblogloveit不要勾选“Add a README file”)。

git remote add origin git@github.com:你的用户名/hugoblogloveit.git
git branch -M main
git add .
git commit -m "Initial commit with LoveIt theme"
git push -u origin main

4. 配置GitHub Actions自动部署

在项目根目录创建 .github/workflows/deploy.yml

mkdir -p .github/workflows
touch .github/workflows/deploy.yml

将Hugo官方工作流粘贴进去,内容可参考 Hugo官方文档

提交并推送:

git add .github/workflows/deploy.yml
git commit -m "Add GitHub Actions workflow for Pages"
git push

5. 在GitHub上启用Pages

  1. 进入仓库 SettingsPages
  2. Source 选择 “GitHub Actions”
  3. 等待几分钟,Actions会自动构建并部署

访问地址https://你的用户名.github.io/hugoblogloveit/

6. 绑定自定义域名

假设你的域名是 blog.example.com

① 添加CNAME文件static 目录下创建 CNAME 文件(全部大写):

echo "blog.example.com" > static/CNAME

提交推送后,CNAME文件会被构建到 public 目录。

② GitHub Pages设置 进入仓库 SettingsPages,在“Custom domain”填入 blog.example.com

③ DNS解析 在域名注册商处添加CNAME记录:

记录类型主机记录记录值
CNAMEblog你的用户名.github.io

注意:通过GitHub Actions部署时,static/CNAME 文件可能不会被自动处理,建议在 Settings → Pages 的Custom domain中手动设置。

7. 日常写作与发布

# 新建文章
hugo new posts/我的新文章.md

# 本地预览
hugo server -D

# 满意后提交推送,触发自动部署
git add .
git commit -m "Add new post"
git push

💎 关键点总结

  • 仓库名任意:不要求 username.github.io,访问路径会多一层仓库名
  • 部署方式:必须使用 GitHub Actions(无法像User Pages那样直接从分支部署)
  • baseURL:必须包含仓库名,如 https://用户名.github.io/hugoblogloveit/
  • 自定义域名:建议在Pages设置中直接填写,而不是仅依赖CNAME文件

现在你的博客应该可以通过 https://你的用户名.github.io/hugoblogloveit/ 访问了!

hugo 项目

针对你的 hugoblogloveit 项目,建议在项目根目录的 .gitignore 文件中添加以下内容,以避免将构建产物等不必要的文件提交到仓库中。

核心Hugo配置

这是必须添加的部分,用于忽略Hugo的构建输出和缓存。

# Hugo构建输出目录
/public/

# Hugo资源缓存目录
/resources/_gen/

# Hugo构建锁文件
.hugo_build.lock

# Hugo生成的统计文件
hugo_stats.json

# Hugo资源管道生成的JS配置
/assets/jsconfig.json

可选优化项

根据你使用的特性,可以考虑添加:

# 如果你使用了Node.js (npm/yarn) 管理前端资源
/node_modules/

# 完整的resources缓存目录(有时可缓存以加速CI构建)
/resources/

注意/resources/ 目录是否忽略存在争议。在CI/CD(如GitHub Actions)环境中,通常建议忽略它,让其在构建时重新生成。

操作系统和编辑器文件

为防止与系统或编辑器相关的临时文件被提交,建议一并添加:

# macOS
.DS_Store

# Vim
[._]*.s[a-v][a-z]
[._]*.sw[a-p]
[._]s[a-rt-v][a-z]
[._]ss[a-gi-z]
[._]sw[a-p]
Session.vim
.netrwhist
*~
tags
[._]*.un~

# Windows
Thumbs.db

获取完整模板

你也可以直接使用GitHub官方维护的Hugo模板。在项目根目录执行:

curl -o .gitignore https://raw.githubusercontent.com/github/gitignore/refs/heads/main/community/Golang/Hugo.gitignore

总结:核心是忽略 /public//resources/_gen/ 这两个目录。你可以将以上内容整合到你的 .gitignore 文件中。