先吐槽一下,写的好几篇关于五行八卦的文章竟然被csdn提示违法国家法律。。。那只能考虑自建blog,不能被捆绑手脚了。
正巧也一直想搞一个本地的markdown系统,毕竟md放在本地总是第一要务。
目前流行的hugo试下来还蛮好,发文记录安装过程。
全程手工下载,不用git
二进制
直接搞现成的~~
执行文件下载网址:https://github.com/gohugoio/hugo/releases
源码生成
源码下载网址:https://github.com/gohugoio/hugo
解压缩全部,使用命令go build,这个就不用多废话了吧。。。哈哈。
注意,如果提示你build不成,请查一下你的go版本是不是最新的,写本文时用的go 1.18.3,如果是go 1.17.x版本则不能正常生成。
将hugo.exe放于D:/test/hugo目录内,使用cmd命令
hugo new site blogTest
执行后生成D:/test/hugo/blogTest目录,这个目录是当前blogTest项目的根目录,然后把hugo.exe移入这个真正的根目录,待会儿的命令需要用到他。
官方模板下载地址:https://themes.gohugo.io/
假定下载模板testTpl,下载后解压缩到D:/test/hugo/blogTest/themes/testTpl中。
在D:/test/hugo目录内,使用cmd命令
hugo new first.md
hugo new posts/about.md
此时生成目录和md文件:
D:/test/hugo/blogTest/content/first.md
D:/test/hugo/blogTest/content/posts/about.md。
about.md文件内容如下:
---
title: "About"
date: 2022-06-26T16:15:50+08:00
draft: true
---
注意这条draft: true,意思是本文为草稿,文章后面要用到。
在最后---的下面写上一句## 好吧,测试一下,markdown语言就不多说了。
在D:/test/hugo目录内,使用cmd命令
hugo server --theme=testTpl --buildDrafts --watch

go server命令将自动启用内置web server,默认在本机浏览器使用http://127.0.0.1:1313打开,具体端口号请注意终端的结果提示。
在D:/test/hugo目录内,使用cmd命令
hugo
-B是--buildDrafts的缩写)hugo -B
hugo --theme=testTpl --buildDrafts

生成的静态文件都在D:/test/hugo/blogTest/public,包含文章、样式、多媒体文件等。
此时将public目录中的所有文件上传到托管服务器就能对外使用。
有两处配置是重点,如果这两处不配置,则生成的静态文件无法正常显示或舒畅使用:
D:/test/hugo/blogTest/config.toml内容中修改baseURL和新增theme。baseURL为项目在web server上的根目录(可加域名也可不加,但需要符合绝对和相对目录的规则)。content为文章所在本机目录,可以将文章原件单独存放,hugo系统归另一个目录。theme为所使用的模板名称。uglyURLs将标题名作为文件名或作为目录名,默认为false,如果本地用图,则建议使用truebaseURL = 'http://127.0.0.1/hugo/blogTest/public/'
contentdir = "c:/blog/test"
languageCode = 'en-us'
title = 'My New Hugo Site'
theme = "testTpl"
uglyURLs = true
D:/test/hugo/blogTest/content/posts/about.md文章中的draft: true改为draft: false,否则直接使用hugo命令的话,草稿是不会生成静态文件的,也不会出现在文章列表里,go server命令同理。first.md和about.md文件中只有about.md非草稿,即draft: false,所以使用hugo命令直接生成静态文件的话,将出现只含一篇文章的首页。
如果使用Obsidian写博客,则为了附件能正常使用,建议设置如图,重点是插入基于当前笔记的相对路径。

详细的obsidian使用方法:《obsidian配合hugo的使用,让markdown本地编辑软件与在线化无缝衔接》
再次强烈建议:实际使用时尽量将博客原文存在其他目录,hugo的程序放在另一个目录。
在hugo的config.toml中设置contentdir目录来读取博客原文。