Hexo博客搭建

一、前言

现有的博客产品已经非常多了,比如:博客园、CSDN、简书等等,在这些平台都可以发布自己的博客内容,为何还需要自己搭建博客?我个人感觉是这些平台后台编写markdown会很费劲,其次内容是在其他的平台上不可控,然后可能这些界面的风格不是太喜欢。所以作为一名搬砖的码农,还是走点技术流的路线吧。
你看到的本博客就是使用hexo框架搭建的,其实目前有很多人使用这个搭建个人博客或者团队的技术博客。比如阿里的中间件博客、一些技术博客(nlp内容居多)就是使用hexo搭建的。
Hexo官网:https://hexo.io/zh-cn/

hexo介绍

hexo特性
安装hexo只需要执行以下命令即可(如果没安装npm可以自行百度安装):

1
npm install hexo-cli -g

二、使用hexo创建博客

经过上述步骤我们已经安装好了hexo了,然后我们创建一个文件夹blog,让后执行命令

1
2
3
4
cd blog
hexo init
npm install
hexo server

在浏览器中输入(http://localhost:4000/)就可以看到以下的界面
hexo_demo

三、更换hexo主题

hexo默认的主题是landspace,我们选择next主题(github)官网来进行主题更换示例,该主题也是github上人气最高的主题之一,本博客选择的就是该主题。在_config.yml中修改theme: next,然后重启hexo服务,就可以看到如下画面:
next_demo
在项目中有两个_config.yml,一个是主题的在文件夹themes/next下,另外一个在博客的根目录下
在博客的_config.yml中配置如下:

1
2
3
4
5
6
7
8
# Site
title: 马野的博客
subtitle:
description:
keywords:
author: 马野
language: zh-Hans
timezone:

在主题_config.yml中对配置如下修改:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
menu:
home: /
about: /about
tags: /tags
categories: /categories
archives: /archives

scheme: Mist

auto_excerpt:
enable: true
length: 150

mathjax:
enable: true
per_page: false
cdn: //cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML

然后执行

1
2
hexo new page "tags"
hexo new page "categories"

然后在tagsindex.md中添加type: "tags",在categories同理,则可以看到现在的界面
next_demo_my
新建一篇文章运行指令hexo new “your tittle”,然后在source/_post/目录中看到自己新建的文章,格式是md格式的,现在我们可以使用markdown语法来编写我们的博客。

四、关于公式和markdown的图床如何解决

在上述的主题配置中已经把mathjax设置生效了,如果还不能生效则尝试安装npm install hexo-math
关于图床之前网上很多都是说使用七牛云做为图床,个人感觉比较麻烦而且不易管理。其实可以直接把图和博客一起发布到GitHub-pages,方便而且比较好管理。在source中建立文件夹imgs,然后将图片放到文件夹中,比如放入的图片为test.png,则在需要引入的markdown中这样引入![test_png](/imgs/test.png)即可。然后刷新就可以看到图了,后面即使部署到github-pages也是可以生效的。

五、将博客部署到github-pages

GitHub Pages 是通过我们网站托管和发布的公开网页。
你可以通过 Automatic Page Generator 在线创建和发布GitHub Pages。如果你更喜欢本地操作,你可以使用Mac或者Windows平台的GitHub App,或者使用命令行。

5.1、git链接github

5.1.1、生成ssh key

手先需要本地安装git,然后需要与github链接需要生成ssh key,生成方式如下,:

1
2
cd ~/.ssh
ssh-keygen -t rsa -C "yours@gmail.com" #你的github账号

注意:

  • 不要一路回车,分别在第一个对话即需要输入的时候,输入文件名(如:id_rsa_one),这样会生成对应的文件名的公钥和私钥(如:id_rsa_oneid_rsa_one.pub)
  • 如果执行的路径不在~/.ssh路径中执行的话,需要把文件拷贝到期目录下

5.1.2、添加公钥到github

然后登陆github,点击自己头像,点击setting,如下:
github_setting_01
然后在点击SSH and GPG Keys,如下:
github_setting_02
然后点击new ssh key将公钥(id_rsa_one.pub)中的内容填到其中即可,就会出现如下:
github_ssh_key_01

5.1.3、添加私钥

打开ssh-agent

  • 如果你是github官方的bash

    1
    ssh-agent -s
  • 如果你是其它,比如msysgit:

    1
    eval $(ssh-agent -s)

添加私钥

1
ssh-add ~/.ssh/id_rsa_one

这个时候你的本地的git就可以连接上github啦。

5.2、创建github-pages工程

需要让博客能够在公网访问需要在你的GitHub账号中新建一个github-pagesRepositories。点击自身头像并点击your profile然后在点击Repositories后点击new 就会出现以下界面:
github_pages_01
我自己的用户名为Mayexia,也就是红色框框的前面一部分,所有后面就应该填写Mayexia.github.io(注意:一定要同自己的用户名一致)

5.3、发布博客并管理源码

在博客的源_config.yml中修改deploy配置如下:

1
2
3
4
deploy:
type: git
repo: git@github.com:yours/yours.github.io.git #修改成自己的repo的地址
branch: master

然后在执行如下命令:

1
2
3
npm install hexo-deployer-git --save #先安装hexo部署插件
hexo clean #清楚缓存
hexo g -d #生成并部署

然后在浏览器中输入yours.github.io(替换成自己的),就可以看到你的博客就搭建完成啦。
博客虽然发布了,我们可以访问到了,但是上传到github-pageshexo渲染后的静态的web文件,我们的写博客的源码还是需要备份和管理的。既然我们已经连到了github,我们可以使用github来对我们的博客的源码进行版本管理和备份,这样写完一篇博文后立马可以发布到github-pages同时也可以将源码上传到github进行版本管理。

六、next主题配置

因为网上有很多很详细很全的配置教程,我就不在这里讲述如何配置主题了,以下两个博文写的很详细,可以按照自己的喜好进行配置。

七、Hexo常用命令

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的版本

八、关于markdown编辑器

网上也有很多markdown编辑器,其实我个人觉得使用hexo编写博客好处就是可以随便找一个编辑器,然后在本地将博客服务启动起来,随时修改就可以看得到效果,不用担心线下和线上的markdown语法不兼容的问题,而且插件比较多可以满足个性化的定制。编辑器的话我个人倾向于使用atom编辑器来撰写博文然后发布。
markdown的语法学习链接:

九、其他

使用next主题的时候发现markdown的表格时候需要与文字中间空一行才会生效。
我看到网上有相关的话题说使用GitHub搭建博客是不道德的事情,个人觉得这不是什么不道德的事情,毕竟GitHub官方也出了个gitbook可以让大家编写电子书籍发布到gitbook上,或许还是支持这么干的呢(个人猜想啦),希望这篇博文能够帮助到大家搭建一个属于自己的博客,享受分享知识的乐趣。