0x00 背景

一直想搭建一个自己的博客,之前在Aliyun虚拟主机上搭了一个WordPress+MySQL的个人博客。后来维护成本太大,主机和域名都没有续费被回收了。最近再看别人在写,自己也想搞一个试试水。研究了几天,发现Hexo还真不错,所以就选了这个。

目前,博客搭建在coding.net上,使用万网的域名。

Hexo介绍

Hexo是一款基于Node.js的博客框架,可以将Markdown格式的文本渲染为HTML代码。所以,博客基本就是纯静态,维护相对方便。但是缺点也很明显——经常换编写环境使用不便,因为它的所有渲染代码都是在本地存储的。

0x01 选择域名和代码托管服务提供商

域名提供商是负责域名注册的服务机构,简称注册商,主要负责域名向域名管理局申请批准、域名维护更新、域名续费、域名解析等服务支持,选购域名需要找信誉比较好的服务商如卓汇互联,查询域名可以直接进入卓汇互联域名注册页面进行操作,域名种类较多,域名名称可选空间也较大。

主要的域名提供商,国外有Godaddy、NameCheap等;国内的主要就是万网(Aliyun),百度等。选择国外的域名提供商的好处在不用进行国内备案相关的手续,但是就是贵。Godaddy注册的域名首年优惠力度很大,但是续费的时候基本没有什么优惠了,基本100多一年。国内的万网基本首年几块到几十块的都有,续费基本在40以下;但是国内的政策还不明朗,有可能需要繁琐的备案手续。

代码托管服务提供上国外基本就是大家熟知的Github,国内就是coding.net(原Gitcafe)。选择国内的coding.net很简单,就是快。由于Github在国内没有服务器,所以同步代码和访问速度感人。

0x02 下载Hexo

Hexo是基于Node.js编写的,所以首先需要下载Node.js。使用命令

sudo apt-get install nodejs

Node.js默认使用的是国外的源,速度非常感人,所以需要我们切换到国内的源,这里我使用taobao的源。

npm config set registry http://registry.npm.taobao.org/

使用npm来下载Hexo

sudo npm install -g hexo-cli

输入hexo,如果出现下列提示,则说明安装成功了。

Usage: hexo <command>
Commands:
clean Removed generated files and cache.
config Get or set configurations.
deploy Deploy your website.
generate Generate static files.
help Get help on a command.
init Create a new Hexo folder.
list List the information of the site
migrate Migrate your site from other system to Hexo.
new Create a new post.
publish Moves a draft post from _drafts to _posts folder.
render Render files with renderer plugins.
server Start the server.
version Display version information.
Global Options:
--config Specify config file instead of using _config.yml
--cwd Specify the CWD
--debug Display all verbose messages in the terminal
--draft Display draft posts
--safe Disable all plugins and scripts
--silent Hide output on console
For more help, you can use 'hexo help [command]' for the detailed information
or you can check the docs: http://hexo.io/docs/

如果显示缺少模块

0x03 创建Blog

使用命令创建一个博客环境

hexo init "名字"

cd进入这个目录,可以看到相关文件

~ ls
_config.yml db.json node_modules package.json scaffolds source themes

博客的配置文件为_config.yml,配置文件的相关说明https://hexo.io/zh-cn/docs/configuration.html

运行测试环境

hexo server

默认端口是4000,访问4000端口可以看博客的效果

虽然Hexo的默认主题也算好看,但是功能等其他方面可能不尽如人意。好在Hexo提供的很多第三方主题https://hexo.io/themes/。关于主题的安装方法按照作者提供的方法就好了。

0x04 部署到代码托管平台

在代码托管平台注册就不再详细阐述,主要说明如何创建一个项目。

1.Github上创建项目

首先选择New repository,然后在Repositiry Name中填写YourID.github.io,例如我的id是weaponx,则需要在Respository Name中填写weaponx.github.io

2.Coding.net上创建项目

项目名称可以任意填写,一定选择公开不要选成私有了。

3.配置Hexo

修改Hexo的配置文件

deploy:
type: git
repo:
coding: https://git.coding.net/YOURID/YOURRESPOSIROTY.git,master
github: https://github.com/YOURID/YOURRESPOSITORY.github.io.git,master

然后使用命令同步上去即可

hexo deploy -g

0x05 将域名解析到代码托管平台

DNS服务提供商这里选择DNSPod。因为域名是在万网注册的,默认使用万网的DNS,所以需要切换到DNSPod。

在修改为非万网DNS中填写DNSPod提供的dns服务器。然后进入DNSPod管理页面添加网址,并添加CNAME解析。

1.解析到Github

在Github上添加域名解析,首先要在项目中创建一个文件CNAME,文件的内容为域名,以我的域名为例文件内容为

weaponx.site

然后在DNSPod中创建解析,记录类型选择CNAME,记录值选择YOURID.github.io,主机记录输入@。再添加一样的条目,主机记录输入*
在这里解释一下@记录,意思就是空。用我的域名为例,@记录指的是weaponx.site*记录是任意,可以把xxx.weaponx.site解析到我的Github Pages上。

到这,域名就可以正确的解析到Github pages上了。

2.解析到Coding.net

解析到Coding.net上就比较简单,只需要做一个简单的设置即可。

0x06 使用评论插件

因为我们的Hexo博客是纯静态的,所以评论需要依赖与评论服务提供商。主流的服务提供商有Disqus(国外),duoshuo(多说,国内)。因为一些大家知道的原因,Disqus已经访问不了了。其实这也是一种优势,可以过滤掉一些垃圾评论内容(广告),提高评论质量。

多说由于是国内的厂商,速度很快。但是经常大姨妈,而且没有有效的反垃圾措施。所以我暂时使用Disqus作为我的评论插件。

过程中踩过的坑

  • 文章的摘要,在文章摘要上加一行代码
<!-- more -->
  • 多个Tag需要这样表示
tags:
- tag1
- tag2
- tag3

而不是

tags: tag1, tag2, tag3

  • 代码高亮:通常在Markdown语法中代码高亮是使用Tab或者四个空格来表示,但是经过测试Hexo无法识别这种高亮方式,只能使用
```python
import os
def run():
print "Code Highlight test"
if __name__ == "__main__":
run()
```
  • 每次提交会删除CNAME文件,在source文件夹下创建一个CNAME文件就好,404.html同理。