基于hexo+github搭建一个独立博客

时间:2022-03-10 11:58:26

一直听说用hexo搭建一个拥有自己域名的博客是很酷炫的事情~,在这十一花上半个小时整个hexo博客岂不美哉。

使用Hexo吸引我的是,其简单优雅, 而且风格多变, 适合程序员搭建个人博客,而且支持多平台的搭建,再加上有些node,git基础,分分钟创建出一个高大上的博客。废话少说,开始吧。

准备工作

1.node:用来生成静态页面的 到Node.js官网下载相应平台的最新版本,一路安装即可。

2.git: 把本地的hexo内容提交到github上去.没有安装的可以看此教程

3.github:用来做博客的远程创库、域名、服务器。(~不多说了)

然后你还要知道一点点linux命令,域名解析相关知识(以上条件你都达到了,那么恭喜你30分钟搭建倒计时开始~)

安装Hexo

(本人是Mac系统,其他系统的朋友这部分可以看官网教程

当Node.js和Git都安装好后就可以正式安装Hexo了,终端执行如下命令:

$ sudo npm install -g hexo

输入管理员密码即开始安装

Hexo官网上的安装命令是$ npm install -g hexo-cli,安装时不要忘记前面加上sudo,否则会因为权限问题报错。

注意坑一

初始化

终端cd到一个你选定的目录(比如创建一个blog文件,$cd blog),执行hexo init命令:

$ hexo init

在blog目录下,执行如下命令,安装npm:

$ npm install

执行如下命令,开启hexo服务器:

$ hexo s

此时,浏览器中打开网址http://localhost:4000,能看到如下页面:

基于hexo+github搭建一个独立博客

本地设置好后,接下来开始关联Github。

1.创建仓库

登录你的Github帐号,新建仓库,名为用户名.github.io固定写法。

基于hexo+github搭建一个独立博客

本地的blog文件夹下内容为:

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

终端cd到blog文件夹下,vim打开_config.yml,命令如下:

$ vim _config.yml

打开后往下滑到最后,修改成下边的样子:

deploy:
type: git
repository: https://github.com/MuYunyun/MuYunyun.github.io.git
branch: master

你需要将repository后MuYunyun换成你自己的用户名  

注意坑二:在配置所有的_config.yml文件时(包括theme中的),在所有的冒号:后边都要加一个空格,否则执行hexo命令会报错,切记 切记

注意坑二

blog文件夹目录下执行生成静态页面命令:

$ hexo generate        或者:hexo g
此时若出现如下报错:
ERROR Local hexo not found in ~/blog
ERROR Try runing: 'npm install hexo --save'
则执行命令:
npm install hexo --save
若无报错,自行忽略此步骤。

再执行配置命令:

$ hexo deploy            或者:hexo d

注意坑三:若执行命令hexo deploy仍然报错:无法连接git或找不到git,则执行如下命令来安装hexo-deployer-git

$ npm install hexo-deployer-git --save

若你未关联Github,则执行hexo deploy命令时终端会提示你输入Github的用户名和密码,即

Username for 'https://github.com':
Password for 'https://github.com':

hexo deploy命令执行成功后,浏览器中打开网址http://MuYunyun.github.io(将MuYunyun换成你的用户名)能看到和打开http://localhost:4000时一样的页面。 

基于hexo+github搭建一个独立博客

为避免每次输入Github用户名和密码的麻烦,可参照第二节方法

2.添加ssh key到Github

1.1.检查SSH keys是否存在Github

执行如下命令,检查SSH keys是否存在。如果有文件id_rsa.pubid_dsa.pub,则直接进入步骤1.3将SSH key添加到Github中,否则进入下一步生成SSH key。

$ ls -al ~/.ssh

1.2.生成新的ssh key

执行如下命令生成public/private rsa key pair,注意将your_email@example.com换成你自己注册Github的邮箱地址。

$ ssh-keygen -t rsa -C "your_email@example.com"

默认会在相应路径下(~/.ssh/id_rsa.pub)生成id_rsaid_rsa.pub两个文件。

1.3.将ssh key添加到Github中

Find前往文件夹~/.ssh/id_rsa.pub打开id_rsa.pub文件,里面的信息即为SSH key,将这些信息复制到Github的Add SSH key页面即可。

进入Github --> Settings --> SSH keys --> add SSH key:

Title里任意添一个标题,将复制的内容粘贴到Key里,点击下方Add key绿色按钮即可。

3.发布文章

终端cd到blog文件夹下,执行如下命令新建文章:

hexo new "postName"

名为postName.md的文件会建在目录/blog/source/_posts下。

文章编辑完成后,终端cd到blog文件夹下,执行如下命令来发布:

hexo generate             //生成静态页面
hexo deploy            //将文章部署到Github

安装theme

你可以到Hexo官网主题页去搜寻自己喜欢的theme。这里以hexo-theme-next为例

终端cd到 blog 目录下执行如下命令:

$ git clone https://github.com/iissnan/hexo-theme-next themes/next

blog目录下_config.ymltheme的名称landscape修改为next

终端cd到blog目录下执行如下命令(每次部署文章的步骤):

$ hexo clean           //清除缓存文件 (db.json) 和已生成的静态文件 (public)
$ hexo g             //生成缓存和静态文件
$ hexo d             //重新部署到服务器

至于更改theme内容,比如名称,描述,头像等去修改blog/_config.yml文件和blog/themes/next/_config.yml文件中对应的属性名称即可,不要忘记冒号:后加空格。NexT 使用文档里有极详细的介绍。

绑定个人域名

首先假设你有一个域名并且是可用状态。修改你域名的DNS地址为 f1g1ns1.dnspod.netf1g1ns2.dnspod.net

基于hexo+github搭建一个独立博客

现在使用的域名是Github提供的二级域名,也可以绑定为自己的个性域名。购买域名,我是在万网买的,可直接在其网站做域名解析。

1.Github端

/blog/themes/landscape/source目录下新建文件名为:CNAME文件,注意没有后缀名!直接将自己的域名如:muyunyun.cn写入。

终端cd到blog目录下执行如下命令重新部署:

$ hexo clean
$ hexo g
$ hexo d
网上许多都是说在Github上直接新建CNAME文件,如果这样的话,在你下一次执行hexo d部署命令后CNAME文件就消失了,因为本地没有此文件嘛。

注意坑四

2.域名解析

如果将域名指向一个域名,实现与被指向域名相同的访问效果,需要增加CNAME记录。登录万网,在你购买的域名后边点击:解析 --> 添加解析

记录类型:CNAME

主机记录:将域名解析为example.com(不带www),填写@或者不填写

记录值:MuYunyun.github.io. (不要忘记最后的.MuYunyun改为你自己的用户名),点击保存即可,如下图:

基于hexo+github搭建一个独立博客

ps:万网DNS地址更换貌似需要一段时间才能生效,如果不能访问请晚点或者隔天再访问域名,如果还是不行可能就是出问题了。

铛铛铛,点击MuYunyun.github.io和访问http://muyunyun.cn/访问效果一致

 基于hexo+github搭建一个独立博客

总结和说明

github pages虽然免费,但毕竟是国外的服务器,国内访问可以稍微缓慢,如果可以的话,可去买一个支持Node.js的国内云空间即可。可以参考我之前写的

1元搭建自己的云服务器~~搭建好这个博客,满满的成就感。祝大家节日快乐~~

参考链接:Mac上搭建基于GitHub的Hexo博客 (这篇博文写得已经大部分很到位了,本文是基于这篇博文上做了些改动,博文所写的都经过实践,如有错误,欢迎指正)