我的第一篇博客

这些是我与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 main4. 自动化部署工作流
你可以选择以下任一平台进行部署。无论选哪个,都建议先在static目录下创建一个CNAME文件(无扩展名),里面只写你的域名(如blog.example.com)。
方案A:使用GitHub Pages(最直接)
- 启用Pages:在仓库
Settings > Pages中,将“Source”改为 “GitHub Actions”。 - 创建Workflow文件:在项目根目录创建
.github/workflows/hugo.yaml,粘贴Hugo官方提供的工作流配置。 - 推送触发部署:
git add . && git commit -m "Add GitHub Actions workflow" && git push。之后可在仓库的“Actions”选项卡查看进度。
方案B:使用Netlify(功能丰富)
- 连接仓库:登录Netlify,选“Add new site” -> “Import an existing project”,连接你的GitHub仓库。
- 配置构建设置:构建命令填
hugo --minify,发布目录填public。 - 部署:点击“Deploy site”。之后每次推送都会自动触发构建。
方案C:使用Surge.sh(极其轻量)
- 安装Surge:
npm install --global surge。 - 构建并部署:
hugo --minify然后进入public目录执行surge,按提示注册即可获得一个*.surge.sh的临时域名。 - 持续部署:可编写一个简单的
deploy.sh脚本,将hugo和surge --domain your-domain.surge.sh放在一起。
5. 绑定自定义域名
- GitHub Pages:在仓库
Settings > Pages的“Custom domain”处填入你的域名,并确保static/CNAME文件内容一致。然后在域名注册商处添加CNAME记录指向你的用户名.github.io。 - Netlify:在站点
Site settings > Domain management中添加自定义域名。Netlify会指导你添加A或CNAME记录,并自动帮你配置免费的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/LoveIt2. 配置站点
将主题的示例配置复制到站点根目录:
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 main4. 配置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 push5. 在GitHub上启用Pages
- 进入仓库
Settings→Pages - Source 选择 “GitHub Actions”
- 等待几分钟,Actions会自动构建并部署
访问地址:
https://你的用户名.github.io/hugoblogloveit/
6. 绑定自定义域名
假设你的域名是 blog.example.com:
① 添加CNAME文件
在 static 目录下创建 CNAME 文件(全部大写):
echo "blog.example.com" > static/CNAME提交推送后,CNAME文件会被构建到 public 目录。
② GitHub Pages设置
进入仓库 Settings → Pages,在“Custom domain”填入 blog.example.com。
③ DNS解析 在域名注册商处添加CNAME记录:
| 记录类型 | 主机记录 | 记录值 |
|---|---|---|
| CNAME | blog | 你的用户名.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 文件中。