前言
对于广大CS专业的学生和码农,找一个地方写博客,记录一些编程、配置环境、阅读论文的心得体会是一个很常见的习惯。当然想搭建个人博客,就需要找个靠谱的平台,主要就是以下的两种方式:
- 使用网站提供的博客平台,例如国内的CSDN、博客园;国外的Blogger、Wordpress
- 自己建站,发布到自己的服务器上,或者发布到GitHub、GitLab、Bitbucket等支持静态网页发布的git平台
针对于第一种方式,最大的特点就是省心。CSDN和博客园都支持多种编辑器,其中就包括Markdown。而且基本上不需要任何设置,注册个账号直接写文章就可以了。缺点是国内的这些平台都不支持使用自有域名,而且在海外访问速度也不快,有些平台还有广告。国外的平台,blogger支持自有域名,但是很多设置都不太好用,而WordPress很多功能是收费的。而且这两个平台好像在国内无法访问。总而言之,就是使用别人家的平台,可以改的东西就会比较少,受到的限制也很多。
所以许多人就选择了第二种方式。第二种方式也有很多选择。比如hexo、jekyll,而且WordPress也提供开源安装包可以部署在自己的服务器上。相对于自己购买服务器,我更倾向于使用GitHub、GitLab这些支持Pages服务的平台。原因很简单,自己买服务器首先就要花钱,而且在各种网络条件下链接速度也不好保证。GitHub Pages服务虽然有容量上限,但对于博客而且基本等于没有。有着良好的CDN,全世界访问起来都很快。而且支持绑定自有域名,提供SSL认证实现https。最重要的是,所有的服务都是免费的。
使用GitHub Pages服务搭建博客,主要就是hexo和jekyll两个平台。这两个平台都支持Markdown,这一点是最重要的。GitHub Pages服务官方支持的是jekyll,所以jekyll可以在不进行设置的情况下实现CI/CD(持续集成Continuous integration和持续发布 Continuous delivery)。简单来说就是不进行任何配置的情况下直接把Markdown和jekyll的源文件git push到服务器上,网站就会自动编译和发布出来。hexo也支持CI但要进行配置。
但是,很多用户都反映jeyll速度不如hexo。而且我个人觉得hexo主题管理方面是要优于jekyll了,好看的主题也更多。所以本文介绍hexo+GitHub搭建博客。
下载安装hexo
hexo官网提供了良好的开发文档,并且提供了简体中文的版本。其实安装过程参照官网一步步来就没有什么问题。本文也以ubuntu为例简述一下安装配置过程。其他Unix内核的系统比如Debian、macOS过程也很类似。
首先需要安装npm:
sudo apt-get install python-software-propertie |
检查npm的版本,如果能正常显示版本号则安装成功:
npm -v |
安装完npm,就可以安装hexo了:
npm install hexo-cli -g |
然后访问http://localhost:4000,如果显示正常,就说明hexo已经安装完成。
这里提供一些hexo的命令,你也可以在官方帮助文档里面找到更全面的命令清单。
npm install hexo -g #安装Hexo |
将项目部署到GitHub
首先在GitHub新建一个空的Repository,名字为your-username.github.io
(把your-username
替换为你的用户名),这样GitHub会自动将网页发布到your-username.github.io。
git@github.com:y2l/y2l.github.io.git |
打开_config.yml
文件,找到deploy
,进行如下配置:
deploy: |
然后执行:
npm install hexo-deployer-git --save |
这样生成的静态网页就被推送到GitHub上了。
然后你需要在GitHub对应的Repository的settings
界面上(https://github.com/your-username/your-username.github.io/settings),在GitHub Pages
的Source
设置中,选择master branch
并点击save
。这样,几分钟之后你的网页就被发布了。
绑定自己的域名
选择域名注册上并注册域名可以参考:域名注册与域名解析
配置域名给GitHub Pages可以参考《通过Github实现URL转发》中配置域名的相关部分。
GitHub可以免费提供SSL认证,实现https,在settings
中可以一键开启。
要注意的是,如果使用自己的域名,你需要在source
目录下创建一个名为CNAME
的文档,在其中输入你的域名。如果不建立这个文档,每次部署的时候GitHub Pages的域名配置都会被清空。
配置和使用NexT主题
之所以使用hexo搭建博客,就是为了使用hexo所支持的大量主题。这里就像大家介绍一个界面干净整洁,很多hexo博客都使用的主题:NexT。这个主题提供良好的中文开发文档。而且功能齐全,一个博客需要有的功能,比如标签、分类、背景设置、分享、评论功能、计数器、Google Analytics等等很多功能都被集成进去,可以说是非常好用。
安装NexT
cd blog |
然后修改站点配置文件_config.yml
, 找到 theme
字段,并将其值更改为 next
。
theme: next |
到此,NexT 主题安装完成。
然后执行如下命令查看效果:
hexo clean |
基本信息配置
基本信息包括:博客标题、作者、描述、语言等等。
打开 站点配置文件 ,找到Site
模块
title: 标题 |
关于 站点配置文件 中的其他配置可参考站点配置
菜单设置
菜单包括:首页、归档、分类、标签、关于等等
我们刚开始默认的菜单只有首页和归档两个,不能够满足我们的要求,所以需要添加菜单,打开 主题配置文件 找到Menu Settings
menu: |
看看你需要哪个菜单就把哪个取消注释打开就行了;
关于后面的格式,以archives: /archives/ || archive
为例:
||
之前的/archives/
表示标题“归档”,关于标题的格式可以去themes/next/languages/zh-Hans.yml
中参考或修改
||
之后的archive
表示图标,可以去Font Awesome中查看或修改,Next主题所有的图标都来自Font Awesome。
Next主题样式设置
我们百里挑一选择了Next主题,不过Next主题还有4种风格供我们选择,打开 主题配置文件 找到Scheme Settings
# Schemes |
侧栏设置
侧栏设置包括:侧栏位置、侧栏显示与否、文章间距、返回顶部按钮等等
打开 主题配置文件 找到sidebar
字段
sidebar: |
头像设置
打开 主题配置文件 找到Sidebar Avatar
字段
# Sidebar Avatar |
这是头像的路径,只需把你的头像命名为header.jpg
(随便命名)放入themes/next/source/images
中,将avatar
的路径名改成你的头像名就OK啦!
RSS设置
先安装 hexo-generator-feed 插件
npm install hexo-generator-feed --save |
打开 站点配置文件 找到Extensions
在下面添加
# RSS订阅 |
打开 主题配置文件 找到rss
,设置为
rss: /atom.xml |
添加分类模块
新建一个分类页面
hexo new page categories |
你会发现你的source
文件夹下有了categorcies/index.md
,打开index.md
文件进行如下设置
|
打开 主题配置文件 找到menu
,将categorcies
取消注释
把文章归入分类只需在文章的顶部标题下方添加categories
字段,即可自动创建分类名并加入对应的分类中, 如:
title: 分类测试文章标题 |
添加标签模块
新建一个标签页面
hexo new page tags |
你会发现你的source
文件夹下有了tags/index.md
,打开index.md
文件,进行如下设置:
|
打开 主题配置文件 找到menu
,将tags
取消注释
把文章添加标签只需在文章的顶部标题下方添加tags
字段,即可自动创建标签名并归入对应的标签中
举个栗子:
title: 标签测试文章标题 |
添加关于模块
新建一个关于页面
hexo new page about |
你会发现你的source
文件夹下有了about/index.md
,打开index.md
文件即可编辑关于你的信息,可以随便编辑。 打开 主题配置文件 找到menu
,将about
取消注释,该页面就能够正常显示。
添加搜索功能
安装 hexo-generator-searchdb 插件
npm install hexo-generator-searchdb --save |
打开 站点配置文件 找到Extensions
在下面添加
# 搜索 |
打开 主题配置文件 找到Local search
,将enable
设置为true
添加阅读全文按钮
因为在你的博客主页会有多篇文章,如果你想让你的文章只显示一部分,多余的可以点击阅读全文来查看,那么你需要在你的文章中添加
<!--more--> |
后记
至此你的博客就算简单的配置完成了。hexo的NexT主题还集成了评论、分享等众多第三方插件,大家今后还可以慢慢开发。写博客不是做网站,如果你希望建立一个有价值的博客,还应该更加重视博客的内容。hexo给我们提供了一个良好的平台,也希望大家都能多多分享自己的经验和见解。