Hexo:独立博客新玩法

Hexo,这个逼格极高的程序猿写作方式,我喜欢。就连 Hexo 的发音都像是黑客哦!如果你跟我一样纠结哪里写博,那就来到 GitHub 吧,让我们一起 hexo!相信很快hexo就会流行起来。

Hexo 出自台湾大学生 @tommy351 之手,是一个基于 Node.js 的静态博客程序,其编译上百篇文字只需要几秒。Hexo 生成的静态网页可以直接放到 GitHub Pages、BAE、SAE 等平台上。先看看 tommy 是如何吐槽 Octopress 的——《Hexo颯爽登場》

搭建过程你或许觉得有那么点小繁琐,但一旦搭建完成,写文章是极简单,极舒服的。

只需要几个简单命令,你就可以完成一切。

hexo n #写文章
hexo g #生成
hexo d #部署 # 可与hexo g合并为 hexo d -g

下面逐步介绍,进入正题。

环境准备

安装Node

Node.js 官网下载相应平台的最新版本,一路安装即可。

安装Git

Git 的客户端很多,去官网下载就行,详细的可以看一些这篇文章的安装教程:《使用 Github Pages 建独立博客》

安装 Sublime(可选)

Sublime Text 在这里仅仅作为一个文本编辑器使用,支持各种编程语言和文件格式,当然也支持 Markdown 语法,实在是个不可多得的练码奇才。

使用 Github

  • 首先注册一个 GitHub 帐号,已有的请忽略
  • 建立与你用户名对应的仓库,仓库名必须为 「your_user_name.github.com」
  • 添加 SSH 公钥到「Account settings -> SSH Keys -> Add SSH Key」

前两步忽略,只说第三步,添加 SSH-Key。
首先设置你的用户名密码:

git config --global user.email "你的邮箱"
git config --global user.name "你的用户名"

生成密钥:

ssh-keygen -t rsa -C "你的邮箱"

#输入文件路径:
H:\hexo\blog>ssh-keygen -t rsa -C "xxxxx@xxxx.com(你的邮箱)"
Generating public/private rsa key pair.
Enter file in which to save the key (//.ssh/id_rsa): H:\git\myssh\ssh
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in H:\git\myssh\ssh.
Your public key has been saved in H:\git\myssh\ssh.pub.
The key fingerprint is:
b0:0c:2e:67:33:ab:c1:50:10:40:0a:ba:c1:80:59:22 xiaowu@aips.me

上面有个 bug,文件路径中的盘符 H 必须大写,否则会报错。上述命令若执行成功,会在 H:\git\myssh 目录下生成两个文件 id_rsaid_rsa.pub,最后两步:

  • 用文本编辑器打开 ssh.pub 文件,拷贝其中的内容,将其添加到 Add SSH Key
  • id_rsaid_rsa.pub 拷贝至 Git 安装目录下的 .ssh 目录,如 H:\PortableGit-1.8.4\.ssh

可以验证一下:

ssh -T git@github.com

若有问题,请重新设置。常见错误请参考:
GitHub Help - Generating SSH Keys
GitHub Help - Error Permission denied (publickey)

安装 Hexo

Node 和 Git 都安装好后,可执行如下命令安装 Hexo:

npm install -g hexo

初始化

执行 init 命令初始化 Hexo到你指定的目录:

hexo init

也可以 cd 到目标目录,执行 hexo init,好啦,至此全部安装工作已经完成。

生成静态页面

cd 到你的 init 目录,执行如下命令,生成静态页面至 hexo\public\ 目录。

hexo generate

【注】命令必须在init目录下执行,否则不成功,但是也不报错。

当你修改文章 Tag 或内容,不能正确重新生成内容,可以删除 hexo\db.json 后重试,还不行就到 public 目录删除对应的文件,重新生成。

本地启动

执行如下命令,启动本地服务,进行文章预览调试。

hexo server

浏览器输入 http://localhost:4000 就可以看到你的 Hexo 博客。

写文章

执行 new 命令,生成指定名称的文章至 hexo\source\_posts\postName.md,还有一种最简单的方式,就是打开 Hexo 本地目录,直接在里面新建 Markdown 文档就行。

hexo new [layout] "postName" #新建文章

其中 layout 是可选参数,默认值为 post。有哪些 layout 呢,请到 scaffolds 目录下查看,这些文件名称就是 layout 名称。当然你可以添加自己的layout,方法就是添加一个文件即可,同时你也可以编辑现有的 layout,比如 post 的 layout 默认是 hexo\scaffolds\post.md

title: {{ title }}
date: {{ date }}
tags:
---

我想添加 categories,以免每次手工输入,只需要修改这个文件添加一行,如下:

title: {{ title }}
date: {{ date }}
categories:
tags:
---

postName 是 md 文件的名字,同时也出现在你文章的 UR L中,postName 如果包含空格,必须用"将其包围,postName 可以为中文。

【注】所有文件:后面都必须有个空格,不然会报错。

看一下刚才生成的文件 hexo\source\_posts\postName.md,内容如下:

title: postName #文章页面上的显示名称,可以任意修改,不会出现在URL中
date: 2014-05-16 15:30:16 #文章生成时间,一般不改,当然也可以任意修改
categories: #文章分类目录,可以为空,注意:后面有个空格
tags: #文章标签,可空,多标签请用格式[tag1,tag2,tag3],注意:后面有个空格
---
这里开始使用markdown格式输入你的正文。

接下来,你就可以用喜爱的编辑器尽情书写你的文章。关于 Markdown 语法,可以参考《Markdown 语法说明》

fancybox

可能有人对这个 Reading 页面中图片的 fancybox 效果感兴趣,只需要在你的文章 *.md 文件的头上添加 photos 项即可,然后一行行添加你要展示的照片:

layout: photo
title: 我的阅历
date: 2085-01-16 07:33:44
tags: [hexo]
photos:
- http://cdn.imzl.com/2013/11/27/reading/photos-0.jpg
- http://cdn.imzl.com/2013/11/27/reading/photos-1.jpg

不想每次都手动添加怎么办?同样的,打开您的 hexo\scaffolds\photo.md

layout: { { layout } }
title: { { title } }
date: { { date } }
tags:
photos:
-
---

然后每次可以执行带 layout 的 new 命令生成照片文章:

hexo new photo "photoPostName" #新建照片文章

description

Markdown 文件头中也可以添加 description,以覆盖全局配置文件中的 description 内容,请参考下文 _config.yml 的介绍。

title: hexo你的博客
date: 2013-11-22 17:11:54
categories: default
tags: [hexo]
description: 你对本页的描述
---

Hexo 默认会处理全部 Markdown 和 Html 文件,如果不想让 Hexo 处理你的文件,可以在文件头中加入 layout: false

文章摘要

在需要显示摘要的地方添加如下代码即可:

以上是摘要
<!--more-->
以下是余下全文

more 以上内容即是文章摘要,在主页显示,more 以下内容点击「> Read More」链接打开全文才显示。

【注】Hexo中所有文件的编码格式均是UTF-8。

主题安装

萝卜白菜各有所爱,玩博客换主题是必不可少的,Hexo 的主题列表 Hexo Themes

我比较喜欢 pacmanmodernistishgoraytaylorism。Pacman 最为优秀,简洁大方小清新,同时移动版本支持的也很好,但作者并没有把很多参数分离出来给出可配置项,我最终选择了 modernist。

安装主题的方法就是一句git命令:

git clone https://github.com/heroicyang/hexo-theme-modernist.git themes/modernist

目录是否是 modernist 无所谓,只要与 _config.yml 配置文件一致即可。

安装完成后,打开 hexo\_config.yml,修改主题为 modernist

theme: modernist

打开 hexo\themes\modernist 目录,编辑主题配置文件 _config.yml

menu: #配置页头显示哪些菜单
# Home: /
Archives: /archives
Reading: /reading
About: /about
# Guestbook: /about

excerpt_link: Read More #摘要链接文字
archive_yearly: false #按年存档

widgets: #配置页脚显示哪些小挂件
- category
# - tag
- tagcloud
- recent_posts
# - blogroll

blogrolls: #友情链接
- bruce sha's duapp wordpress: http://ibruce.duapp.com
- bruce sha's javaeye: http://buru.iteye.com
- bruce sha's oschina blog: http://my.oschina.net/buru
- bruce sha's baidu space: http://hi.baidu.com/iburu

fancybox: true #是否开启fancybox效果

duoshuo_shortname: buru #多说账号

google_analytics:
rss:

更新主题

cd themes/modernist
git pull

评论框

静态博客要使用第三方评论系统,Hexo 默认集成的是 Disqus,但由于众所周知的原因,国内建议使用多说。

直接用你的微博/豆瓣/人人/百度/开心网帐号登录多说,做一下基本设置。如果使用 modernist 主题,在 modernist_config.yml 中配置 duoshuo_shortname 为多说的基本设置中的 shortname 即可。你也可以在多说后台自定义一下多说评论框的格式,比如评论框的位置。对于 CSS 设置,可以参考这里。我是在 HeroicYang 的基础上修改的。

如果你使用的是其他第三方评论系统,将通用代码粘贴到 hexo/themes/modernist/layout/_partial/comment.ejs 里面,如下:

<% if (config.disqus_shortname && page.comments){ %>

<section id="comment">#你的通用代码
<% } %>

自定义页面

执行 new page 命令

hexo new page "about"

hexo\source\ 下会生成 about 目录,里面有个 index.md,直接编辑就可以了,然后在主题的 _config.yml 中将其配置显示出来。
上述步骤,也可以手工生成,在 hexo\source\ 下手工新建 about.mdindex.md 也是完全一样的。

因为 Markdown 对 table 支持不好,我是在 about 中直接建立 index.html 在里面书写 Html 页面内容,Hexo 会帮你加上头和尾。

404 页面

GitHub Pages 自定义 404 页面 非常容易,直接在根目录下创建自己的 404.html 就可以。但是自定义 404 页面仅对绑定顶级域名的项目才起作用,GitHub 默认分配的二级域名是不起作用的,使用 hexo server 在本机调试也是不起作用的。

另外,404 页面可以做更多有意义的事,来做个 404 公益项目吧。目前有如下几个公益 404 接入地址,我选择了腾讯的。404 页面,每个人可以做的更多。

图床

考虑到博客的速度,同时也为了便于博客的迁移,图床是必须的。我强烈推荐 七牛云存储,访问速度极快,支持日志、防盗链和水印。

免费用户有每月 10GB 流量 + 总空间 10GB + PUT/DELETE 10 万次请求 + GET 100 万次请求,这对个人博客来说足够。七牛没有目录的概念,但是文件名可以包含 /,比如 2013/11/27/reading/photos-0.jpg,参考这里 关于 key-value 存储系统

如果你对七牛 web 版的文件管理界面不满意,可以用官方的 七牛云存储工具

申请域名(可选)

GitHubPages 默认为每个用户分配了一个二级域名 your_user_name.github.comyour_user_name.github.io具体可以看这里

如果你对上述域名不满意,可以自己去申请一个自己的域名,然后绑定到 GitHub Pages。绑定方法很简单,在 repo 根目录下建立一个 CNAME 文件,里面写上域名即可。

命令

常用命令:

hexo new "postName" #新建文章
hexo new page "pageName" #新建页面
hexo generate #生成静态页面至public目录
hexo server #开启预览访问端口(默认端口4000,'ctrl + c'关闭server)
hexo deploy #将.deploy目录部署到GitHub

常用复合命令:

hexo deploy -g
hexo server -g

简写:

hexo n == hexo new
hexo g == hexo generate
hexo s == hexo server
hexo d == hexo deploy

至此,基本操作介绍完毕,快去写文字吧。