利用hugo生成静态站点
动机
使用Markdown撰写博客,并以静态页面形式发布。
选择hugo
现在jekyll似乎更加流行,但是jekyll是基于Ruby的,在windows下安装很繁琐。
而hugo是用go写的,windows版本只有一个exe,安装起来非常方便。
因此决定使用hugo作为站点生成器。
系统环境
- Windows 8.1 x64(主流Windows系统应该都没有问题)
- git(用来下载皮肤)
安装hugo
下载
通过Github的下载页面获得最新版本的hugo。
解压并配置PATH
- 解压到任意文件夹,例如:
D:\soft\hugo。 - 将该文件夹追加到系统环境变量的PATH变量下。
检验
在命令行下输入如下命令:
hugo version
如果配置成功,会显示当前hugo的版本号。
建立hugo工程
建立工作文件夹
例如:
D:\soft\hugo\blog
进入该文件夹:
D:\>cd D:\soft\hugo\blog
D:\soft\hugo\blog>
建立站点
例如:
blog.mute-g.com
D:\soft\hugo\blog>hugo new site blog.mute-g.com
确认目录结构已经建立
blog.mute-g.com
├─archetypes
├─content
├─data
├─layouts
├─static
└─themes
安装皮肤
选择皮肤
可以在官方皮肤市场选择皮肤,点进去后可以看到皮肤下载地址,一般都是一个git链接。
本次选择的皮肤是Cactus Plus。
进入themes文件夹
D:\soft\hugo\blog\blog.mute-g.com>cd themes
D:\soft\hugo\blog\blog.mute-g.com\themes>
下载皮肤到此文件夹
git clone https://github.com/nodejh/hugo-theme-cactus-plus.git
定制皮肤
拷贝配置文件
在此款皮肤下有一个exampleSite文件夹,将里面的config.toml文件拷贝到hugo目录下。
修改配置项
打开config.toml,更改里面的配置项。
例如:“知名搜索公司”的Analytics服务ID、Disqus的shortname等等。
有些服务国内无法使用,不过此款皮肤内置提供了国内可以使用的替代品。
注意: 如果不是想托管在S3下,则皮肤定制到此就可以结束了。
设置页面生成形式
默认状态下,静态页面会以主题文件夹下带一个index.html的形式生成,但是由于我希望将静态网站托管在Amazon的S3服务下,需要页面以主题.html的形式生成,因此需要在配置文件内加入配置项:
uglyurls = true
修改页面模板
基于上诉理由,需要对页面模板进行一些修正。
- 首先将
themes\hugo-theme-cactus-plus\layouts\partials\nav.html和
themes\hugo-theme-cactus-plus\layouts\taxonomy\tag.terms.html拷贝到
blog.mute-g.com\layouts下的对应文件夹内,拷贝完成后的目录结构应该如下:
blog.mute-g.com
└─layouts
├─partials
| └─nav.html
└─taxonomy
└─tag.terms.html
- 将
nav.html中三个链接的末尾加上.html,如下:
<a href='{{ .Site.BaseURL }}post.html'>
<a href='{{ .Site.BaseURL }}tags.html'>
<a href='{{ .Site.BaseURL }}about.html'>
- 将
tags的链接的末尾加上.html,如下:
<a href="/tags/{{ $name | urlize }}.html" rel="{{ len $taxonomy }}">
初始化
- 回到站点根目录
D:\soft\hugo\blog\blog.mute-g.com>
- 生成“关于”页
hugo new about/_index.md
- 生成“标签”页
hugo new tags/_index.md
- 启动服务器确认成果
hugo server
通过http://localhost:1313/访问
写一篇文章
新建一篇文章
hugo new post/hugo/get-start.md
编辑文章内容
打开post\hugo\get-start.md,可以看到如下内容:
+++
categories = ["博客搭建"]
date = "2017-07-14T15:52:54+09:00"
description = "从零开始搭建属于自己的静态网站"
tags = ["hugo"]
title = "利用hugo生成静态站点"
+++
在这一部分设置“分类”、“标题”、“标签”等等内容。
在下面的空白部分,就可以遵循Markdown语法撰写文章了。
发布站点
自动生成静态页面
在站点根目录下执行如下命令:
hugo
执行完毕后,会在hugo文件夹下自动生成一个public文件夹,里面就是自动生成好的站点了。
上传到托管服务器
将public下面的所有内容上传到托管服务器,就可以访问自己的博客站点啦。
利用hugo生成静态站点的更多相关文章
- [golang][hugo]使用Hugo搭建静态站点
使用Hugo搭建静态站点 hugo下载地址:https://github.com/gohugoio/hugo 模板列表:https://github.com/gohugoio/hugoThemes 开 ...
- SpringBoot 利用freemaker生成静态页面
1. <!-- freemarker模板 --> <dependency> <groupId>org.springframework.boot</groupI ...
- react-static 基于react 渐进式静态站点生成框架
react-static 是一个不错的基于react 开发的静态站点生成框架,可以用来替代create-react-app 包含的特性 100% react 很快的构建以及性能 自动代码以及数据分离 ...
- cmake利用toolchain.cmake生成makefile之后,make生成静态库失败问题
问题描述 利用toolchian.cmake设置好编译器后,利用make指令生成静态库,出现以下问题 Error running link command: No such file or direc ...
- 利用PHP的ob函数实现生成静态化页面
之前用过一些开源的CMS管理系统,当时就很好奇后台中的生成HTML静态文件是怎么实现的.今天和同事讨论了下,没想到同事之前做过这类的生成静态页面的功能,果断向他请教了下. 经他讲解后,才知道其实生成静 ...
- ASP.NET MVC 利用Razor引擎生成静态页
实现原理及步骤: 1.通过ViewEngines.Engines.FindView查找到对应的视图,如果是部分视图,则用:ViewEngines.Engines.FindPartialView: 2. ...
- 浅谈php生成静态页面
一.引 言 在速度上,静态页面要比动态页面的比方php快很多,这是毫无疑问的,但是由于静态页面的灵活性较差,如果不借助数据库或其他的设备保存相关信息的话,整体的管理上比较繁琐,比方修改编辑.比方阅读权 ...
- PHP代码为什么不能直接保存HTML文件——>PHP生成静态页面教程
1.server会依据文件的后缀名去进行解析,假设是HTML文件则server不会进行语法解析.而是直接输出到浏览器. 2.假设一个页面中所有都是HTML代码而没有须要解析的PHP语法,则没有必要保存 ...
- 减少服务器压力php生成静态xml文件
一.引 言 在速度上,静态页面要比动态页面的比方php快很多,这是毫无疑问的,但是由于静态页面的灵活性较差,如果不借助数据库或其他的设备保存相关信息的话,整体的管理上比较繁琐,比方修改编辑.比方阅读权 ...
随机推荐
- 如何成为一位黑客 ( How To Become A Hacker )
http://blog.csdn.net/jarodlau/article/details/337891 How To Become A Hacker 如何成为一位黑客(转载) 这真是一个好问题,不止 ...
- ie6 javascript:void(0);
遇到过几次这种问题,现在总结一下. 代码: <a onclick="window.location.href='http://www.google.com'" href=&q ...
- idea 编辑时cup飙升解决方案,亲测有效
idea(64).exe.vmoptions内容如下: -Xms1024m -Xmx2048m -XX:MaxPermSize=512m -XX:ReservedCodeCacheSize=256m ...
- C#:转换类型(待补充)
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace MyCo ...
- Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果
转帖请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/17539199),请尊重他人的辛勤劳动成果,谢谢! 我在上一 ...
- 深入理解MapReduce的架构及原理
1. MapReduce 定义 Hadoop 中的 MapReduce是一个使用简单的软件框架.基于它写出来的应用程序能够执行在由上千个商用机器组成的大型集群上,并以一种可靠容错式并行处理TB级别的数 ...
- django-1.11.3 源码详解 -- 0001 django-admin.py 的调用逻辑
django-admin是django的命令行接口.可以用它来创建工程(startproject) .创建app(startapp).它里面又是怎么写的呢? 一.django-admin.py 的内容 ...
- Informix 語法
1.修改表名稱 RENAME TABLE old_table_name TO new_table_name; 2.分頁 select SKIP 0 FIRST 1 * from tablename ...
- Decoration5:引入swagger2进行API管理
这一部我们计划把swagger2引入到项目中,把网站的接口以文档的形式展示出来. 1.引入springfox-swagger2.springfox-swagger-ui 2.实现Swagger2 3. ...
- FreeRTOS 中断优先级配置(重要)
以下转载自安富莱电子: http://forum.armfly.com/forum.php NVIC 的全称是 Nested vectored interrupt controller,即嵌套向量中断 ...