一、为什么会选择hugo

  两年来一直使用hexo作为我的博客系统,但就在两天前,我写完一篇文章之后,使用hexo g -d来生成html和部署到github的时候,出现了大篇错误,作业一个业余人士,我是完全搞不清楚这些错误原因的,以前也曾因为调整设置而出现过错误,但最终都可以通过我以tar整体打包备份来恢复。但是这次不知道发生了什么原因,不管是整体删除后用以前的备份来恢复还是重新安装hexo和node.js都无法解决这个问题,后来在网络上查找hexo替代品的时候发现了hugo,它几乎拥有hexo的全部优点,而且还是二进制文件,不用配置环境,所以我毫不犹豫的开始尝试hugo,然后才有了这篇文章。

二、安装hugo

  基本上所有介绍hugo的文章都会介绍怎么去安装它,所以我只是简单的描述一下,以方便我在新机器上部署hugo的时候不用再去查找其它文章(毕竟我是一个非专业人士,这些安装和设置在不久就会忘记)。

# pacman -Sy hugo
# apt-get install hugo

这里重点介绍一下CentOS7的安装方式,因为我主要使用CentOS7。 先要下载epel的repo放到 /etc/yum.d/目录去,下载地址

三、建站及配置

$ hugo new site my-blog
$ cd my-blog
克隆主题到themes目录:
$ git clone https://github.com/xianmin/hugo-theme-jane.git --depth=1 themes/jane
复制示例文本到站点中去:
$ cp -r themes/jane/exampleSite/content ./
复制默认设置到站点中去:
$ cp themes/jane/exampleSite/config.toml ./
启动站点进行预览:
$ hugo server

​ 里面的配置文件有详细的中文注释,所以可以很好的完成配置。把文章放到/content/post目录中,然后在站点目录中执行hugo命令,不到1秒即可完成文章生成,生成的站点在public目录里,只要把该目录上传到任意web服务器中即可。这里提一下,文章虽然是markdown写成,但是对于标头还是要按格式书写,hugo支持多种写法,而且完全支持hexo的写法,所以我的博客基本上完全不用修改即可完成迁移。当然作者觉得YAML不够优雅,所以我们也可以优雅的使用TOML来写:

+++
title = "用hugo与caddy搭配来组建我的博客"
date = "2018-03-29"
tags = ["caddy", "hugo", "博客"]
categories = ["Linux-Server", "Web Server"]
+++

以下是YAML语法:(哪里不优雅了?哎外行真是看不出来)

---
# 常用定义
title: "An Example Post"           # 标题
date: 2018-01-01T16:01:23+08:00    # 创建时间
lastmod: 2018-01-02T16:01:23+08:00 # 最后修改时间
draft: false                       # 是否是草稿?
tags: ["tag-1", "tag-2", "tag-3"]  # 标签
categories: ["index"]              # 分类
author: "xianmin"                  # 作者

# 用户自定义
# 你可以选择 关闭(false) 或者 打开(true) 以下选项
comment: false   # 关闭评论
toc: false       # 关闭文章目录
# 你同样可以自定义文章的版权规则
contentCopyright: '<a rel="license noopener" href="https://creativecommons.org/licenses/by-nc-nd/4.0/" target="_blank">CC BY-NC-ND 4.0</a>'
reward: false	 # 关闭打赏
mathjax: true    # 打开 mathjax
---

关于多语言的问题,Hugo-Theme-Jane 支持创建多语言网站。 你需要为你的网站对 languages 进行配置。 翻译位于 i18n/ 文件夹下。 使用特定的翻译:

# 使用中文
defaultContentLanguage = "zh-cn"  # 默认使用的语言
[Languages.zh-cn]
  languageCode = "zh-cn"

有关多语言设置,请查看 Multilingual Mode | Hugo 。当然我个人觉得en看法也不错呀。

四、关于caddy的配置

​ 我之前有一篇文章专门写了关于caddy架设web服务器的文章,可以参考一下 。这里只是把 root目录指向 my-blog的public目录即可。还有一个小技巧,我是阿里云的ECS服务器,我还专门购买了nas来放置重要数据。所以我把我的所有文章放在nas里面,然后用ln -s做了软连接,既不会影响生成站点,也可以保障安全。

五、补充

​ 之前一直使用ln-s的方式把public目录软连接到caddy目录,其实caddy本身自带http.hugohttp.git插件(当然git插件我一直没有弄好过,以后弄好再补充吧)已经帮我们处理好了,详情参考官网docs或者我的设置: