前言

一直想搭建一个记录自己学习与生活的博客,断断续续尝试过很多种方案,例如基于 Typecho 或 Wordpress 的动态博客,基于 Hexo + Coding 的静态博客。

其中基于 Wordpress 搭建动态博客在互联网上的比例很大,有海量的模版和丰富的教程。Typecho 和 Wordpress 类似,只是前者更加轻量级,界面更加简洁,理论上加载速度更快。Wordpress 的功能更加强大,可以用于搭建论坛、购物网站等,个人觉得只用来写技术博客有点大材小用了。因为不想花费很多精力在博客网站的排版、样式等功能上,更想专注于写文章本身,所以之前使用过较长时间的 Typecho 博客。

但是动态博客的优点和缺点都很明显,动态博客可以提供诸如在线发布、数据统计、用户注册等一系列在线服务,但是需要部署在云服务器上,一般需要搭配域名使用。然而个人并不常用以上的在线服务,所以更倾向使用静态博客。Hexo 和 Hugo 的区别不大,但是 Hexo 需要 nodejs 环境并且加载速度没有 Hugo 快,优点是 Hexo 的主题更多。

最终权衡下还是使用 Hugo + PaperMod 主题的方案搭建了静态博客。


技术选型

  • 博客框架:Hugo

  • 博客主题:PaperMod

  • 博客字体:LXGW WenKai、JetBrains Mono

  • 托管工具:Github 或云服务器

  • 写作工具:Typora、Handraw

  • 免费图床:路过图床(不支持 GIF)、Picgo

优点:

  • 不需要购买云服务器和域名,网站托管在 Github 上(也可以部署到云服务器上,绑定域名);
  • 网站功能简洁,加载速度快,不用花费精力维护;
  • 使用本地 Typora 写作,所见即所得。

快速启动

搭建过程中参考了如下博客及教程:Sulv’s Blog 田少晗的个人博客Memory

安装Hugo

安装前需要准备 Go 和 Git 环境,以下是个人使用的环境,合适的版本即可。

基础环境 版本号
系统 MacOS Ventura 13.0 (M1 Pro)
Go go version go1.17.7 darwin/amd64
Git git version 2.37.1 (Apple Git-137.1)

Mac 用户输入:

1
brew install hugo

安装完成后输入hugo version验证,若出现版本信息则表示安装成功。

新建站点

新建站点目录kdjlyy_blog,并将站点配置文件改为.yml后缀写法:

1
hugo new site kdjlyy_blog -f yml

会自动生成以下目录结构:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
kdjlyy_blog/
├── archetypes/
│   └── default.md
├── assets/
├── content/
├── data/
├── layouts/
├── public/
├── static/
├── themes/
└── config.yml

目录结构详细介绍参考:https://gohugo.io/getting-started/directory-structure/

下载主题

  1. Hugo Themes 官网下载喜欢的主题到themes文件夹,以个人使用的 PaperMod 主题为例:

    1
    2
    
    cd themes
    git clone git@github.com:adityatelange/hugo-PaperMod.git
    

​ 把文件夹名称由 hugo-PaperMod 改为 PaperMod,方便后续配置。

  1. 在站点文件夹下的配置文件config.yaml里配置主题:

    1
    2
    3
    4
    
    baseURL: "/"
    languageCode: 'en-us'
    title: 'My Blog'
    theme: "PaperMod"
    

新建文章

在站点目录下,新建文章:

1
hugo new posts/first-blog.md

此时first-blog.md将自动生成在content/posts目录下:

1
2
3
4
5
---
title: "First Blog"
date: 2023-05-30T17:17:15+08:00
draft: false
---

在后面使用 markdown 格式书写即可。

本地运行

在站点目录下执行命令:

1
hugo server -D

进入 http://localhost:1313/ 即可访问个人主页。