一个从零开始到部署的使用 Hugo 开始技术博客的详细教程

Hugo 是一个非常好的工具,可以用来开始一个博客。

我自己在这个博客中使用了 Hugo 已经超过 2 年了。我喜欢使用 Hugo 的原因有几个。

它是简单无聊灵活快速

最重要的原因是它是简单的。你不需要学太多东西就可以开始使用。

你可以使用 Markdown 编写内容,这个格式允许我使用我最喜欢的编辑器(Bear)来写文章。

Hugo 是无聊的。不要误会,这是一件非常好的事情。作为一个开发者,我总是有冲动的想要不停地调整各种东西。Hugo 没有使用任何花哨的技术。它是用 Go 语言构建的,而 Go 是我最喜欢的语言之一,但这并不意味着我想要深入了解 Hugo 的内部工作方式,并改变它的工作方式。

Hugo 也没有展示任何炫酷或者下一代的东西,就像许多 JavaScript 框架经常会做的那样。

因此它非常无聊,这给了我很多的时间来做真正有用的事情,比如写内容。我专注于内容,而不是内容的展示方式。

话虽如此,Hugo 是非常灵活的。我用一个开源的主题开始了我的博客,然后随着时间的推移,完全改变了它。有时,我想在我的网站上做一些超出了普通博客范围的事情,而 Hugo 可以让我实现这些功能。

最后,我喜欢 Hugo 的另一个原因是它快速。为什么呢?首先,它的核心是 Go 语言,而 Go 语言以其非常快的速度而闻名。在 Go 的生态系统中,没有 100MB 依赖的概念。所有的东西都被设计得尽可能快速。此外,Hugo 不需要进行一些使用花哨技术时需要的繁琐操作。这是非常无聊的一个副产品。

好了,废话不多说。

Hugo 真的很棒,尤其是对于开发者来说,而且你愿意使用 Markdown 来写作的话。非技术人员可能会拒绝使用 Markdown,这是可以理解的。

此外,你还需要为使某些事情真正奏效而准备一个基于 Git 的工作流程。

在何处托管 Hugo 网站

Hugo 博客是完全静态的。这意味着你不需要自己托管服务器,也不需要使用特殊的服务。

Netlify、Now 和 GitHub Pages 是 3 个非常好的免费托管 Hugo 博客的地方。

唯一需要支付的费用是域名费用。我再次强调拥有自己的域名的重要性。请不要使用 .github.io.netlify.com.now.sh。等域名。

我的博客是部署在 Netlify 上的。

选择一个域名

将您的博客放在自己的域名下。选择一个。使用您自己的名字。然后使用 .com 或者 .blog。不要聪明地使用本地化的域名,不要使用 .io.com 会给人留下更好的印象,并且可以在将来的所有项目中重复使用,不仅仅是托管博客。我就选了 .com

哦,如果你有一个园存着的域名,就直接用它。为什么?你的域名越古老,越好。

关于子域名的说明:对 Google 来说,每个子域名都是一个独立的网站。因此,如果您的域是 flaviocopes.com,而您将您的博客放在 blog.flaviocopes.com 下,那么对于 Google 来说,这是一个完全独立的网站,并且它将和主域名有着不同的排名。

我的建议是完全避免使用子域名。

安装 Hugo

在 macOS 上安装 Hugo,你可以在终端中运行以下命令:

brew install hugo

如果在你的 Mac 上找不到 brew 命令,请查看 Homebrew 指南

对于 Windows 和 Linux,请查看 官方安装指南

创建一个 Hugo 网站

一旦安装了 Hugo,您就可以通过运行以下命令来创建一个 Hugo 网站:

hugo new site myblog

我建议你将其运行到 Home 目录下的 www 文件夹中,因为该命令会在运行它的位置创建一个名为 myblog 的新文件夹。

creating-a-new-hugo-site-image

选择一个主题

现在,在你开始之前,你需要选择一个主题。我希望 Hugo 包含一个默认的主题,以使事情变得简单直接,但它没有。

https://themes.gohugo.io 上有很多选择。我个人推荐从 https://themes.gohugo.io/ghostwriter/ 开始,以后再进行更改。

我还建议避免他们在该页面上建议的 git clone 工作流程,因为你以后肯定会调整主题,我发现在内容和主题之间只有一个存储库是最好的。它简化了部署过程。

所以,去 https://github.com/jbub/ghostwriter/archive/master.zip 下载当前版本的主题。

然后,在新创建的 Hugo 网站的 themes/ghostwriter 文件夹中解压缩:

注意在 themes/ghostwriter中有一个 exampleSite 文件夹。打开它,并打开其中的 content 子文件夹。在里面,你可以看到 pagepostproject 的子文件夹。

pagepost 复制到站点的 content 文件夹中:

配置

示例数据还提供了一个在 themes/ghostwriter/exampleSite/config.toml 中的示例 config.toml 文件,这是 Hugo 的配置文件,它可以在不需要在主题中硬编码信息的情况下提供给 Hugo 一些配置信息。

我建议你不要复制它,因为它有太多东西,而是使用以下配置:

baseurl = "/"
title = "My blog"
theme = "ghostwriter"

[Params]
 mainSections = ["post"]
 intro = true
 headline = "My headline"
 description = "My description"
 github = "https://github.com/XXX"
 twitter = "https://twitter.com/XXX"
 email = "[[email protected]](/cdn-cgi/l/email-protection)"
 opengraph = true
 shareTwitter = true
 dateFormat = "Mon, Jan 2, 2006"

[Permalinks]
 post = "/:filename/"

稍后你可以自由地定制此文件中的信息。

现在从命令行运行:

hugo serve

打开浏览器,输入 http://localhost:1313,你应该能看到网站的实时效果!

这是网站的主页。

主页上有一个来自网站 content/post 文件夹的文章列表:

点击第一个文章,标题是 “Creating a New Theme”:

你可以打开 content/post/creating-a-new-theme.md 文件来更改文章中的任何内容。

如果你保存,网站将自动更新为新的内容。

这非常棒,不是吗?

你可以通过创建一个新的 .md 文件来创建一个新的文章,你可以使用递增的数字前缀,如果你愿意的话。或者使用日期。

如果某些内容不符合你的要求,你可以打开 themes/ghostwriter/layouts 文件夹并对其进行调整。

“post” 模板定义在 themes/ghostwriter/layouts/post/single.html 文件中:

Hugo 使用 Go 模板。这个语法可能很陌生,但是 Hugo 的官方网站在这个 Go 模板介绍 中做得非常好。

但是现在先不要自定义您的模板。

如果你想调整颜色,请在 themes/ghostwriter/layouts/partials/header.html 中添加一个 <style> 标签,并加入一些 CSS。

例如,将链接变黑色:

<style>
.site-title a, .button-square {
 background: black;
}
a {
 color: black;
}
</style>

先专注于内容。

删除现有文件,撰写 2-3 篇文章开始。

将事情做得完美是很容易陷入困境的,但是最重要的是内容。

而且你的网站越简洁,对你的读者来说越好。

现在,让我写一些关于部署的内容。

将 Hugo 网站部署到 Netlify

我想展示一下如何在我最喜欢的两个平台 Netlify 和 Now 上部署 Hugo 网站。

首先,我要创建一个 GitHub 仓库来托管该站点。

我打开 GitHub Desktop,这是我每天都会使用的应用程序,它是我的工作流程的一部分。这是使用 Git 的最简单的方式。

从文件菜单中,我点击了 “New Repository” 选项:

同样的屏幕可以通过简单地将 myblog 文件夹拖到应用程序中来生成。

我给仓库取名为 myblog,并选择了正确的路径。

该进程会自动进行第一次提交:

现在,我们可以点击 “Publish repository” 按钮将该仓库推到 GitHub:

你当然可以保持该仓库的私有。

仓库推到 GitHub 之后,我们可以转到 Netlify。

从我的 Netlify 仪表板中,我点击 “New site from Git” 按钮:

点击 GitHub,授权 Netlify 访问我的私有仓库,然后选择刚刚创建的仓库:

Netlify 自动将其识别为一个 Hugo 仓库,并自动输入构建命令:

点击 “Deploy site” 开始部署过程:

在真实的网站上,我会设置一个自定义域名。Netlify 有一个通过它们购买域名的选项,这是一个非常非常简单的过程。我强烈推荐这样做。从购买域名到网站可以在短短几分钟内完成。

一个随机的 .netlify.com 子域名被附加到网站上,这里是 pedantic-engelbart-500c9a.netlify.com,并且自动启用 HTTPS。

因此,我们可以马上看到网站已经在线了:

现在,如果你想在本地版本中进行一些编辑,你只需将更改推送到 GitHub,Netlify 将自动更新网站。你可以在网站的 “Overview” 面板中看到网站正在构建的过程:

要了解更多关于 Netlify 的信息,我建议你查看我的 Netlify 教程

将 Hugo 网站部署到 Zeit Now

另一个你可以用来托管 Hugo 博客的超赞平台是 Zeit Now。

一旦你注册了账户,从仪表板中,点击 New Project 按钮。

第一次从 GitHub 部署时,你必须先安装 GitHub 应用程序,点击 “Install Now For GitHub”:

这将带你到该应用程序的 GitHub 页面,在那里你可以授权它访问你的所有仓库,或只是一部分仓库:

一旦你回来,点击 “New Project From GitHub” 按钮:

选择项目并点击 “Import”:

在此期间,请进入 mysite 的主文件夹,并添加一个 package.json 文件,文件内容如下:

{
 "scripts": {
 "build": "hugo"
 }
}

这告诉 Now 如何部署网站。

当你回到仪表盘时,新的部署很快就会开始,你将会看到网站实时工作:

注意,在 Now 中,你有 3 个 URL 可以用来访问网站:

  • myblog.flaviocopes.now.sh
  • myblog-alpha-swart.now.sh
  • myblog-git-master.flaviocopes.now.sh

你可以选择你喜欢的那一个。

另外,每个部署也有自己的 URL。在这个例子中,我有 myblog-h8xks5jhn.now.sh,但每次部署都会变化。

当然,你也可以添加你自己的域名。Zeit 提供了一个很棒的服务可以直接从他们那购买域名,位于 https://zeit.co/domains

如果你更喜欢使用命令行,now 命令允许你也可以从命令行购买域名。

我强烈推荐你查看我的 Zeit Now 教程