用Hugo搭建博客并部署到GitHub Pages

之前担心过现有博客平台(如博客园,CSDN)突然倒闭了,博文特别是插图来不及备份;也考虑过自建博客可以更随意,因此有了自建博客的打算。花了两天时间,走了一些弯路,有一些经验总结:

  1. 做事情一定要搞清楚需求,掂量自己的实力。原本我只是想做一个备份,那么本地写好markdown,存好插图,再同步到博客园就行了,没有必要费力建博客搭网站。虽然Hexo和Hugo都有很多模板供选择,但如果要彻底改造成自己喜欢的样子,还得好好研究琢磨。对于没有任何HTML经验的我,这种工作量远远超过了我的预期。

  2. 不要沦为工具的努力。就像斟酌linux还是windows好一样,纠结自建博客和使用博客平台对我来说没太大意义。因为我的目的还是写作,博客也是服务于写作的。既然自建博客的收益并不能完全覆盖我的需求(可能还要支配大量的经历调bug),那么我就应该果断放弃。

  3. Hugo非常非常快,但中文文档和博客少,而且旧模板和新Hugo的兼容性也不好;Hexo中文文档和博客特别多,模板也不错,但是稍微麻烦一点,而且慢得多。

最后,我就简单地用Hugo搭建了一个个人CV(简历)网站。下面记录一下流程:

1. 本地搭建

1.1 安装Hugo

  1. Hugo官方GitHub仓库,下载最新的win64安装包。解压到D:\hugo
  2. 配置环境变量:此电脑->属性->高级系统设置->环境变量->系统变量->Path->编辑->新建->D:\hugo

1.2 创建站点

在命令行中运行hugo new site G:/RyanXing,即创建了一个名为RyanXing的文件夹,作为Hugo站点。

1.3 新建页面和文章

进入该文件夹:

  • 新建页面:hugo new links.md

    该文件自动出现在content/links.md

  • 创建文章:hugo new post/myfirst.md

    其自动出现在content/post/myfirst.md。放在post目录是为了方便聚合页面。

    注意要把draft一行去掉。draft意思是草稿,即在生成时不出现。

1.4 使用主题

Hugo Themes选择喜欢的主题。有适合简历的,也有适合博客的。

要根据主题提供的README进行后续操作。假设选择Minos。根据说明文档,执行:

cd themes/
git clone --depth 1 https://github.com/carsonip/hugo-theme-minos

然后在根目录的config.toml中设置该主题为默认主题即可(添加该行):

theme = "hugo-theme-minos"

1.5 修改配置文件

我们现在继续修改根目录的config.toml

baseurl = "https://ryanxingql.github.io/"
languageCode = "zh-CN"
title = "RyanXing's CV" paginate = 10 theme = "hugo-theme-minos"

1.6 预览

在根目录执行:hugo server。此时生成的是静态文件,真的很快。只要server不关,会一直监控文件变化,自动生成静态文件。

我们可以看到命令行提示Web Server is available at ...。在浏览器输入http://localhost:1313

一定要记得去掉正文的draft,否则不显示。

2. 部署

在GitHub上创建一个仓库,名为RyanXingQL.github.io。注意命名规范。

在根目录执行:hugo

此时,所有的静态页面都会生成到public目录。执行以下命令:

cd public
git init
git remote add origin git@github.com:RyanXingQL/RyanXingQL.github.io.git
git add -A
git commit -m "first commit"
git push -u origin master

浏览器输入https://ryanxingql.github.io/,刷新一下就能看到啦。Hugo非常快。

如果要搭博客,后期要考虑的事情就多了。比如评论系统,各种装饰插件等。

Note | 用Hugo搭建博客并部署到GitHub Pages的更多相关文章

  1. 基于Hexo搭建博客并部署到Github Pages

    基于Hexo搭建博客并部署到Github Pages 之前在简书上写东西,觉得自己还是太浮躁.本来打算用Flask自己写一个,以为是微框架就比较简单,naive.HTML.CSS.JS等都要学啊,我几 ...

  2. Linux下使用 github+hexo 搭建个人博客02-hexo部署到Github Pages

    之前的这篇文章<Linux下使用 github+hexo 搭建个人博客01-hexo搭建>,相信大家都知道怎么搭建 hexo ,怎么切换主题,并且完成了一篇博文的创建,以及 MarkDow ...

  3. 史上最详细“截图”搭建Hexo博客并部署到Github

    http://jingyan.baidu.com/article/d8072ac47aca0fec95cefd2d.html 大家也搭建过博客,很多时候,按着教程来做就可以了,但是我当时为了搭建Hex ...

  4. Termux搭建hexo博客并部署到GitHub

    Termux搭建hexo博客并部署到GitHub 安装 termux-change-repo apt update apt install git && nodejs &&am ...

  5. 手把手教从零开始在GitHub上使用Hexo搭建博客教程(一)-附GitHub注册及配置

    前言 有朋友问了我关于博客系统搭建相关的问题,由于是做开发相关的工作,我给他推荐的是使用github的gh-pages服务搭建个人博客. 推荐理由: 免费:github提供gh-pages服务是免费的 ...

  6. Hexo瞎折腾系列(6) - 将博客同时部署到Github和Coding

    前言 由于本人只是将Hexo博客同时部署到 Github 和 Coding.net ,所以这里只介绍怎么同时部署到这两个网站的pages. 之所以选择这两个网站,是因为国外用户可以访问 Github, ...

  7. 使用Hexo搭建个人博客并部署到GitHub或码云上全过程

    一.前言 如上图所示:GitHub有Github Pages,而码云也有码云 Pages 1.Github Pages或Gitee Pages是什么呢? Github Pages或者Gitee Pag ...

  8. 如何用hugo 搭建博客

    1,Hugo 简介 搭建个人博客有很多开源的博客框架,我们要介绍的框架叫作Hugo.Hugo 是一个基于Go 语言的框架,可以快速方便的创建自己的博客. Hugo 支持Markdown 语法,我们可以 ...

  9. 使用django搭建博客并部署

    2017/8/31 18:27:59 为了以后参考的方便,在这里总结一下django搭建博客网站的主要步骤.以下大部分的内容,参考自Django中文文档 - 看云. 需要强调的是,这里使用的djang ...

随机推荐

  1. ABAP分享三 批量上传数据到内表简单示例

    tYPE-POOLS: truxs. DATA: BEGIN OF build, name(10) TYPE c,   age(3)   TYPE c,   sex(2)   TYPE c,   sp ...

  2. fiddler 常用命令及快捷键

    1.搜索: ?  baidu.com 2.bpu 发起请求时中断 设置断点 bpu baidu.com 取消断点:bpu 3.bpafter  收到响应后中断 设置断点:bpafter baidu.c ...

  3. 【使用篇二】SpringBoot使用Druid作为数据源(19)

    Druid是一个关系型数据库连接池,它是阿里巴巴的一个开源项目.Druid支持所有JDBC兼容数据库,包括了Oracle.MySQL.PostgreSQL.SQL Server.H2等.Druid在监 ...

  4. cookie及其特点

    关于cookie我们首先要知道cookie是指会话跟踪技术 我们可以用它来做一下事情,但是我们需要清楚cookie是不安全的 功能: 会话状态管理(如用户登录状态.购物车.游戏分数和其它需要记录的信息 ...

  5. Java入门系列之集合ArrayList源码分析(七)

    前言 上一节我们通过排队类实现了类似ArrayList基本功能,当然还有很多欠缺考虑,只是为了我们学习集合而准备来着,本节我们来看看ArrayList源码中对于常用操作方法是如何进行的,请往下看. A ...

  6. 用 Python 实现植物大战僵尸代码!

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: marble_xu GitHub地址:https://github ...

  7. GO基础之函数的高级用法

    一.可变参数 支持可变长参数列表的函数可以支持任意个传入参数,比如fmt.Println函数就是一个支持可变长参数列表的函数. package main import "fmt" ...

  8. Linux-正则、grep、sed学习笔记

    一.正则和grep 正则表达式的实现分成了两类: 基本正则表达式(BRE)和扩展的正则表达式(ERE). BRE 和 ERE 之间有什么区别呢?这是关于元字符的问题.BRE 可以辨别以下元字符: ^ ...

  9. 使用NodeJS模块-第三方提供的模块(什么是npm)

    第三方开发者提供的模块 第三方模块是由NodeJS社区或第三方个人开发的功能模块,这些功能模块以软件包的形式存在.被发布在npmjs注册表中.npmjs是一个注册中心,所有软件包的信息都会被记录到该注 ...

  10. 微信小程序实现点击拍照长按录像功能

    微信小程序实现点击拍照长按录像功能 代码里面注释写的都很详细,直接上代码.官方的组件属性中有触摸开始和触摸结束属性.本功能依靠这些属性实现. .wxml代码: <!-- 相机 pages/cam ...