0%

如何用 Hexo+GitHub 建个人博客

编舟记.jpg

为什么要建站

在各大博客平台发文的时候,因为多少会带有社交属性,总有一种莫名的羞耻感。于是每次在博客平台注册完一个账号,发上一两篇就放弃了。个人对博客的期许,是对自己经历的总结,是关于生活的分享,而不是一个社交平台,是一个自留地。所以,建一个属于自己的个人网站一直都是一个小小的梦想。可以自己挑选排版风格,做一个自己的小窝,发文的时候会有独立的快感。而且有了自己的博客之后,可能也能敦促自己写多一点文吧(笑)。因为自己懒,网站就算建起来了也可能很久不会维护吧。所以个人对建站的需求有以下三个:

  • 写文,放 code,放图
  • 排版符合个人审美
  • 能省点时间

昨天终于下定决心来摸索一下,发现目前有两种建站模式符合个人需求:

  • WordPress
  • Hexo+GitHub

个人选择了 Hexo+GitHub,不难上手,而且还能省钱:)
本文主要针对 Mac 用户,Windows 用户或许能参考一下。

买域名

选择顶级域名

.cn 域名要身份审核,而且还有各种笑谈,在此不表了,自然是不会买的。因为 .com 域名基本上都被注册完了,个人心水的顶级域名:

  • .io(会比较贵)
  • .me(一看就知道是个人网站)
  • .moe(二次元专用)

.moe 域名是去年才上线的,注册空间很大。不过,缺点是在一些浏览器里可能不被解析。

选择注册商

如果不选择 cn 域名的话,去 GoDaddy 买。一般价格都是20刀左右,赶上打折有时能两三刀买到。
如果非要选择 cn 域名,投靠马云爸爸的怀抱吧。

用 Hexo+GitHub 建站

个人使用的 Hexo 版本是 3.2.2,不同版本的配置可能会有所不同,但关键的步骤流程基本上是一致的。
在此,先简单说一下 Hexo+GitHub 是如何建站的:

  • Hexo 作为模板在本地生成静态页面
  • 通过 Git 把本地静态页面提交到 GitHub 的仓库页面上(此时个人博客已经建好)
  • 如果想用自己的域名,将个人域名与 GitHub 仓库页面绑定

配置环境

安装 Homebrew

Homebrew 几乎能解决所有的套件依赖问题,在此也不例外。而且 Homebrew 用起来方便快捷,工作开发经常会用到,推荐安装。在 Terminal 中输入命令行安装 Homebrew:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安装 Node

Hexo 基于 Node.js,不装不行。输入以下命令行安装 Node.js:
brew install node

安装 Git

作用是把本地的 Hexo 内容提交到 GitHub。

  • 安装了 Xcode 就自带 Git,不必特地安装。
  • 如果没有安装 Xcode,用 Homebrew 安装
    brew install git

申请 GitHub 账户

GitHub 在此作为博客的远程库,与本地 Hexo 连接,连接方法见后文。没有 GitHub 账户的:这是世界上最大的同性交往平台,你真的不申请一个吗?

安装 Hexo

sudo npm install -g hexo

初始化

在电脑用户名目录下新建文件夹,比如 blog。然后
cd blog
hexo init
ok,环境配置部分已经结束啦。

本地静态页面

生成静态页面

在blog目录下输入命令行
hexo generate

本地启动

进行文章预览
hexo server
这个时候,终端会给一个地址,一般来说是 http://localhost:4000 ,复制进浏览器。
到这一步,浏览器页面上就有 Hexo 了。

配置 GitHub

新建 Repository。Repository Name 必须是 github_name.github.io,因为以后连接的时候会匹配。

将本地 Hexo 连接到 GitHub

环境配置好了,本地也生成静态页面了,GitHub 远程库也有了。那么接下来就要把静态页面和 GitHub 远程库连接起来。
在 blog 目录下找到 _config.yml 文件。用 Sublime Text 编辑,或者在终端输入命令行
vim _config.yml
在文件的最底部,修改成:

1
2
3
4
deploy:
type: git
repository: https://github.com/github_name/github_name.github.io.git
branch: master

然后执行命令
npm install hexo-deployer-git --save
hexo deploy
部署的过程中会提示输入 GitHub 账号密码,照做即可。当然也可以选择 SSH 的方式。
部署完毕后,在浏览器里输入 http://yourname.github.io/,网站建成!

使用独立域名

现在,我们手头上有了:独立域名,在 GitHub 上建好的个人网站。接下来就要把域名解析到个人网站。

更换域名DNS服务器

在域名运营商上修改

DNSpod 解析的稳定性和速度比较好,可以替换域名运营商自带的解析。以 GoDaddy 为例,把域名服务器从默认改成其它,填入 DNSpod 的
f1g1ns1.dnspod.net
f1g1ns2.dnspod.net

在 DNSpod 上添加域名解析

注册什么的就不说了,说关键步骤。
添加记录

  • 类型 CNAME,主机类型 @,填入 github_name.github.io
  • 类型 CNAME,主机类型 www,填入 github_name.github.io

在 GitHub 上绑定域名

/source文件夹中新建一个文件,命名为CNAME,内容填入域名(比如katsura.me。然后上传部署
hexo g
hexo d
好了!撒花!现在用买域名的钱,就建好了自己的个人网站:)

平时怎么用

常用命令

1
2
3
4
5
6
7
hexo new "postName" #新建文章
hexo new page "pageName" #新建页面
hexo generate #生成静态页面至public目录
hexo server #开启预览访问端口(默认端口4000,'ctrl + c'关闭server)
hexo deploy #将.deploy目录部署到GitHub
hexo help #查看帮助
hexo version #查看Hexo的版本

关于主题

Next 是个人非常喜欢的主题,现在的个人网站使用的就是 Next.Muse 主题。关于主题的配置,在作者的页面上有详细的教程:Next | Elegent Theme for Hexo
个人推荐设置几个第三方服务:

  • 评论系统(Disqus 好看但是被墙,心痛)
  • 阅读统计
  • 毫秒级站内搜索 Algolia Search

关于编辑器

本人主要使用 MWeb 编辑。MWeb 的外部模式很好用,把/blog目录拖进去就能编辑文章的 markdown 文档了。

关于图床

本地图床

在 MWeb 使用外部模式导入 /source 文件夹,点编辑,图片保存位置选择绝对位置,文件夹名称输入image,没有这个文件夹的话新建一个。
写文的时候直接把图片拖入 MWeb 即可。

网络图床

MWeb 自带上传到图床的功能,个人使用七牛。配置步骤:

  • 在七牛注册一个账号并新建储存空间
  • 在个人页面找到 Access Key 和 Secret Key
  • 在储存空间里找到外链链接
  • 在 MWeb 中输入配置

写文的时候:

  • 在 Markdown 文档中插入图片
  • MWeb 上传到图床
  • 获取图片的远程链接
  • 把本地路径替换成远程链接

关于音乐

网易云音乐支持生成外链。在网页找到歌曲后,点击生成外链,复制代码到 markdown 文档中即可。

关于引用

Block Quote 这里讲得很清楚。模板是:

1
2
3
{% blockquote [author[, source]] [link] [source_link_title] %}
content
{% endblockquote %}

关于阅读全文

在文档中添加
<!--more-->
文章后面的内容就不会在首页显示。

写文流程

添加文章自动打开编辑器

每次新建文章后都要到到目录里找,有点麻烦。有一个改进的方法,以下是 Mac/Hexo 3+ 的版本。具体见 Hexo 添加文章时自动打开编辑器

  • 在博客根目录下新建 /scripts 目录,创建一个 JavaScript 文件(任意命名)
  • 在文件中写入:
1
2
3
4
var exec = require('child_process').exec;
hexo.on('new', function(data){
exec('open -a "markdown编辑器绝对路径.app" ' + data.path);
});

编辑器绝对路径是 /Applications/xxx.app
Problem solved! 写文流程流畅了不少。

改进的流程

  1. 在终端进入 /blog 目录,输入 hexo new "new post"
  2. markdown 文档编辑
  3. 上传图片
  4. 输入以下三个命令部署
1
2
3
hexo clean
hexo g
hexo d

Reference

潘柏信的博客
Next | Elegent Theme for Hexo
Doublemine