Hexo+GitHub Pages搭建博客(For Mac)
搜索问题时,搜索引擎经常将我带到一些个人博客中,网络空间存在许多有价值的个人博客,它们既记录了个人成长,也分享了自己的知识,另我心向往之。于是我就根据网上的教程,断断续续折腾了一周,终于搭建了自己的第一个博客。本篇文章将讲述Mac下使用Hexo + GitHub Pages
搭建博客的详细过程。
安装依赖
Hexo是一个简单的、轻量的、基于Node.js的静态博客框架,它能够将你使用Markdown写的文章转换成静态文件,并赋予它一个漂亮的主题,其编译上百篇文字只需要几秒。GitHub Pages可以被认为是用户编写的、托管在GitHub上的静态网页。所以安装Hexo之前,我们要先安装Node.js和Git。Hexo官网有对Hexo安装及使用的详细介绍,但是本文只参考了环境依赖的安装方法,其它部分没有参考。
Xcode
Hexo官网提示Mac用户编译的时候可能会遇到一些问题,需要先安装Xcode。Xcode的安装很简单,只需要从App Store安装即可。因为我安装的最新的8.2.1,该版本自带了终端工具,所以不用像Hexo官网描述的那样单独安装终端工具。
Node.js安装
Node.js用来生成静态页面,Hexo官网提供了4种安装方法,任选其一安装即可。
Git安装
用来将本地Hexo内容提交到GitHub上,Xcode自带Git,所以不用单独安装。如果想要单独安装的话可以参考Hexo官网提供的方法。
安装Hexo
当Node.js和Git都安装好后就可以正式安装Hexo了,使用npm安装Hexo:
Hexo官网提供的是npm install -g hexo-cli
,据说这个方法有坑,我没有尝试。另外使用sudo
避免因为权限问题出错。-g或-global表示全局安装模块,如果没有这个参数,会安装在当前目录的node_modules子目录下。
初始化
安装完Hexo之后,终端cd到一个你选定的目录,执行下列命令,Hexo将会在选定的文件夹中新建所需要的文件。
<folder>
是你建立的文件夹名称,npm install
表示安装当前目录package.json
文件中配置的dependencies
模块。然后通过hexo s
可以启动一个web server,在本地查看生成的静态站点:
此时,浏览器中打开网址http://localhost:4000
,就能看到效果,但是Hexo自带的landscape theme真的不咋好看。
更新Hexo
官方发布了新版本后,可以在Hexo建立的博客目录内运行:
关联GitHub
本地设置好后,接下来开始关联GitHub。
检查本地是否存在ssh key
执行如下命令,检查ssh key是否存在,如果有文件id_rsa.pub
或id_dsa.pub
(尽量不要修改本地的ssh key,我重新生成后,无法访问公司的git,需要将新的ssh key添加到公司git上),则直接进入第3步将ssh key添加到GitHub中
,否则进入下一步生成ssh key。
生成新的ssh key
执行如下命令生成一对密钥~/.ssh/id_rsa.pub
和~/.ssh/id_rsa
,注意将your_email@example.com
换成你自己注册GitHub的邮箱地址(-C ""
仅仅是注释,没有实际作用,可以没有)。
将ssh key添加到GitHub中
打开~/.ssh/id_rsa.pub
文件,里面的信息即为ssh key,将这些信息复制到GitHub中:进入GitHub > Settings > SSH keys > add SSH key。Title里任意添加一个标题,将复制的内容粘贴到Key里,点击下方的Add key
绿色按钮即可。
测试
可以使用下面的命令,查看设置是否成功,git@github.com
的部分不要修改
设置用户信息
现在已经可以通过ssh链接到GitHub了,还有一些个人信息需要完善。GitHub会根据用户的名字和邮箱来记录提交,GitHub也是用这些信息来做权限的处理,输入下面的代码进行个人信息的设置。
创建仓库
登陆GitHub > 点击+
> 新建仓库,仓库名为用户名.github.io
固定写法,其中用户名必须为你的GitHub用户名,如果你想要更改,必须两个同时更改,否则会出错。
然后打开博客目录下的_config.yml
修改底部信息,Hexo3.1.1版本后type:
值为git
,另外配置文件中所有冒号后都要加一个空格,否则会报错。
文章发布及部署
执行以下命令将Hexo文件部署到GitHub:
执行hexo d
命令时,会报错:无法连接git。Hexo3.0之后的版本需要单独安装发布器插件,检查博客目录下的node_modules
中有没有hexo-deployer-git文件夹,若没有,执行以下命令安装:
添加--save
参数安装的模块的名字及其版本信息会出现在package.json
的dependencies
选项中。
再次执行hexo g
和hexo d
命令,在浏览器中打开网址http://用户名.github.io
能够看到和打开http://localhost:4000
时一样的页面。
写文章时,终端cd到博客目录下,执行如下命令新建文章:
其中postname
为文章的文件名,该文件会建在/博客文件夹/source/_posts
下,然后你就可以对该文件使用你喜欢的方法进行编辑了,我使用Sublime Text
编辑Markdown文档。文章编辑完成后,终端cd到博客目录,执行部署命令hexo g
和hexo d
,你就可以看到自己写的文章了。
更换主题
Hexo自带的landscape主题不好看,我们可以自己选择使用什么主题。知乎上列出了许多不错的主题,可以随意从中选择一个自己喜欢的主题,然后按照介绍进行更换。我自己选择的是maupassant。
主题安装
先清理一下生成文件,再clone maupassant
主题:
然后编辑博客主目录下的_config.yml
文件,将theme: landscape
修改为theme: maupassant
。重新生成站点静态文件之前,我们还需要安装下面两个工具,否则hexo生成出来的静态文件也是不可用的:
注:若npm install hexo-renderer-sass --save
安装时报错,可能是国内网络的原因,请尝试使用代理或者切换到淘宝NPM镜像。如果使用淘宝NPM镜像,首先需要安装cnpm:
然后就可以使用cnpm
命令所需要的模块了。hexo g
和hexo d
(如果之前没有hexo clean
的话,这里需要先执行这个命令)之后你就可以看到使用新主题生成的静态页面了。hexo g
会创建public目录,并将站点的静态文件生成在这个目录下面,我们也可以将public目录push到用户名.github.io
仓库中(和hexo d
的功能一样),然后通过公网访问。
功能配置
具体的功能配置可以查看maupassant的中文文档。我们只在这里说一下目前我用到的配置:文章摘要、文章目录、语法高亮、数学公式等功能的设置是在maupassant
目录下的_config.yml
中;语言的设置是在博客主目录下的_config.yml
中的language: zh-CN
,这个文件中的配置都是站点全局范畴的。
About页面
在maupassant主题的menu中默认还包含了about菜单项,但在生成的站点静态页面中点击about菜单项,将返回404。如何给站点添加about页面呢?
在博客主目录下的source文件夹下创建about目录,进入about目录,创建index.md
文件,内容诸如:
这样hexo g
和hexo s
后,你就可以在本地访问about页面了。
重建
maupassant主题有时候会出现格式混乱,右边内容跑到下面去。目前还没找到原因,只好重建整个博客,幸好初期文章不多。首先将source/_posts目录下的博文拷贝出来,然后卸载所有非全局的模块,最后删除博客主目录,重新按照本文的方法搭建一次,最后将以前的博文拷贝到source/_posts目录下。
参考:
- https://www.haomwei.com/technology/how-to-install-hexo-on-mac.html
- http://tonybai.com/2016/12/18/build-a-blog-website-for-my-daughter/
- http://jeasonstudio.github.io/2016/05/26/Mac%E4%B8%8A%E6%90%AD%E5%BB%BA%E5%9F%BA%E4%BA%8EGitHub-Page%E7%9A%84Hexo%E5%8D%9A%E5%AE%A2/
- https://poplarhu.coding.me/2016/12/15/GithubPagesHexo/
- http://ibruce.info/2013/11/22/hexo-your-blog/
- http://www.jianshu.com/p/44d70ad1a8e9
- http://www.yfshare.vip/categories/Hexo/