使用Hexo搭建GitHub博客(2018年Mac版)

关于本文
本文仅记录自己学习搭建Hexo博客之时,搭建过程中掉坑的历程总结,对零基础起步的观众朋友可能缺乏某些基础技术的指导,请优先食用下述两篇优质教程:
※ 为了更优质的排版视觉效果,欢迎移步到简书浏览:使用Hexo搭建GitHub博客(2018年Mac版)
十万个为什么
什么是Hexo
度娘谷歌搜索了Hexo各种资料解说,个人感觉上这是一套使用第三方主题模板+自己的博客文章(.md文件)+网站信息配置,通过Node.js进行本地连接混合生成一套静态网站的工具链套件
也就是说,通过Hexo创建的博客是一个仅提供在线浏览功能的静态博客,不存在后台编辑功能,添加新博客时需要在自己开发机上编写新博客文章(.md文件),再次生成一个新版本网站,上传并替换,从而实现新文章发布
优势是可使用网上各种免费的静态网站空间,节省服务器租金,省去维护服务器的工作,不需担心后台被黑导致数据丢失,无痛随时全站更换主题…
劣势是不能在公司电脑上随时在线更新博客,除非带着Hexo博客源码…
和需要自己保管好Hexo博客源码,否则数据丢了看上去有点难重新把博文整理下来

什么是Node.js
度娘谷歌搜索了Node.js各种资料解说,个人感觉上这就是一套SDK,一套使用JavaScript编写的,包含多个应用级功能模块,可用于一般应用开发的工具包
JavaScript的运行需要一个JS解释器实时运算每一句JavaScript代码,一般情况下网页上的JS代码段会使用浏览器提供的解释器运行,而Node.js使用了谷歌开源的一个名为V8引擎的良心产品(JS解释器),实现脱离浏览器下运行JavaScript代码

什么是nvm
nvm,Node Version Manager 是一个开源的Node.js版本管理Bash工具,可方便的在Bash环境下下载、更新、管理多个版本并存的Node.js,并选择性地使用其中一个

什么是GitHub Pages
GitHub Pages 是GitHub提供的个人静态主页网站托管服务,原目的是用于提供你在GitHub上托管的所有开源项目介绍,后来也推荐作为个人博客之类的用途
优势是使用简单方便,免费高效实时,可用空间高达1G,可绑定自定义域名,原生自带GitHub级别防护…好像无敌了

什么是…

前提条件
- 已安装Git工具
- 已有GitHub账号
- (Mac)已安装Xcode command line tools
安装nvm与Node.js
参考我的另一篇文章 Node.js安装 - 简书
安装Hexo
npm install -g hexo-cli
为了便于发布到GitHub上,建议同时安装hexo-deployer-git
npm install hexo-deployer-git --save
初始化,建立博客项目
选定博客网站项目程序文件的存放位置,如~/develop/hexo/github/,Bash中cd进入该目录下,执行命令:
hexo init
执行完毕后,该命令将在当前目录下生成一套标准的Hexo博客项目模板
生成网站
上面的操作只是生成了一套网站构成所需的“源代码”,实际发布时需要根据这套“源代码”当中的配置文件、博客文档(.md文件)、主题模板等,进行组合构建,生成服务器可识别的标准HTML网站目录,此时可使用该命令:
hexo g
执行完毕后,在public目录下可看到我们自己书写的博客文档(.md文件)与所选的博客主题模板链接组合,生成的最终静态网站文件,该目录也差不多就是之后发布到GitHub上的实际文件(实际发布到GitHub的是.deploy_git目录),外部的网站“源代码”不会上传到github.io库
启动本地服务器
启动本地服务器可即时查看网站运行效果:
hexo s
默认地址是 localhost:4000
选择主题
Hexo可随时使用、更换博客主题
主题文件可在Hexo官方主题网页中下载,以Material为例,点击主题预览图下方的主题名称链接即可进入该主题的源码发布页面 GitHub - viosey/hexo-theme-material: Material Design theme for hexo.

根据主题安装指导,下载项目至博客项目下的themes目录中,文件夹命名为material,并在博客配置文件_config.yml中指定使用该主题:
theme: material
将material主题目录下的_config.template.yaml重命名为_config.yaml
参考Material主题文档进行必要配置
再次执行 hexo g 将会根据新主题重新构建整个博客
注意:
1.5.6版本在执行hexo g时会报出TypeError错误,可参考Issue686修改dnsprefetch.ejs文件解决
发布博客
创建github.io仓库
在自己的GitHub中,创建新仓库,标准命名为GitHub用户名.github.io,例如我的:wavky.github.io
仓库Readme、License之类的留空即可,之后在发布上传时会被强制覆盖抹掉
配置SSH密钥
参考 https://my.oschina.net/ryaneLee/blog/638440 配置SSH密钥一节
修改博客配置文件_config.yml
deploy:
type: git
repo: GitHub上传仓库的完整路径,如 https://github.com/wavky/wavky.github.io.git
branch: master
发布到GitHub
在hexo g生成完毕后,可执行该命令发布博客到GitHub上:
hexo d
或在生成网站的同时进行发布:
hexo g -d
查看效果
点击仓库页面中的GH Pages按钮,应该可以看到真正发布在互联网上的效果

绑定域名
GitHub Pages 默认提供的是 GitHub用户名.github.io(例如我的:wavky.github.io)作为博客访问地址,可设置绑定自定义域名
在博客项目目录的source文件夹中,创建一个CNAME文件,存储预备使用的个人域名,如:
# 在source目录下
echo story.wavky.com > CNAME
清理Hexo缓存并重新生成发布
hexo clean
hexo g -d
GitHub项目页面中Setting设置界面,滚到GitHub Pages部分确认域名无误

在个人域名提供商(如阿里云万网)中,进入DNS设置界面,追加一条CNAME记录,这里我指定以story前缀的个人域名跳转到原来的默认的博客域名wavky.github.io,记录如下:

注:其他类型的域名绑定方式(例如IP指向等),在最后一步DNS设置中操作会不一样
等待10分钟左右应该生效
下一篇:如何使用Hexo写博客
番外篇:Hexo之我的桌角女友的食用方式
使用Hexo搭建GitHub博客(2018年Mac版)的更多相关文章
- 使用Hexo搭建github博客步骤,超简便
categories: 工具 tags: git Windows 搭建博客 你只需要node环境和一个github账号就可以开工啦! 本教程适合于Windows环境,Mac教程也大同小异 利用hexo ...
- Linux下使用Hexo搭建github博客
找到一篇靠谱的博客,备份一下: ---------以下原文------------------ Nodejs安装 因为hexo是基于nodejs的应用,所以要先安装nodejs才可以.我这里以Ubun ...
- 转:20分钟教你使用hexo搭建github博客
注册Github账号 这里我们就不多讲了,小伙伴们可以点击这里,进入官网进行注册. 创建仓库 图片来自Github 登录账号后,在Github页面的右上方选择New repository进行仓库的创建 ...
- 使用hexo搭建github博客
Win7系统已经安装了node.js和npm npm install -g hexo-cli 全局安装hexo客户端 hexo init blog 在喜欢的位置初始化blog目录 cd blog np ...
- 使用github和hexo搭建静态博客
获得更多资料欢迎进入我的网站或者 csdn或者博客园 终于写这篇文章了,这是我使用github和hexo搭建博客的一些心得,希望能给大家一点帮助.少走点弯路.刚接触github,只是用来存项目的版本, ...
- 使用Hexo搭建个人博客并部署到GitHub或码云上全过程
一.前言 如上图所示:GitHub有Github Pages,而码云也有码云 Pages 1.Github Pages或Gitee Pages是什么呢? Github Pages或者Gitee Pag ...
- Linux下使用 github+hexo 搭建个人博客07-next主题接入搜索和站点管理
这是搭建个人博客系统系列文章的最后一篇,如果你是从第一篇一路跟下来的,那么恭喜你,即将完成整个博客网站的搭建.OK,话不多说,开始我们的收官之战. 不知你想过没有,如果我们的文章少,一眼看完整个目录, ...
- Linux下使用 github+hexo 搭建个人博客06-next主题接入数据统计
之前说了 next 主题的优化和接入评论系统.让我们完成了自己所需的页面风格和排版,也可让访问用户在每篇博文评论,完成博主和访问用户的交互. 本章我们继续讲解其他重要功能. 既然是一个网站,那么我们就 ...
- Linux下使用 github+hexo 搭建个人博客05-next主题接入评论系统
静态站点拥有一定的局限性,因此我们需要借助于第三方服务来扩展我们站点的功能. 而评论系统是最常用于和网站用户交流的,因此本章讲解在 next 主题,如何接入评论系统. 参考网站:Next 使用文档,第 ...
随机推荐
- Siki_Unity_2-7_Stealth秘密行动
Unity 2-7 Stealth秘密行动 Abstract:向量运算:Animation动画:Navigation寻路系统:Mecanim动画系统 任务1&2&3:游戏介绍 & ...
- NO--10今天带大家回忆回忆“闭包”吧!
对于‘闭包,我相信很多人都掉进过这个坑里,也相信很多人没能详细的理解这个问题,今天带大家再次走进闭包: 写这篇文章时的心情是十分忐忑的,因为对于我们今天的主角:闭包,很多小伙伴都写过关于它的文章,相信 ...
- 洛谷【P1052】过河
https://www.luogu.org/problemnew/show/P1052 题目描述 在河上有一座长度为 L 的独木桥, 一只青蛙想沿着独木桥从河的一侧跳到另一侧. 在桥上有一些石子, 青 ...
- Ubuntu系统下在PyCharm里用virtualenv集成TensorFlow
我的系统环境 Ubuntu 18.04 Python3.6 PyCharm 2018.3.2 community(免费版) Java 1.8 安装前准备 由于众所周知的原因,安装中需要下载大量包,尽量 ...
- 算法笔记(c++)--使用一个辅助栈排列另一个栈
算法笔记(c++)--使用一个辅助栈排列另一个栈 仅仅使用一个辅助栈,不使用其他数据结构来排列一个栈,要求,上大下小. 分析下.肯定是先吧主栈中的数据都放到辅助栈中,在辅助栈中上小下大. 1.首先循环 ...
- Python基础知识-06-集合内存布尔False
python其他知识目录 1.判断一个字符串中是否有敏感字符? #str: m_str="我叫魔降风云变" if "魔" in m_str: #判断指定字符是否 ...
- 4.hive的外部表和内部表
1.外部表和内部表区别 创建表时:创建内部表时,会将数据移动到数据仓库指向的路径:若创建外部表,仅记录数据所在的路径, 不对数据的位置做任何改变. 删除表时:在删除表的时候,内部表的元数据和数据会被一 ...
- app开发相关
app播放UIWebview 没有声音解决: 设置 allowsInlineMediaPlayback = YES; mediaPlaybackRequiresUserAction = NO
- 软工1816 · Alpha冲刺(7/10)
团队信息 队名:爸爸饿了 组长博客:here 作业博客:here 组员情况 组员1(组长):王彬 过去两天完成了哪些任务 学会了POSTMAN的使用,对后端已经完成的接口进行了收发消息正确性的验证 推 ...
- DB2 日志
跟Oracle类似DB2也分为两个模式,日志循环vs归档日志,也就是非归档和归档模式,下面对这两种模式做简单的介绍. 日志循环 日志循环是默认方式,也就是非归档模式,这种模式只支持backup off ...