使用Hexo搭建个人博客

个人博客的几种解决方案

作为较早的博主,我大概从 2010 年开始就在CSDN上写博客,断断续续也写了100+篇文章。后来尝试过用自己的VPS搭建博客网站,以及在github上进行托管。但都不尽如人意,简单说下各种方式的优缺点。

方案一,CSDN等博客平台

在CSDN这样的博客平台上写博客,最大的好处有两点:

  • 不用维护服务器,不用花钱
  • 有巨大的流量入口,比较容易做到单篇文章浏览量过万。

不过缺点也很明显:

  • 无法做个性化定制,无法自定义页面,无法自定义域名。
  • 比较难流量变现。
  • 博客平台的文章水平参差不齐,鱼龙混杂。

总体来说比较适合新手博主练练手。

方案二,git pages
使用git pages服务托管自己的博客,也是目前很多人的做法,优点:

  • 不用维护,使用方便
  • 很多开源的博客框架可以用,比如 jekyll, hexo
  • 可以蹭star =。=
  • 个性定制比较方便,可以自定义域名,可以自己投放广告等

缺点:

  • 国内速度比较慢,不会科学上网的用户用起来会比较麻烦。
  • git pages 如果自定义域名,则无法使用 HTTPS
  • 没有备案,所以无法使用国内的广告联盟投放广告(百度广告联盟)

方案三,自建网站
这里要分情况讨论了,如果是国外的服务器,那么基本无法保证流畅使用。如果是国内的服务器以及国内注册的域名,那么可以比较完美的解决很多问题。主要还是有两点不太好的地方:

  • 个人服务器需要维护,服务器备案也需要一些时间。
  • 阿里云之类的机器比较贵,每个月会有一笔小的开销

那么下面说一下自己目前采用的方案,即在码市上托管自己的博客,同时做自定义的域名。
好处是:

  • 不用维护,只要写完博客 git push 一下就好了。
  • 码市是国内的服务器,速度有保证。
  • 免费!一分钱不花。当然自定义域名还是要花钱买域名的。
  • Hexo 搭建博客,Markdown写文章,十分方便。
  • 个性化定制域名,并且支持HTTPS,这点比gitpages做得好。

目前没有发现明显缺点,只有实名制没有备案不知道 是不是不能投放百度联盟的广告呢,我是个小博主暂时不去想广告的问题。

那么下面看看如何使用Hexo以及如何在码市上部署。

使用 Hexo 搭建博客

Hexo 是面向下一个十年的博客框架,官方宣传的特性:快速高效、支持Markdown、一键部署以及丰富的插件。

首先我们需要安装 Hexo:

1
npm install -g hexo-cli

安装完成后,使用 hexo 初始化我们的项目:

1
hexo init my-blog

等待一段时间安装完成后,就可以 hexo server 启动本地服务器,然后就可以看到一个欢迎页面了。

Hexo使用markdown写博文,并且丰富的主题可以选。具体如何使用hexo不在这里做太多介绍,请自行参阅 Hexo官方文档

个性化的主题肯定是非常重要的,这里推荐使用 Hexo Next 主题。界面非常简洁小清新,而且对各种三方插件支持非常全面。我在使用的时候用到了如下几个插件:

  • disqus 评论系统
  • Google Analytic 统计

只需要在 Next 的配置文件进行一下简单的配置即可,完全不用写任何代码。

在写完博客后如何发布呢?可以用 hexo g -d 命令,会生成静态文件并自动推送到指定分支。我的配置如下:

1
2
3
4
5
deploy:
type: git
repo: https://git.coding.net/lihongxun945/blog-mirror.git
branch: coding-pages
message:

这样我们执行 hexo g -d 的时候,会自动推送到 coding-pages 分支,这样线上的内容就会自动更新。

使用码市托管博客

如果你不需要自定义域名,那么到这里就已经搞定了。

很多开源项目的官方网站直接用了 github pages 来托管,好处是一个git命令就可以发布,也完全不用操心后期维护。
但是对国内用户来说非常不友好,很多不会翻墙的用户会反应打开速度很慢,或者有时候会打不开。

国内有很多类似 github 的网站,比如 码云 码市 ,他们都提供了类似github的功能,但是因为是国内的备案网站,所以速度非常快。

这里选择 码市,是因为码云的服务和git pages还不太一样,并没有试过该怎么用。而码市的 pages 服务比github做的还要优秀,支持自定义域名HTTPS链接,并且支持动态网站(PHP)。

可以选择他们作一个国内的镜像,使用方式几乎和github pages没有区别。以 码市为例

在码市上创建一个仓库并启用pages服务

直接创建一个仓库,然后把你的代码推送到这个仓库里。

注意码市有一个限定,pages 服务必须是 master 或者 coding-pages 分支,所以请创建一个 coding-pages 分支,同步 git-pages 即可。或者在push的时候指定别名也行。我的做法是,在master分支上写博客,完成之后直接 hexo g -d 会自动推送到 coding-pages 分支。

推送完代码之后启用 pages 服务,这是我的配置仅供参考:

custom domain

码市要求必须在首页放置一个他们的标志,否则当新用户第一次进入的时候会看到一个码市的跳转页面,为了更好的用户体验请一定要放置一个这样的标志。

设置DNS解析

如果您不需要自定义域名,到这里就可以了。

为了保证网站速度以及不被和谐,最好要用国内的域名。这里选择 阿里云注册域名。
阿里云注册域名必须实名制,否则会被禁止解析,所以请先保证你有一个域名并且已经实名认证。

关于如何绑定自定义域名,码市给了一个很详细的文档:https://coding.net/help/doc/pages/domain.html

具体来说 只要定义一个CNAME解析并解析到 pages.code.me 即可:

custom domain

稍等几分钟,然后直接访问你的域名,应该就可以打开了。

经过测试,在阿里云上是可以设置 CNAME@ ,但是在另一个注明域名服务商 Godaddy 无法设置 CNAME@ 值,只能设置 A 类型的 @

设置HTTPS

这方便不得不说码市做的比github好。github到目前为止依然不支持自定义域名的HTTPS安全链接。码市只需要点击一下申请按钮,就可以自动申请好HTTPS证书,然后就可以以 https://xxxx 的方式访问您的网站。
这么方便且免费的操作,强烈建议启用全站HTTPS。

关于实名制和备案

国内的所有域名和VPS的服务商都需要会要求实名制以及备案,根据我的经验是这样的:

  • 对于在国内购买的域名,比如阿里云(万网),那么必须完成实名制才能设置解析。未实名的域名会被管理局暂停解析。
  • 对于在国内购买的服务器,比如阿里云的CES,那么必须进行备案,才能将某个域名解析到这个主机。

所以如果你的域名在国内注册,服务器在国外购买,那么只需要对域名进行实名认证就可以了。