Hexo是一款基于Node.js的静态博客框架,依赖少易于安装使用,可以方便的生成静态网页托管在GitHub和Heroku上,是搭建博客的首选框架。
Hexo同时也是GitHub上的开源项目,参见:hexojs/hexo 如果想要更加全面的了解Hexo,可以到其官网 Hexo 了解更多的细节
本教程是在win10 环境下完成的,其余环境也类似
个人博客:BLOG
基础环境
获取域名(可有可无)
域名相对更容易记忆,也可以让人更快的访问自己的网站,但是其实搭建在github上,网址同样非常的简单(https://yourname.github.io/)。因此域名不是很必要。
申请域名推荐阿里云、腾讯云和华为云,具体使用哪一个看哪个便宜咯
Github创建个人仓库
登录Github账号,没有就使用个人邮箱注册一个就行。登录账号之后新建 New repository
仓库名一定要是用户名.github.io,固定写法不能修改。
Description 可写可不写
安装Git
Git是一个开源的分布式版本控制系统。什么意思?简单来说就是在你写论文或者写代码的时候,一般来说会备份几个版本,第一版、第二版等等。然后你文件夹里就会有很多版本,有人说我不需要几个版本一个就行了,但是万一你某些地方修改错了,改起来非常的麻烦,这个时候如果可以直接还原到上一个版本不就太快落了吗。Git就是帮助我们自动做这些事情的一个tool,可以帮你保存每个版本,让你时刻可以还原到想要还原的地方。
想要完整的了解具体细节可以参考我写的一个教程:Git
接下来进入主题:安装Git,win可以直接从官网下载安装包,安装过程一路点点点就行了。安装完成后,你的右键点击一般出现 Git GUI Here 和 Git Bash here。可以在命令行(cmd/powershell)输入 git --version
,安装成功会出现 版本号。安装失败请自行百度失败原因
安装成功后还需要简单的配置以下Git,在应用程序中找到并打开 Git bash
设置 user.name 和 user.email
1 | git config --global user.name "your.name" |
其中 –global 意味着全局使用一个name和email,name和email自行取就行了,在跟Github通信时,代表通信电脑的一个名字。
SSH 配置
设置完成后,需要设置 ssh ,ssh是一个加密的通信协议,让你的电脑和GitHub可以安全高效的传输信息。
生成ssh密钥,若有则无需生成,查看有无在cmd输入
~/.ssh
如果有就会返回 is a directory,没有就会返回 No such file…
没有就创建SSH key,在 git bash 输入
1
ssh-kengen -t rsa -C "your email"
会提示你输入文件名,一般不需要输入,直接回车,就会生成
id_rsa
和id_rsa.pub
两个文件。其中id_rsa
是私钥id_rsa.pub
是公钥,私钥一般不能随意泄露,而公钥可以随意告诉任何人之后会提示你输入密码,建议无须设置,直接回车。
添加SSH key到Github
打开GitHub网页在个人settings中找到SSH and GPG keys,点击New SSH key
Title随意取,文本框中复制
id_rsa.pub
中的内容测试,在bash中输入
ssh -T git@github.com
,第一次会提示你是否建立选择yes,成功之后会输出以下提示。
安装Node.js
Hexo基于Node.js,Node.js下载地址:Download | Node.js 下载安装包,注意安装Node.js会包含环境变量及npm的安装,安装后,检测Node.js是否安装成功,在命令行中输入 node -v
检测npm是否安装成功,在命令行中输入npm -v
:
到此Hexo的基础环境已经搭建完毕,下面开始正式安装Hexo
安装Hexo
Hexo就是我们的个人博客网站的框架,我个人是将Hexo框架与blog文件是分开。我将Hexo框架搭建在放软件的盘里面,直接在根目录创建了一个文件夹取名hexo。然后进入文件夹,按住shift键,右击鼠标点击命令行。当然直接打开命令行然后cd到具体路径也可以的。
使用 npm命令安装hexo
1 | npm install -g hexo-cli |
这个安装时间较长耐心等待,安装完成后,目录下会生成 node_modules 文件夹,打开文件夹会会有一个 .bin 文件夹,将 .bin文件夹的路径(XXX\node_modules.bin)添加到系统环境变量中去。
如何添加系统环境变量? 在桌面右键点击我的电脑,点属性,之后再点高级系统设置,再点环境变量。可以将路径添加到个人用户中,也可以添加到系统中去,二选一即可。然后双击 Path 新建一个路径,将.bin路径复制进去就行了。
至此hexo框架安装完毕,接下来选择其他的一个合适的路径,用于放置网站的数据。
进入路径,右键打开 git bash,输入,hexo init blog
,blog是文件夹的名字,也可以自己设置,初始化完成后,cd blog
1 | hexo init blog |
至此网站雏形已经完成,可以使用下面三条命令观看:
1 | hexo new test |
这些命令在后面作介绍,完成后,打开浏览器输入地址:
1 | localhost:4000 |
便可看到网站的雏形了,如果连接出现问题,可以自行百度。
下面介绍Hexo常用命令
1 | npm install hexo -g # 安装hexo |
推送网站
上面只是在本地预览,接下来要做的就是就是推送网站,也就是发布网站,让我们的网站可以被更多的人访问。在设置之前,需要解释一个概念,在blog根目录里的_config.yml文件称为站点配置文件,如下图
进入根目录里面的 themes 文件夹下,里面有一个初始主题landscape文件夹,点进去,里面也有个_config.yml文件,这个是主题配置文件
下一步将我们的Hexo与GitHub关联起来,打开站点的配置文件_config.yml,翻到最后修改为:
注意repo需要修改为自己的地址,type/repo/branch后面的冒号要接一个空格键,不能少!不然会出错
1
2
3
4deploy:
type: git
repo: https://github.com/guuhuaa/guuhuaa.github.io
branch: master其实就是给hexo d 这个命令做相应的配置,让hexo知道你要把blog部署在哪个位置,很显然,我们部署在我们GitHub的仓库里。最后安装Git部署插件,输入命令:
1
npm install hexo-deployer-git --save
这时,我们分别输入三条命令:
1
2
3hexo clean
hexo g
hexo d其实第三条的 hexo d 就是部署网站命令,d是deploy的缩写。完成后,打开浏览器,在地址栏输入你的放置个人网站的仓库路径,即 [https://xxxx.github.io]
绑定域名
登录到你购买域名的某某云,找到已购买域名,添加解析
添加解析,一般添加两个记录类型,添加后可以通过 www.xxx.xxx或者xxx.xxx访问你的网站,记录值都是
xxx.github.io
解析设置完成之后,还需要登录到GitHub,进入网站的仓库,点击setting,往下翻一翻就能看到custom domain,输入你的域名,记得保存
第三步,进入本地博客文件夹,进入blog/source目录下,手动创建一个记事本文件,输入你的域名,只需要域名即可,可以不加www,建议不加。如果带有www,那么以后访问的时候必须带有www完整的域名才可以访问。
注意:保存命名为CNAME,保存为所有文件而不是txt文件
完成之后,进入blog目录打开git bash,依次输入:
1
2
3hexo clean
hexo g
hexo d这时候打开浏览器在地址栏输入你的个性化域名将会直接进入你自己搭建的网站
美化网站
更换主题
如果不喜欢自带的主题,可以更换不同的主题:hexo主题到官网去下载一个喜欢的。然后放入 themes 文件夹内,修改站点配置文件:
1 | theme: XXX(your theme) |
不过大多数人包括我自己都是使用的Next主题。下面就以next主题说明以下如何配置主题。
安装 NexT
Hexo 安装主题的方式非常简单,只需要将主题文件拷贝至站点目录的 themes
目录下, 然后修改下配置文件即可。具体到 NexT 来说,安装步骤如下。
下载主题
如果你熟悉 Git,建议你使用 克隆最新版本 的方式,之后的更新可以通过 git pull
来快速更新, 而不用再次下载压缩包替换,使用git pull可以快速的更新主题文件。想了解git可以看看我的blog: git
有两种方式可以下载主题:
克隆,在终端窗口下,定位到 Hexo 站点目录下
1
2$ cd your-hexo-site
$ git clone https://github.com/iissnan/hexo-theme-next themes/next手动下载,前往 NexT 版本 发布页面。选择你所需要的版本,下载 Download 区域下的 Source Code (zip) 到本地。解压所下载的压缩包至站点的 themes 目录下, 并将 解压后的文件夹名称(
hexo-theme-next-0.4.0
)更改为next
。
启用主题
与所有 Hexo 主题启用的模式一样。 当 克隆/下载 完成后,打开 站点配置文件, 找到 theme
字段,并将其值更改为 next
。
1 | theme: next |
验证主题
首先启动 Hexo 本地站点,并开启调试模式(即加上 --debug
),整个命令是 hexo s --debug
。 在服务启动的过程,注意观察命令行输出是否有任何异常信息,如果你碰到问题,这些信息将帮助他人更好的定位错误。 当命令行输出中提示出:
1 | INFO Hexo is running at http://0.0.0.0:4000/. Press Ctrl+C to stop. |
此时即可使用浏览器访问 http://localhost:4000
,检查站点是否正确运行。
当你看到站点的外观与下图所示类似时即说明你已成功安装 NexT 主题。这是 NexT 默认的 Scheme —— Muse
现在,你已经成功安装并启用了 NexT 主题。下一步我们将要更改一些主题的设定,包括个性化以及集成第三方服务。
主题设定
选择 Scheme
Scheme 是 NexT 提供的一种特性,借助于 Scheme,NexT 为你提供多种不同的外观。同时,几乎所有的配置都可以 在 Scheme 之间共用。目前 NexT 支持三种 Scheme,他们是:
- Muse - 默认 Scheme,这是 NexT 最初的版本,黑白主调,大量留白
- Mist - Muse 的紧凑版本,整洁有序的单栏外观
- Pisces - 双栏 Scheme,小家碧玉似的清新
Scheme 的切换通过更改 主题配置文件,搜索 scheme 关键字。 你会看到有三行 scheme 的配置,将你需用启用的 scheme 前面注释 #
去除即可。
1 | #scheme: Muse |
设置语言
编辑 站点配置文件, 将 language
设置成你所需要的语言。建议明确设置你所需要的语言,例如选用简体中文,配置如下:
1 | language: zh-Hans |
目前 NexT 支持的语言如以下表格所示:
语言 | 代码 | 设定示例 |
---|---|---|
English | en |
language: en |
简体中文 | zh-Hans |
language: zh-Hans |
Français | fr-FR |
language: fr-FR |
Português | pt |
language: pt or language: pt-BR |
繁體中文 | zh-hk 或者 zh-tw |
language: zh-hk |
Русский язык | ru |
language: ru |
Deutsch | de |
language: de |
日本語 | ja |
language: ja |
Indonesian | id |
language: id |
Korean | ko |
language: ko |
设置 菜单
菜单配置包括三个部分,第一是菜单项(名称和链接),第二是菜单项的显示文本,第三是菜单项对应的图标。 NexT 使用的是 Font Awesome 提供的图标, Font Awesome 提供了 600+ 的图标,可以满足绝大的多数的场景,同时无须担心在 Retina 屏幕下 图标模糊的问题。
编辑 主题配置文件,修改以下内容:
设定菜单内容,对应的字段是
menu
。菜单内容的设置格式是:
Key: /link/|| icon
其中key
是一个名称,这个名称并不直接显示在页面上/link/
是这个菜单对应的链接,icon
是对应要使用什么图标注意,next下载之后,/ 和||之间有一个空格,需要手动删除,不然网站的菜单栏点开会报错
link
其实对应的是source文件夹下的路径1
2
3
4
5
6
7
8
9menu:
home: /|| home
about: /about/|| user
tags: /tags/|| tags
categories: /categories/|| th
#archives: /archives/|| archive
#schedule: /schedule/|| calendar
#sitemap: /sitemap.xml|| sitemap
#commonweal: /404/|| heartbeat注1:若你的站点运行在子目录中,请将链接前缀的
/
去掉注2:要使用新的菜单栏,需要手动去创建new page
举例:如果要设置tags菜单,就需要创建一个
hexo new page “tags”
,使用这个命令之后,source文件夹会出现一个tags文件夹,tags文件夹内会自动生成一个index.md,需要手动修改一下,如下。设置 categories和archives也是如此
1
2
3
4title: tags
date: 2020-05-08 22:36:50
type: tags
comments: false设置菜单项的显示文本。在第一步中设置的菜单的名称并不直接用于界面上的展示。Hexo 在生成的时候将使用 这个名称查找对应的语言翻译,并提取显示文本。这些翻译文本放置在 NexT 主题目录下的
languages/{language}.yml
({language}
为你所使用的语言)。以简体中文为例,若你需要添加一个菜单项,比如something
。那么就需要修改简体中文对应的翻译文件languages/zh-Hans.yml
,在menu
字段下添加一项:1
2
3
4
5
6
7
8
9menu:
home: 首页
archives: 归档
categories: 分类
tags: 标签
about: 关于
search: 搜索
commonweal: 公益404
something: 有料
设置侧栏
默认情况下,侧栏仅在文章页面(拥有目录列表)时才显示,并放置于右侧位置。 可以通过修改 主题配置文件 中的 sidebar
字段来控制侧栏的行为。侧栏的设置包括两个部分,其一是侧栏的位置, 其二是侧栏显示的时机。
设置侧栏的位置,修改 sidebar.position
的值,支持的选项有:
- left - 靠左放置
- right - 靠右放置
目前仅 Pisces Scheme 支持
position
配置已知侧栏在
use motion: false
的情况下不会展示。
设置头像
编辑 主题配置文件, 修改字段 avatar
, 值设置成头像的链接地址。其中,头像的链接地址可以是:
完整的互联网 URI
1
http://example.com/avatar.png
站点内的地址
将头像放置主题目录下的
source/uploads/
(新建 uploads ,目录若不存在) 配置为:avatar: /uploads/avatar.png
或者 放置在source/images/
目录下 配置为:avatar: /images/avatar.png
头像设置示例
1 | avatar: http://example.com/avatar.png |
阅读次数统计(leancloud)
Next 第三方服务集成设置
next官网有很好的描述:第三方服务集成
腾讯公益404页面
腾讯公益404页面,寻找丢失儿童,让大家一起关注此项公益事业!效果如下 http://www.ixirong.com/404.html
使用方法,新建 404.html 页面,放到主题的 source/404/
目录下,内容如下:
1 | <!DOCTYPE HTML> |
然后修改 主题配置文件,将menu后面的commonweal取消注释并修改:
1 | commonweal: /404/404.html|| heartbeat |