Featured image of post 手把手学习 Hugo 博客的搭建:从入门到进阶

手把手学习 Hugo 博客的搭建:从入门到进阶

Hugo 是一款功能强大、易于使用的静态站点生成器,凭借其简洁的语法和丰富的功能,受到了众多博主的青睐。如果您也想使用 Hugo 搭建属于自己的博客,那么这篇详细的教程将带领您一步步完成整个过程,从环境搭建到内容创作,再到部署和优化,助您轻松打造个性化的博客站点。

阅读时长: 6 分钟
共 2801字
作者: eimoon.com

本教程将介绍如何使用 Hugo 和 GitHub Pages 搭建一个静态博客。Hugo 是一款功能强大的静态站点生成器,可以帮助您轻松创建美观、响应式的博客页面。GitHub Pages 则是 GitHub 提供的免费托管服务,可用于托管您的 Hugo 博客。本教程将手把手地带你一步步学习如何使用Hugo搭建自己的博客网站,并部署到GitHub Pages上。让我们开始吧!

第一部分:入门与环境搭建

1.环境准备

在开始之前,请确保您的电脑已安装以下软件:
文本编辑器或 IDE: 用于编写 Markdown 内容和 Hugo 配置文件。推荐使用 Visual Studio Code 。
Git: 用于版本控制和部署代码。

2.在mac上安装hugo

安装hugo的时候注意要安装extended版本,不要安装standard版本,否则会有一些模板不兼容。 你可以根据自己的操作系统选择合适的安装方式, 比如在macOS上使用Homebrew安装:

brew install hugo

3.在windows上安装hugo

在windows系统上面使用winget安装hugo

winget install Hugo.Hugo.Extended

在windows子系统上面,和在linux上安装一样,建议使用sanp

sudo snap install hugo

第二部分:创建 Hugo 站点

1.创建 Hugo 新站点

使用 Hugo 创建新站点非常简单,只需在命令行中输入以下命令:

hugo new site my-blog

其中 my-blog 是您的博客名称,可以根据需要修改。

这将创建必要的配置文件和文件夹,并提示您输入一些站点信息,例如站点标题、描述等。

2. 初始化git

进入新创建的站点目录,并运行以下命令进行初始化:

cd my-blog
git init

第三部分:选择和配置主题

1. 浏览和选择主题

Hugo 提供了丰富的主题模板,您可以根据自己的喜好选择合适的主题。

您可以通过以下方式浏览和选择 Hugo 主题:

官方主题仓库:https://themes.gohugo.io/
第三方主题仓库:https://github.com/topics/hugo-theme

2. 下载及应用主题

找到喜欢的主题后,您可以将其下载到本地并应用到您的站点中。如果你选择的主题支持git子模块管理,通过以下方式下载:

git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke.git themes/ananke

把地址修改为你选择的主题theme,下载完成后在 hugo.yaml 文件中配置主题名称。

theme = "mytheme"

如果您选择的主题不支持git子模块管理,则需要手动下载,将其解压到 themes/mytheme 目录下,并在 config.toml 文件中添加以下配置:

theme = "mytheme"

第四部分:内容创建与管理

Hugo 使用 Markdown 语言编写内容,这使得内容创作更加简单便捷

1. 理解 Hugo 目录结构

Hugo 站点的目录结构如下:

my-blog/
├── content              # 存放所有内容文件
│   ├── _index.md        # 博客首页内容
│   ├── posts            # 博客文章
│   │   ├── first-post.md
│   │   └── second-post.md
│   └── pages            # 博客页面
│       └── about.md     # 关于页面
├── data                 # 存放站点数据
│   ├── authors.yml      # 作者信息
│   └── config.toml      # 站点配置文件
├── i18n                 # 国际化语言文件
│   ├── en.toml          # 英文语言文件
│   └── zh.toml          # 中文语言文件
├── layouts              # 存放页面模板
│   ├── _default         # 默认模板
│   ├── partials         # 模板片段
│   └── index.html       # 首页模板
├── assets               # 存放编译前的资源文件
│   ├── css              # 存放 CSS 源文件
│   ├── js               # 存放 JavaScript 源文件
│   └── images           # 存放图片源文件
├── resources            # 存放生成的资源文件
│   └── _gen             # 生成的资源文件
├── static               # 存放静态资源(如图片、CSS、JS)
│   ├── css              # 存放编译后的 CSS 文件
│   ├── js               # 存放编译后的 JavaScript 文件
│   └── images           # 存放图片文件
├── public               # 生成的网站文件
├── themes               # 存放主题文件
│   └── my-theme         # 自定义主题文件
│       ├── layouts      # 存放页面模板
│       ├── static       # 存放主题静态资源
│       └── theme.toml   # 主题配置文件
├── archetypes           # 内容模板文件
│   ├── default.md       # 默认内容模板
│   └── post.md          # 博客文章模板
└── hugo_build.lock         # Hugo 包管理文件

2. 添加内容

创建新的内容文件,例如一篇博客文章,

hugo new content posts/my-first-post.md

这个命令会在 content/posts 目录下创建一个 Markdown 文件,并使用您喜欢的文本编辑器进行编辑即可。

3. 使用 archetypes

Hugo 提供了 archetypes 功能,可以快速生成内容模板。例如,要生成一篇新的博客文章,您可以使用以下命令:

hugo new content posts/my-first-post.md

这将创建一个名为 my-new-post.md 的 Markdown 文件,并包含了一些archetypes/default.md 基本的文章模板,例如标题、日期等

第五部分:本地预览与配置

1. 博客本地预览

在对内容和主题进行修改后,您可以使用以下命令进行本地预览:

hugo serve

这将在您的浏览器中打开一个本地服务器,您可以访问 http://localhost:1313 来查看您的博客页面。

2. 预览草稿

本地预览默认是不渲染草稿的,如果你需要查看草稿,需要将 draft : true 修改为 draft : false,或者在命令中添加渲染草稿的参数:

hugo serve -D

3. 设置博客配置文件

Hugo 的配置文件 config.toml 用于配置站点信息、主题、菜单等。 除了在config.toml中设置基本信息外,Hugo还提供了许多其他配置选项,你可以根据需要进行定制。比如设置Markdown渲染引擎、启用评论系统、配置SEO优化等。

第六部分:部署到 GitHub Pages

1. 部署准备

在本地预览和调试完成后,是时候将我们的Hugo博客部署到互联网上了。这里我们选择使用GitHub Pages,它是GitHub提供的免费静态网站托管服务。 首先,你需要在GitHub上创建一个新的仓库,仓库名称遵循your-github-username.github.io的格式。这将是你博客的主域名。 在将您的 Hugo 博客部署到 GitHub Pages 之前,请确保您已经:

  • 创建了一个 GitHub 账户。
  • 创建一个新的 GitHub 仓库。

2. 首次部署

现在,我们可以将Hugo生成的静态网站文件推送到GitHub仓库:

git init
git remote add origin [email protected]:your-github-username/your-github-project-name.git
git add .
git branch -M main
git commit -m "First commit"
git push origin main

3. 修改部署方式为使用action

访问你的 GitHub 仓库。从主菜单中选择 Settings > Pages。将部署方式改为GitHub Actions.

4. 本地创建action文件

在本地添加一个action文件

.github/workflows/hugo.yaml

5. 添加action内容

将下面这些内容,复制到.github/workflows/hugo.yaml 文件中。

# Sample workflow for building and deploying a Hugo site to GitHub Pages
name: Deploy Hugo site to Pages

on:
  # Runs on pushes targeting the default branch
  push:
    branches:
      - main

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
  contents: read
  pages: write
  id-token: write

# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
  group: "pages"
  cancel-in-progress: false

# Default to bash
defaults:
  run:
    shell: bash

jobs:
  # Build job
  build:
    runs-on: ubuntu-latest
    env:
      HUGO_VERSION: 0.126.0
    steps:
      - name: Install Hugo CLI
        run: |
          wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \
          && sudo dpkg -i ${{ runner.temp }}/hugo.deb          
      - name: Install Dart Sass
        run: sudo snap install dart-sass
      - name: Checkout
        uses: actions/checkout@v4
        with:
          submodules: recursive
          fetch-depth: 0
      - name: Setup Pages
        id: pages
        uses: actions/configure-pages@v4
      - name: Install Node.js dependencies
        run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true"
      - name: Build with Hugo
        env:
          # For maximum backward compatibility with Hugo modules
          HUGO_ENVIRONMENT: production
          HUGO_ENV: production
          TZ: America/Los_Angeles
        run: |
          hugo \
            --gc \
            --minify \
            --baseURL "${{ steps.pages.outputs.base_url }}/"          
      - name: Upload artifact
        uses: actions/upload-pages-artifact@v3
        with:
          path: ./public

  # Deployment job
  deploy:
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    runs-on: ubuntu-latest
    needs: build
    steps:
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v4

内容可以到hugo 官网中查询,链接

6. 上传到github仓库

git add .
git commit "Add workflow"
git push origin main

7. 等待action部署完成

登陆github后台,找到项目的action选项,等等build和deploying 完成,状态指示灯变绿就成功了,现在你可以直接使用deploy下面的地址,来对你的博客进行访问了 github status

第七部分:自定义域名与高级设置

1. 自定义域名

您可以使用自定义域名来访问您的 Hugo 博客。具体步骤如下: 购买一个域名。 首先验证你的域名 将您验证过后的域名指向 GitHub Pages 的 IP 地址。 在 GitHub 仓库的“Settings”>“Pages”中配置自定义域名。

结语

恭喜您完成了 Hugo 博客的搭建!通过本教程,您已经掌握了基本的 Hugo 博客搭建和使用知识,您可以开始使用您的 Hugo 博客分享您的想法和创意了。

微信公众号

使用 Hugo 构建
主题 StackJimmy 设计