花了一些时间用hugo重新搭建了猫狗窝,托管在github page上,又利用github action实现了CI/CD。非常省心!做到了专注写文,直接发布的效果。本篇记录就是写一点发布一点,陆续成文。
下面就把这一次趟坑的过程总结一下,本系列包括三部分:
本篇为第一部分——搭建本地服务
为什么重建
19年的时候,用leanote做私有笔记服务,这样可以直接把笔记发成web页面,省去很多维护公共平台账号之类的杂事。但个人站点随之而来的维护工作,又让我陷入繁琐,违背了使用leanote是为了专注在写作上的初心。最终个人站还是荒废了。
今年决定重启blog,作为记录和写作的练习地。
为了避免又一次陷入泥潭,这次的笔记方案要满足以下几个需求:
- 支持md,并且要保证将来可以方便的迁移
- 可实现服务托管
- 源文件和站点文件都能够完全掌控
- 框架要有良好的社区支持
框架选择
基于希望专注写作的考虑,首先排除了wordpress,因为它太重了,提供的管理服务太灵活了,非常容易让人分心。我需要的博客引擎,一定要提供最简单的写作体验。
一番寻找之后,锁定了三个引擎:jekyll、hexo、hugo,这是目前码农最喜欢用的三个博客生成器。下面就对它们做个简单的对比。
对比维度 | Jekyll | Hexo | Hugo |
---|---|---|---|
社区支持(2022年09月25日,github上star数目) | 45.3k | 35.4k | 62.5k |
开发语言 | ruby | nodejs | go |
编译速度(这里 提供了585篇文章的生成时长) | 15.90s | 两者之间 | 4.90s |
其他方面 | Jekyll 有github支持,可以将markdown文件直接放到git仓库,github会自动生成网页文件。(Github一直是一个亲ruby的社区) | Hexo提供了方便的部署命令,可以做到一条命令部署到github上。 | Hugo的官方文档写的非常好,部署简洁。前两者部署时需要安装很多依赖,而hugo可以直接提供二进制文件运行,甚至不需要root权限。 |
关于编译速度的差别,原因在于Hugo使用go语言开发,go是一种编译型语言,执行速度非常快。而Jekyll使用ruby,Hexo使用nodejs,这两种语言都是解释型语言,执行效率比go低很多。而nodejs又比ruby快一些。从上面的数据可以看到,Hugo比Jekyll快了近10倍,完全不是一个量级的比较。
最终,我选择了Hugo。虽然上手可能需要一点时间,但几乎所有维度的比较,都让Hugo成为我的第一选择。
本地搭建
下面就开始Hugo的探索之旅。
安装hugo
非常简单的安装。我使用的是 macOS,官方推荐用 homebrew 方式。
brew install hugo
完成后,可使用以下命令进行验证:
hugo version
创建站点
要创建一个新的web站点,可通过执行hugo new site 给博客起个名字
命令来实现。
执行后会创建一个文件夹,与命令中的名字同名,包括以下内容:
.
├── archetypes
│ └── default.md
├── config.toml
├── content
├── data
├── layouts
├── static
└── themes
其中
config.toml: hugo配置文件
content: md文件和html
static: 静态资源
themes: 主题
其他的可先不管。
选择主题
Hugo没有默认主题,所以需要自己安装主题。我使用的是hugo-theme-cleanwhite 。官网主题库:Hugo Themes
$ mkdir themes
$ git submodule add https://github.com/zhaohuabing/hugo-theme-cleanwhite.git themes/hugo-theme-cleanwhite
启动 Hugo 服务器,在 http://localhost:1313/ 将会看到由主题生成的示例网站
$ hugo serve -t hugo-theme-cleanwhite
或只需要
hugo server
即可。
配置hugo
配置文件在网站根目录下 config.toml , 根据自身需求进行修改。在 hugo-theme-cleanwhite 主题下的 exampleSite 文件夹中的文件可作为参考。默认的文章将存储在 ./content/post 中,每当写完文章,运行 hugo 命令,Hugo 将自动生成静态网站到 public 文件夹中,我们只需要将该文件夹的内容发布在网络上即可。
更多关于主题的配置可以参考 hugo-theme-cleanwhite README.md
更详细的配置规则,可参考Hugo官方文件
写作
现在可以创建一篇文章了。执行命令hugo new post/hello-world.md
,会在content/post/下新增一个名为hello-world.md的文件。我们将头部自动生成的部分进行修改后,就可以在下面写自己的笔记或博文了。
---
title: "Hello World"
date: 2022-09-25T16:00:21+08:00
categories:
- "Blog"
tags:
- "Hugo"
draft: true
---
# Hello World.
Post example
本地部署
本地调试命令,执行它,就可以直接通过 http://localhost:1313 地址访问本地预览网页。
hugo server
本地发布命令,执行它,就能在public/目录下生成整套静态网站,可以直接复制到web服务器中。
hugo
至此,Hugo本地方案的搭建过程完成!
本作品由 IvyWooo 采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可,转载请注明出处。
本文链接
参考文章
- 《静态博客框架jekyll、hexo和hugo三者之间的区别与差异》,https://zhuanlan.zhihu.com/p/368407566
- 《浅谈我为什么从 HEXO 迁移到 HUGO》,https://sspai.com/post/59904
- 《從 Jekyll 轉移到 Hugo 心得》,https://blog.yeshuanova.com/2018/07/from-jekyll-to-hugo/
- 《Hugo + GitHub Action,搭建你的博客自动发布系统》,https://www.pseudoyu.com/zh/2022/05/29/deploy_your_blog_using_hugo_and_github_action/
- 《使用 Hugo 搭建个人网站(博客、个人主页)并发布到 Github 上》,https://zhuanlan.zhihu.com/p/417259374