用hugo搭建个人网站

hugo

Posted by WangZiTao on Monday, August 28, 2017
  • 摘要: 本文将介绍什么是Hugo,怎么用Hugo搭建个人网站,如何本地测试及如何发布到Github并生成Github pages。

什么是Hugo


Hugo是一种静态网站生成器。适用于搭建个人博客、小型公司主页等网站,是一种小型的CMS系统。

静态站点的好处就是快速、安全、易于部署,最主要是可以通过版本控制来进行管理。

静态网站生成器有很多种,Github上有总结,知名的有Jekyll,Middle Man App,等等。

我之所以选择Hugo,首先是因为它支持Windows系统,并且安装很简单。其次是对markdown语法的支持,这对我来说很方便。然后是主题、文档支持等等各方面都比较完善。

如何用Hugo搭建个人网站

=============

1.下载和安装Hugo


Hugo是用Go语言写的,早期版本还要下载Go,目前版本是v0.18.1,直接下载,不再需要额外的依赖了。

win64x对应的是hugo_0.18.1_Windows-64bit.zip,下载后创建安装目录,例如D:\Hugo,之下建两个子目录bin和Sites,然后解压,例如解压到D:\Hugo\bin,把解压的hugo_0.18.1_windows_amd64.exe文件重命名为hugo.exe,然后加到环境变量Path里,方便在命令行里使用。

添加成功后打开cmd或者PowerShell,运行命令hugo version,如果安装成功,会输出Hugo Static Site Generator v0.54.0-B1A82C61 windows/amd64 BuildDate: 2017-08-01T09:42:02Z。

2.搭建个人网站


首先要确定自己要搭建什么网站,我要建的是托管到Github的用户网站,按照Github Pages规则,网站名应该是<username.github.io>,所以我第一步创建网站用以下命令:

cd D:\Hugo\Sites
hugo new site brent-li.github.io

之后在Site目录下多了一个brent-li.github.io文件夹,进入文件夹可以看到目录结构如下:

|-- archetypes
|-- config.toml
|-- content
|-- data
|-- layouts
`-- static

archetypes目录里可以放一些原型,用于hugo新建内容的配置属性。config.toml是网站的配置属性文件。content文件夹里放你网站的内容,例如你发布的博客文章。data目录是Hugo使用的配置文件存放的地方。layout目录存放布局内容。static目录存放静态资源如图片、css等。

接下来我们先在content里放点东西。命令如下:

cd brent-li.github.io
hugo new post/first.md

Hugo会在content目录下创建post目录,在post目录下创建 first.md文件。之后打开md文件,里面已经有些内容

+++
date = "2017-10-08T22:07:46+08:00"
title = "first"
draft = true
+++

+++包起来的内容是TOML配置信息,叫作扉页(front matter),默认这3项,可以再添加一些,其中draft是true时Hugo不会真正发布它,我修改后的扉页如下:

+++
date = "2017-02-08T22:07:46+08:00"
title = "Scala学习笔记之模式匹配"
draft = false
tags = ["scala","pattern matching","模式匹配"]
share = true
+++

然后再把我的博客内容复制进md文件,一篇博客完成了。接下来该给网站添加主题来装饰一下了。

Hugo主题网站提供了很多主题,选择自己喜欢的下载,我选择了casper,在自己网站目录下创建themes目录,然后下载主题:

cd themes
git clone git clone https://github.com/zhaohuabing/hugo-theme-cleanwhite.git white

然后配置config.toml文件如下:

baseurl = "https://wangzitao6.github.io" #一定要用https,github强制安全措施
title = "王子滔的博客"
theme = "white"
languageCode = "zh_CN"
# Enable comments by entering your Disqus shortname
DisqusShortname = "WangZiTao"
googleAnalytics = ""
preserveTaxonomyNames = true
paginate = 5 #frontpage pagination
hasCJKLanguage = true
[outputs]
home = ["HTML", "Algolia"]

[params]
  header_image = "images/1.jpg"
  description = "王子滔, 美食爱好者,生活探险家 | 这里是 王子滔 的博客,与你一起发现更大的世界。"
  keyword = "王子滔, wangzitao, WangZiTao, 王子滔的网络日志, 王子滔的博客, 博客, 个人网站, 互联网, Web, 云原生, PaaS, Istio, Kubernetes, 微服务, Microservice"
  slogan = "~路漫漫其修远兮~"

  image_404 = "images/404-bg.jpg"
  title_404 = "你来到了没有知识的荒原 :("

  # leancloud storage for page view counter
  page_view_conter = false
  leancloud_app_id = ""
  leancloud_app_key = ""

  # algolia site search
  algolia_search = true
  algolia_appId = "WM4BEY1UDN"
  algolia_indexName = "blog"
  algolia_apiKey = "090c4a77b8bd4b8d2f2c1262afbc4be2"


  # Sidebar settings
  sidebar_about_description = "搬砖工程师"
  #sidebar_avatar = "images/avatar-1.jpg"      # use absolute URL, seeing it's used in both `/` and `/about/`
  sidebar_avatar = "images/me.jpg"      # use absolute URL, seeing it's used in both `/` and `/about/`

  featured_tags = false
  featured_condition_size = 1

  # Baidu Analytics
  ba_track_id = "28c952e35b6e860c096a2cdf52785c6f"

  # We need a proxy to access Disqus api in China
  # Follow https://github.com/zhaohuabing/disqus-php-api to set up your own disqus proxy
  disqus_proxy = ""
  disqus_site = ""

  friends = false
  bookmarks = false
  about_me = true

  [params.social]
  rss            = false
  email = "wang_zitao@foxmail.com" #邮箱
  #facebook      = "full profile url in facebook"
  #googleplus    = "full profile url in googleplus"
  #twitter       = "full profile url in twitter"
  #linkedin       = "https://www.linkedin.com/in/yourlinkedinid"
  #stackoverflow  = "https://stackoverflow.com/users/yourstackoverflowid"
  #instagram     = "full profile url in instagram"
  github = "https://github.com/wangzitao6" #github用户名
  wechat= "images/qrcode.jpg"  # Replace with your wechat qrcode image
  #medium         = "full profile url in medium"
  #pinterest     = "full profile url in pinterest"


[outputFormats.Algolia]
baseName = "algolia"
isPlainText = true
mediaType = "application/json"
notAlternative = true

[params.algolia]
vars = ["title", "summary", "date", "publishdate", "expirydate", "permalink"]
params = ["categories", "tags"]

配置完不要忘了把封面、头像图片都拷贝到static\images目录下。

3.本地测试

Hugo自带服务器,可以用命令行启动:

hugo server -t white

服务器启动后访问 http://localhost:1313 , 访问网站,发现问题可以及时修改。

4.发布到github


本地测试网站没有问题后,就可以准备发布了。执行以下命令

hugo -t casper

//alogolia生成搜索文件命令
hugo-algolia -s 

Hugo将编译所有文件并输出到public目录,你需要在github上创建repository,名字就是<你的用户名>.github.io,创建完后,返回你本地命令行,进入public目录,执行以下命令:

git init
git add .
git commit -m "Initial commit."
git remote add origin git@github.com:Brent-Li/brent-li.github.io.git
git push -u origin hugo

稍等片刻后,打开<你的用户名>.github.io网址,就可以看到你的个人网站了。


comments powered by Disqus