Hugo安装配置

Hugo介绍

最早学python使用pelican生成静态博客,后来知道hexo插件、应用、theme很多又换到了hexo上,最近又有时间捣鼓一下,于是发现了hugo,也顺便试一下,为什么要使用hugo,不完全总结下官方的话就是:

  • 速度快:由于Hugo是用Go语言编写的在生成速度这方面做的非常好.5000篇文章的博客生成时间只需要6秒钟;
  • 静态页面无依赖:不依赖数据库管理,简单维护;
  • 低消耗:只把要展示的静态页面及资源放到服务器上,运行网站消耗很小的资源;
  • 专注写作:使用markdown语法,写作更简单,不需要太过关注于软件的管理。

以上几点除了速度快以外,其他几点pelican和hexo都能满足,至于速度快在我这个几篇文章的小博客也没啥体现,也感觉不到啥好处。

下面简单记录下我的hugo配置安装使用过程。

Hugo安装

安装很简单,我使用的macos,直接执行命令:

1
brew install hugo

然后查看

1
hugo version

如果没有报错,并且显示版本信息,那么hugo安装就OK了。

创建站点

到要新建站点只要执行以下命令就OK了

1
hugo new site quickstart

quitckstart 是要建立站点的目录路径,可任意。

创建文章

经过以上步骤一个hugo网站框架基本就搭建好了,就是这么简单,现在可以码字了,可以创建一个页面

1
hugo new post/first.md

这样就在网站的content目录下创建了一个first.md的文章,使用编辑器打开文章只有一些基础的meta信息

1
2
3
4
5
---
title: "First"
date: 2018-03-05T10:31:45+08:00
draft: true
---

这些信息是YAML格式的,当然根据你的喜好使用TOML和JSON格式hugo也是支持的。

安装Theme

hugo安装皮肤也很简单,官方给了很多theme,你可以去Hugo Themes找一款心仪的,然后根据安装说明进行安装,我使用的even主题 安装也比较简单,使用git clone项目到themes目录做一些修改就可以了

1
git clone https://github.com/olOwOlo/hugo-theme-even themes/even

然后到even目录找到config.toml替换到网站根目录config.toml进行相应的修改就可以了,even的config.toml文件说明很清楚,可以根据自己的需要进行更改。

更高级的使用不太清楚,有时间再研究even

生成静态文件

在网站根目录直接使用hugo命令(不需要带参数)就可以生成html静态网页。 如果在本地预览可以加上hugo server,使用 http://localhost:1313 就可以在本地预览blog,更常用的参数如下:

1
hugo server --theme=even --buildDrafts

以上命令会在本地网站根目录生成一个public文件夹,里面就是生成的html和其它的一些静态资源文件,将这些文件部署到服务器就可以访问你的网站了。上面的命令--theme指定模板风格(也就是选一个 theme 的皮肤),不设置就使用你配置好的theme。默认md文件meta头信息里加了draft: true的markdown文件被认为是草稿是不会生成html文件的,如果运行上面命令加了--buildDrafts就会把草稿也生成html。

hexo命令的参数还很多,没来的及研究,等有需要再研究。

部署

我使用的VPS主机,所以在主机上安装了Nginx服务,配置好Nginx服务,并绑定好域名,将本地网站根目录的public文件夹上传至Nginx服务器配置好的Web目录,就可以通过域名访问blog了。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
server {
	listen 80;
	server_name your_domain_name;
	return 301 https://$server_name$request_uri; # 配置http请求转发到https
}
server {
	listen 443;
	listen [::]:443;
	ssl on;
	ssl_certificate public_key.pem;  # ssl公钥
	ssl_certificate_key private_key.pem;  # ssl秘钥

	ssl_session_timeout 5m;
	server_name your_domain_name;

	root /www;
	index index.html;

	location / {
		try_files $uri $uri/ =404;
	}
}

Nginx配置如上。直接写了一个脚本使用rsync将public目录同步到服务器上:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/sh

# 主机用户
USER=xxx

# 主机名或IP地址
HOST=myhost

# 主机ssh端口
PORT=22

# 同步主机目录
DIR=/www

# 同步本地目录
# LOCAL_DIR=public

# 生成html并同步目录
hugo && rsync -avz --delete -0 --port=${PORT} ${LOCAL_DIR} ${USER}@${HOST}:${DIR}

exit 0

注:以上脚本同步没有使用密码,是由于之前已经将ssh公钥上传至服务器,可以本机免密登录

使用了SSL,到freessl申请一个免费证书,然后把公钥和私钥上传到服务器,并在Nginx如上配置,这样就可以通过https访问博客了。(没怎么用过Nginx,随便配置能用,估计之后要改进)

Licensed under CC BY-NC-SA 4.0
最后更新于 Jul 14, 2020 08:50 +0800
comments powered by Disqus
Built with Hugo
主题 StackJimmy 设计