Hugo是由Go语言实现的静态网站生成器。简单、易用、高效、易扩展、快速部署。

1、首先安装Hugo

PS. 安装前请保证已经安装了Go,并且设置了GOPATH

go get -v github.com/spf13/hugo

2、生成站点

hugo new site /path/to/site

3、安装皮肤

cd /path/to/site/themes
git clone https://git.shaobin.wang/root/hestia-pure.git

4、以开发模式运行

hugo server --theme=hestia-pure --buildDrafts --watch

5、修改基本配置

修改文件/path/to/site/config.toml,内容如下:

# 站点host
baseurl = "localhost"
# html 的lang值
languageCode = "zh-CN"
# 网站顶部标题 ,可去掉
title = ""
theme = "hestia-pure"
copyright = "  2012—2019 Powerd by Mider."

[author]
 author = 'Mider'
 profile = 'I am a frontend engineer working in Beijing , China.'
 image = 'image/theme/profile.jpg'

[Params]
# 网站顶部标题下的介绍,可去掉
 description = ""
# 网站SEO关键词
 keywords = "Hugo"
# 站长 twitter
 twitter = ""
# 站长 github
 github = ""
# 站长 facebook
 facebook = ""
# 谷歌统计,可在https://analytics.google.com中进行添加媒体资源管理
 googleanalytics = ""
# 谷歌自定义搜索引擎cx值,可在https://cse.google.com/cse中创建
 googlecustomsearch = ""
# 邮箱设置
 email = ""

6、创建新文章

hugo new howto-use-hugo.md

7、设置文章封面

①、创建文章公共images文件夹
mkdir -p /path/to/site/content/images/
②、创建howto-use-hugo文章的图片文件夹
mkdir -p /path/to/site/content/images/howto-use-hugo/
③、将封面图片保存为cover.jpg
④、在文章Markdown文件设置文章Title的地方加入
image: "/images/howto-use-hugo/cover.jpg"

8、文章中使用图片

# 由于最后使用静态部署方案,所以使用/images作为文章内图片的根路径
![](/images/howto-use-hugo/cover.jpg)

9、生成静态网页

# 需要注意的是因为在设置中加入了baseurl指定,为了避免两次url重复
# 这里生成静态页面时强制添加空的baseUrl
hugo --theme=hestia-pure --baseUrl=""

10、Nginx部署

若不喜欢使用静态部署方案,可使用Nginx代理生成的静态网页

server {
    listen       80;
    server_name  host;
    index  index.html;
    root   path/to/site/public;

    access_log  host.access.log  main;
    error_log   host.error.log;

    error_page  404   /404.html;
    location = /404.html {
        root   html;
    }
    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /\.ht {
        deny  all;
    }
}