一、前言
What is Hexo?
Hexo 是一个简单、轻量、基于Node.js的一个静态博客框架,可以方便的生成静态网页托管在GitHub | Coding | GitCafe | 七牛等各种静态存储空间上,引用Hexo作者 @tommy351(台湾) 的原话:
快速、简单且功能强大的 Node.js 博客框架。
A fast, simple & powerful blog framework, powered by Node.js.
身为程序猿,不捣腾点折腾玩意儿,那都愧对咱自己,纵使996,亦或天天加班的情况下,还尼玛抽出点时间来写写Blog也是一种“幸福”嘛!于是,你就在新浪Blog,CSDN,博客园安家?那多没逼格啊!!肯定得整个自己的独立博客嘛,可又觉得申请域名 + 服务器 + SQL存储 + 部署 + 防入侵神马的太麻烦也就一直没去弄(真相:WordPress,各种一键安装神马的,实在提不起劲来了,就作吧-_-|)。不知从何年何月开始,身边慢慢多了很多猿子们一个个在晒自己的GitHub Blog,啧啧,这种潮流,咱能不跟进嘛~~
话说回来,Hexo这个优秀的静态博客框架,搭配上现在流行的GitHub,简直是屌丝党居家必备良品 & 码字Blog的黄金搭档哟。
OK,闲话不多说,咱们开始干货之旅吧!
若是小小菜,可以先暂且花点小时间稍微了解下以下内容:
二、操刀配置(Windows平台下)
2.1 GitHub Pages Repositories
2.1.1 创建对应仓库
在自己的 GitHub 账号下创建一个新的仓库,命名为username.github.io(username是你的账号名)。
在这里,要知道,GitHub Pages有两种类型:User/Organization Pages 和 Project Pages,而咱们这一次所使用的是User Pages。
User Pages 与 Project Pages的区别:
- User Pages 是用来展示用户的,而 Project Pages 是用来展示项目的。
- 用于存放 User Pages 的仓库必须使用username.github.io的命名规则,而 Project Pages 则没有特殊的要求。
- User Pages 将使用仓库的 master 分支,而 Project Pages 将使用 gh-pages 分支(以前还需要手工设置,现在貌似当创建项目时会自动归类到gh-pages分支)。
- User Pages 通过 http(s)://username.github.io 进行访问,而 Projects Pages通过 http(s)://username.github.io/projectname 进行访问。
2.1.2 相关资料
2.2 Git
2.2.1 安装 Git
在windows下安装git比较常用的有两种方式:
2.2.2 配置 Git
一般建议使用Git Bash,所以当安装完Git应该做的第一件事情就是设置用户名称和邮件地址。这样做很重要,因为每一个Git的提交都会使用这些信息,并且它会写入你的每一次提交中,不可更改:
|
|
2.2.3 相关资料
2.3 Git 与 GitHub
2.3.1 Git 与 GitHub 的区别
这里,我们要区分清楚 Git 与 GitHub。
Git是一个版本控制的工具,而GitHub有点类似于远程仓库,用于存放用Git管理的各种公有或私有项目。
2.3.2 与 GitHub 建立联系
为了能够在本地使用 Git 管理 GitHub 上的项目,需要进行一些配置,这里介绍SSH的方法。
2.3.2.1 检查电脑是否已经有SSH keys
|
|
如果列出的文件有public和private钥匙对(例如id_ras.pub和id_rsa),证明已存在SSH keys。
2.3.2.2 如果没有SSH key,则生成新的SSH key
|
|
之后一路回车即可。
2.3.2.3 向ssh-agent添加key。
首先确保ssh-agent可运行:
|
|
然后添加SSH key:
|
|
注意: 此刻如果执行 ssh-add 时显示错误 Could not open a connection to your authentication agent. 那么执行
后重新执行 ssh-add 那条命令即可。
2.3.2.4 在GitHub添加SSH key
首先,拷贝key:
也可以用编辑器打开对应的id_rsa.pub文件,全选复制。
然后,在GitHub右上方点击头像,选择”Settings”,在右边的”Personal settings”侧边栏选择”SSH Keys”。接着粘贴key,点击”Add key”按钮。最后,测试链接:
如果你看到:
The authenticity of host ‘github.com (192.30.252.XXX)’ can’t be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)?
就键入:yes。之后将会看到如下信息:
Hi username! You’ve successfully authenticated, but GitHub does not provide shell access.
2.3.3 相关资料
2.4 Hexo
2.4.1 安装Hexo
安装Hexo相当简单。在安装之前,必须检查电脑中是否已经安装下列应用程序:
如果你的电脑中已经安装上述必备程序,那么恭喜!接下来只需要使用 npm 即可完成 Hexo 的安装。
|
|
注:苦于处于“大局域网”环境下,安装及初始化的过程会较为慢-_-#
2.4.2 使用Hexo建站
安装完后,在你想创建的供以后存储Blog相关的文件夹内(例如 D:\Hexo),点击鼠标右键选择Git bash,输入以下指令:
|
|
该命令会在目标文件夹内建立Blog所需的所有文件。接下来是安装依赖包:
|
|
这样,我们就已经搭建起本地的 Hexo 博客了。可以先执行以下命令,然后在浏览器输入 http://localhost:4000 就可以满怀激动地查看我们的“小家”啦。
|
|
这里顺便普及几个 Hexo 常用的命令,#后面为注释。
hexo g #完整命令为hexo generate,用于生成静态文件
hexo s #完整命令为hexo server,用于启动服务器,主要用来本地预览
hexo d #完整命令为hexo deploy,用于将本地文件发布到github上
hexo n #完整命令为hexo new,用于新建一篇文章
当然,这个眼前所见的博客只是本地的,别人是浏览不了的,你需要结合Git部署到GitHub上,大家才可以正常浏览到。
2.4.3 相关资料
三、部署之道
在上面,我们已经配置好了所需的所有东西,也成功地搭建了一个本地 Hexo 博客。现在,需要使用 GitHub Pages 搭建一个大家都能够访问的 Hexo 博客了。
3.1 使用默认theme
我们继续使用上面的文件夹D:\Hexo,然后编辑该文件夹下的_config.yml。
默认生成的_config.yml:
|
|
修改后的_config.yml:
|
|
为了能够使Hexo部署到GitHub上,还需要安装一个插件:
|
|
然后,执行下列指令即可完成部署:
|
|
现在,就可以通过在浏览器地址栏敲入:username.github.io进行浏览啦!激动吧!!~
3.2 其它主题theme
如果想要使用其它主题,可以使用git clone将别人的主题拷贝到D:\Hexo\themes下,然后将_config.yml中的theme: landscape改为对应的主题名字。
详细步骤可以参考网上其它的指南。
四、写下&发布一篇文章
4.1 创建:
在Git Bash执行命令创建一篇文章
4.2 打开 & 编写
在D:\hexo\source_post中打开Hexo-First.md,打开方式使用记事本或者其他文本编辑工具。
Hexo 中写文章使用的是 Markdown ,这里推荐使用 MarkdownPad
这个工具。 Markdown编写语法参照上面所推荐一个链接,不难
title: Hexo First #可改成中文的,如“好基友”
date: 2016-05-07 01:49:11 #发表日期,一般不改动
categories: blog #文章文类
tags: [文章] #文章标签,多于一项时用这种格式,只有一项时使用tags: blog
这里是正文,用 Markdown 写,你可以选择写一段显示在首页的简介后,加上
<!--more-->
,在<!--more-->
之前的内容会显示在首页,之后的内容会被隐藏,当别人点击Read More或主题进入文章内才能看到。
4.3 生成 & 预览 & 部署
写完文章后,你可以使用
- $ hexo g #生成静态文件
- $ hexo s #在本地预览效果
- $ hexo d #同步到 GitHub,然后使用 http://username.github.io 进行访问
五、优化部署与管理
注:参考部分网友建议
5.1 概述
Hexo部署到 GitHub 上的文件,是.md(你的博文)转化之后的.html(静态网页)。因此,当你重装电脑或者想在不同电脑上修改博客时,就不可能了(除非你自己写html o(^▽^)o )。
其实,Hexo生成的网站文件中有.gitignore文件,因此它的本意也是想我们将Hexo生成的网站文件存放到GitHub上进行管理的(而不是用U盘)。这样,不仅解决了上述的问题,还可以通过git的版本控制追踪你的博文的修改过程,是极赞的。
但是,如果每一个GitHub Pages都需要创建一个额外的仓库来存放Hexo网站文件,感觉会很麻烦(10个项目需要20个仓库(ˉ▽ˉ)…)。
所以,分支就可以派上用场了!!!
简单地说,每个想建立GitHub Pages的仓库,起码有两个分支,一个用来存放Hexo网站的文件,一个用来发布网站。
下面以一个例子详细地讲述下。
5.2 博客搭建流程
- 创建仓库,username.github.io;
- 创建两个分支:master 与 hexo;
- 设置hexo为默认分支(因为我们只需要手动管理这个分支上的Hexo网站文件);
- 使用git clone git@github.com:username/username.github.io.git拷贝仓库;
- username.github.io文件夹下通过Git bash依次执行npm install hexo、hexo init、npm install 和 npm install hexo-deployer-git(此时当前分支应显示为hexo);
- 修改_config.yml中的deploy参数,分支应为master;
- 依次执行git add .、git commit -m “…”、git push origin hexo提交网站相关的文件;
- 执行hexo generate -d生成网站并部署到GitHub上。
这样一来,在GitHub上的username.github.io仓库就有两个分支,一个hexo分支用来存放网站的原始文件,一个master分支用来存放生成的静态网页。完美( •̀ ω •́ )y!
5.3 博客管理流程
5.3.1 日常修改
在本地对博客进行修改(添加新博文、修改样式等等)后,通过下面的流程进行管理:
- 依次执行git add .、git commit -m “…”、git push origin hexo指令将改动推送到GitHub(此时当前分支应为hexo);
- 然后才执行hexo generate -d发布网站到master分支上。
虽然两个过程顺序调转一般不会有问题,不过逻辑上这样的顺序是绝对没问题的(例如突然死机要重装了,悲催….的情况,调转顺序就有问题了)。
5.3.2 本地资料丢失
当重装电脑之后,或者想在其他电脑上修改博客,可以使用下列步骤:
- 使用git clone git@github.com:username/username.github.io.git拷贝仓库(默认分支为hexo);
- 在本地新拷贝的username.github.io文件夹下通过Git bash依次执行下列指令:npm install hexo、npm install、npm install hexo-deployer-git(记得,不需要hexo init这条指令)。
六、结尾
整理下来,好累但值得 (-.-)=3