使用hugo搭建github博客
文章目录
Hugo 初步认识
之前用wordpress 部署过自己的博客,需要PHP环境和数据库后来觉得麻烦关停了。认识hugo是开始使用 golang 后发现的,刚开始觉得麻烦没有用 最近硬着头皮要做个博客。
架构说明
hugo 根据 markdown 格式的文件,生成对应的HTML 文件发布到在线的web 服务器上。同时可以实现本地自己web 服务预览。
起初我遇到的主要问题是:源文件管理和静态文件不能分开管理,hugo 默认会在站点根目录生成一个public
文件夹,如果直接提交到git 上的话 markdown
源文件和生成的静态文件都融在了一起给提交确认带来了太多不便。原来想把 public 文件夹当做一个分支处理,但是 github 的站点托管又不支持自定义文件夹,
后来在翻看 hugo 官方文档 时,偶然发现 github 支持 workflow ,
通过创建一个.github/workflows/gh-pages.yml
文件即可启动 Github Action,自动将 .md 文件生成至’gh-pages’分支。这样比起在本地生成静态
文件再推送至 git 简单了不少,而且源代码管理的文件也干净了许多。
本地部署
下载地址
我用的是mac arm版本的,用 hugo new site xxx
生成一个站点文件夹,再找一个自己喜欢的样式(在这里挑吧theme)。
我用的是 even ,一般在theme 中都会有一个 exampleSite
文件夹,把里面的config.toml 拷贝至站点根目录,按照自己的信息修改即可。
这里需要注意的是最好不要用git clone 直接下载theme,建议用Download Zip的形式下载到本地解压到themes文件夹即可。
这样做的原因是,如果你用clone的方式,在你把站点整个推送至git的时候,这个theme 文件夹就成了一个子模块,github执行Build时会报 git submodule 拉取错误。
github集成
添加yml文件
``` yml
name: github pages
on:
push:
branches:
- main # Set a branch to deploy
pull_request:
jobs:
deploy:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
with:
submodules: true # Fetch Hugo themes (true OR recursive)
fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod
- name: Setup Hugo
uses: peaceiris/actions-hugo@v2
with:
hugo-version: 'latest'
# extended: true
- name: Build
run: hugo -t even //注意这里
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
if: github.ref == 'refs/heads/main'
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./public
```
修改 hugo 命令
注意 Build 步骤要按照自己使用的样式名称,并且是不要加server的
配置github Page 设置和域名
在github的这个路径 Settings > GitHub Pages 选择 gh-pages
分支即可。
不要忘记更改 config.toml 中的 baseURL,否则您的网站将无法运行。
使用您的用户存储库或项目存储库的值重命名您的 baseURL,如:https://<USERNAME>.github.io
如果您使用自定义域,请创建一个文件static/CNAME. 您的自定义域名应该是里面唯一的内容CNAME。因为它在里面static,所以发布的站点将在发布站点的根目录包含 CNAME 文件,这是 GitHub Pages 的要求。
写作编辑器
找了好多款markdown的编辑器,要不就是没有预览,要不就是保存文件和新建文件太费劲。最后还是用了HbuilderX。 能按照文件夹管理文件, 对MarkDown语法支持又好。就这样吧。
后期维护 2022-05-27
- 图片位置,我通常用HBuilderX编辑markdown所以截图文件会自动放在同名的文件夹下,但是文件路径是不对的,需要在前面增加/post才能找到
- 自定义域名,在settings->Pages 里设置了自定义域名当时可以,没多久就会又回到原来的***.github.com,原因是根目录没有CNAME文件(内容就是你的域名),在static文件夹下放上一个就好了。
文章作者 古道
上次更新 2022-01-14