Hexo

我们的目标

hexo是一个简洁高效的博客框架,可以通过markdown生成静态页面,同时支持多种主题和插件,帮助我们快速创建一个美观的博客网站。

这一步我们仅仅是在本地安装hexo,并初始化对应的目录,最终我们能够在本地生成和查看博客界面。

需要的软件

以上是此篇文章最后一次更新时,笔者电脑上的软件版本,理论上使用最新版本即可。

安装hexo

在任一目录下点击鼠标右键,打开git bash,然后输入:

npm install hexo-cli -g

即可完成hexo安装

初始化博客

自己选一个目录作为博客的根目录,笔者这里用D:\BLOG作为演示。

博客根目录下打开git bash,或者用cd D:\BLOG指令更改当前目录,输入:

hexo init

之后可以看到目录下多出来了很多文件,请不要在不了解的情况下删除任何文件,同时这个目录就是我们博客所有内容存放的地方了,包括文章和主题配置等。所有的维护和更新都会在这个目录下进行,请一定要及时备份,不然万一博客目录损坏,你就必须重新走一遍安装和配置的流程,而且文章会丢失。

之后我们所有的指令全都默认在git bash中进行,且当前目录是博客根目录

在本地查看博客

输入指令hexo s,你就可以看到本地服务器已经开始运行,打开浏览器访问http://localhost:4000/即可查看博客内容。想停止本地服务,在git bash中按Ctrl+C即可。

笔者在安装过程中并未遇到任何错误,如果各位安装报错,可直接到谷歌搜索,Hexo的用户群很广,基础的问题很容易找到答案。

阶段总结

到这里我们已经完成了hexo在本地安装,并成功初始化博客目录。

看到博客的界面,有的小伙伴可能已经准备动手写文了,又或是说“这个界面不好看,我想换个新的主题”,这个别着急,我们一步一步来。

将博客部署到Git Pages并绑定自己的域名

我们的目标

我们已经在本地完成了搭建,现在要将它部署到git pages,这样朋友们才能通过浏览器随时访问到我们的博客。同时我们可以自己购买并绑定一个专属于自己的域名,更有助于别人记忆和访问,甚至根本看不出来博客使用git pages部署的,这样也有利于以后更换平台。

生成public内容

输入指令hexo g,之后可以发现目录下多了一个public目录。

这里先简单说一下,这个public才是最后上传github的文件,除此之外的东西都不会上传。在执行hexo g指令时,会通过source和themes中的内容生成public。

  • source:存放我们写的文章和一下资源文件,其中markdown(.md)和html文件会通过主题模板生成页面(.html)文件,并按结构放置在public下。其他类型的文件(夹)会直接复制到public目录。
  • themes:存放我们的主题,即生成页面的模板,也包括一些主题自带的CSS和JS等文件。

输入指令hexo clean可以清空之前的生成,即删除public目录。建议每次执行生成前,都清理一次

连接github仓库

创建github仓库

首先要去github注册一个账号,然后在这个账号下新建一个仓库(Repositories),注意仓库名称要和用户名相同

这个创建好以后等待一段时间,之后可以用用户名.github.io直接访问这个仓库的页面。

配置SSH连接

首先输入指令cd ~/.ssh,然后输入指令ls,如果目录不存在,或者目录下没有任何文件,说明没有生成过ssh密钥,如果存在id_rsa.pub等文件,证明之前已经生成过ssh密钥,可以直接使用。

我这里之前已经生成过了,如果没有,则输入指令:

ssh-keygen -t rsa -C "这里填你的邮件地址即可"

确定密钥生成后,到C:\Users\你的当前用户目录\.ssh目录下,可以看到id_rsa.pub文件,用记事本打开,复制里面的内容。

到github页面,点击右侧头像,弹出的列表里点击settings进入设置页面。点击SSH and GPG keys选项,点击new ssh key,title起一个你想要的名称,key把刚刚复制的东西粘贴进去,add ssh key即可。

输入指令ssh -T git@github.com,弹出提示输入yes,看到:

You’ve successfully authenticated, but GitHub does not provide shell access.

说明SSH配置成功,接下来还需要输入指令:

git config --global user.name "你的github用户名"
git config --global user.email  "你的github邮箱"

到此即完成了SSH连接github的配置,当然这只是单机、单用户、单SSH的配置,更多SSH的相关内容笔者不再介绍,各位可自行搜索学习。

配置hexo中_config.yml

注意这个文件有两个,一个在博客根目录下,另一个在主题目录下,我们现在要配置的是博客根目录下的文件。

将最底下的deploy的内容改成:

deploy:
  type: git
  repository: git@github.com:XXX/XXX.github.io.git #你的github仓库的SSH地址
  branch: master

将博客推送到github仓库

首先输入指令npm install hexo-deployer-git --save安装插件,之后输入指令hexo d即可将public目录下的文件推送到仓库。

绑定域名

购买和解析域名

在任何平台购买域名均可,笔者不再详细讲述。

之后要进行域名解析,以阿里云为例。添加一条解析记录,如果你的域名仅仅为了博客使用,那可以配置A记录或者CNAME记录的www。因为笔者的域名还有其他网站使用,所以我仅仅使用二级域名指向博客网站。

添加一个CNAME记录,主机记录中填写www以外的字符串,我用的blog,这样有助于分辨,记录值填写之前访问github仓库所用的域名。

点击确定以后,域名解析列表中就会多出来一条记录。但是此时还不能通过域名访问git pages,因为我们还得在github仓库配置用户域名。

添加CNAME文件

在博客目录中的source目录下,添加一个CNAME名称的文件,没有任何后缀,其中写上刚刚解析的域名,比如笔者这里就应该填blog.fysbbczh.top。这里有几个差别需要注意:

  • 如果你填写的是一级域名,比如fysbbczh.top,那么无论是访问http://www.fysbbczh.top还是http://fysbbczh.top,都会自动跳转到http://fysbbczh.top
  • 如果你填写的是带www的二级域名,比如http://www.fysbbczh.top,那么无论是访问http://www.fysbbczh.top还是http://fysbbczh.top,都会自动跳转到http://www.fysbbczh.top
  • 如果你填写的是其它二级域名,比如blog.fysbbczh.top,那么就只能访问http://blog.fysbbczh.top,其它域名都无法找到正确页面。

之后再次用hexo将博客上传,就可以用域名访问了。

开启https

如果要开启https,到github仓库设置的pages选项中,打开里面的enforce https,这里也可以看到上方的custom domain已经填入了刚刚CNAME文件中的域名。

也要将博客目录下的配置文件中url的地址改为你的域名和https的形式。

阶段总结

至此,我们已经能够正常的访问git pages博客了,如果没有额外需求的小伙伴,去看看hexo主题配置相关的内容,就可以使用博客了。

下面的内容是为了搜索引擎收录做准备,各位可以选择性阅读。

Netlify

我们的目标

我们写博客不仅仅是为自己记录,独乐乐不如众乐乐,我们肯定希望别人也能看到我们的文章,但现在,除非直接把网址发送给对方,不然对方是没有办法找到我们的博客的,因为我们的博客还未被搜素引擎收录。而现在国内主流的搜索引擎就是百度,但github是无法的被百度收录的,为了解决这个问题,我们需要将网站额外部署到其它平台。

将博客部署到Netlify

首先进入Netlify,注册一个账号。

登陆后在site界面添加站点,如图所示。

然后选择从github部署,这里需要按要求登录github账户。

仓库选择我们之前搭建git pages的仓库。

之后可以设置部署时的构建方法,因为我们已经在github完成了构建,所以直接默认即可。

之后点击最下方的部署,将添加一个netlify站点,会给我们一个默认的域名,使用该域名即可访问博客。

设置自己的域名

这里我们要把netlify站点设置成我们自己的域名,这个域名应当和git pages的域名相同。

首先点击domain management菜单,然后修改一下站点名称,方便辨认。然后点击add a domain,将我们自己的域名输入进去。

之后要到域名控制台,添加解析记录,字段值就是上面的站点域名,比如我这个就是fysbbczh.netlify.app。注意这里因为没有IP地址,所以只能用CNAME记录。

设置https

获取证书

netlify的https需要我们自己提供证书(不清楚证书是什么的请自行搜索学习),阿里云每年有20个免费证书,创建一个使用就行。

首先在阿里云产品中搜索证书,找到“数字证书管理服务”,然后点击“SSL证书->免费证书->创建证书”。

创建证书后需要申请,点击“证书申请”后,在页面中只需要填写我们之前的域名,其它选项都保持默认。

通常情况下,如果是阿里云购买的域名,现在已经可以自动验证和颁发了。但如果不能自动验证,就需要我们手动去创建一个解析记录。具体方式是创建一个TXT类型的解析记录,并按要求将对应的字段填入。等验证界面显示域名验证成功即可,一般等个一分钟证书就可以颁发。

部署证书

先从阿里云下载证书,下载按钮就在刚刚申请的证书旁边,下载Apache服务器的格式。

然后到netlify部署证书,在domain management菜单最底下,用关于https的设置,选择添加custom certificate。之后的设置界面要填写刚刚下载的证书内容。

  • certificate:填入public.crt文件内容
  • private key:填入.key文件内容
  • intermediate certs:填入chain.crt文件内容

阶段总结

此时我们就完成了双站部署,可以发现,在使用我们自己的域名访问博客时,会自动选择更优的网站进行获取,这样也可以在一定程度上加快博客的访问速度。最重要的是,这样可以使百度能够收录我们的文章。