一、建站背景
之前一直有在CSDN网站(程序员在旅途)写博客,记录相关技术问题的解决思路,分享作为程序员的成长历程,也在想着能有一个专属的个人版简约网站。一次偶然的机会,巧遇Hexo,被Next主题的简约所吸引,所以在2020年起搭建程序员在旅途博客站点。博客网站采用Hexo+Next主题构建,然后托管在公有云服务器上基于域名(meijindong.com
)对外提供访问。
程序员在旅途博客建设过程中,主要涉及到了站点本身的配置优化、域名配置、搜索引擎检索等内容,将会以系列文章的形式发布出来。
本篇博客主要介绍站点本身的配置以及优化过程,主要涉及以下过程:
1. hexo站点搭建;
2. 配置Next主题(界面配置、站内搜索、valine评论);
3. 博客发布。
二、Hexo站点搭建
Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。
2.1 依赖环境配置
Hexo依赖以下基础环境,需要提前安装:
Node.js (Node.js 版本需不低于 10.13,建议使用 Node.js 12.0 及以上版本);
Git
使用以下命令确认环境安装完成:
1 | node -v # 版本 >=10.13 |
2.2 Hexo安装
使用npm命令安装hexo:
1 | npm install hexo-cli -g |
hexo安装完之后,就可以使用hexo命令初始化站点了。
使用hexo init <blog>
命令会在执行命令的路径下创建一个<blog>
目录,该目录会包含hexo站点的主体结构。进入该目录,执行npm install
安装相关依赖,然后使用hexo server
命令就可以将一个基础的站点运行起来了,默认会占用4000端口。
1 | hexo init hexo-next |
2.3 _config.yml文件配置
Hexo
根目录的_config.yml文件用于配置网站的全局性参数,其中可配置标题、描述、关键词、permalink、url、采用主题、deploy部署等内容。
#主体信息配置
title: “程序员在旅途”
subtitle: “用这生命中的每一秒,给自己一个不后悔的未来!”
description: “计算机领域耕作者”
keywords: “IT之旅,程序员在旅途,计算机领域耕作者,物联网,操作系统,算法,云原生,go,java,python,docker,k8s”
author: IT之旅
email: ***
language: zh-CN
timezone: ‘’
#设置站点链接形式
设置站点和文章的访问链接,形式为:https://www.meijindong.com/abbrlink.html
,其中 abbrlink
为文章持久化识别值,如果不设置,默认为title。
url: https://www.meijindong.com
root: /
permalink: /:abbrlink.html
permalink_defaults:
pretty_urls:
trailing_index: true # Set to false to remove trailing ‘index.html’ from permalinks
trailing_html: true # Set to false to remove trailing ‘.html’ from permalinks
abbrlink:
alg: crc32 # 算法:crc16(default) and crc32
rep: dec # 进制:dec(default) and hex
其中 hexo-abbrlink需要安装以下插件的支持:
1 | npm install hexo-abbrlink --save |
如果提示缺少依赖,执行npm
命令安装相关依赖即可。如缺少 babel-eslint
,可执行 npm install eslint@4.x --save
安装。
三、Next
主题配置
使用心仪的Next主题替换Hexo的默认主题。Hexo主题安装的方式非常简单,只需要将主题文件拷贝至站点目录的 themes 目录下, 然后修改下站点_config.yml配置文件启用Next主题即可。
1 | cd hexo-next |
在Hexo中有两份主要的配置文件,其名称都是_config.yml。 其中,一份位于站点根目录下,主要包含 Hexo 本身的配置;另一份位于主题目录下,这份配置由主题作者提供,主要用于配置主题相关的选项。
启用Next主题:修改_config.yml,更改为:
1 | theme: next |
这样主题就启用了,然后清除缓存,验证主题是否启用成功:
1 | hexo clean |
以上,就启用了 Next主题。
通过配置主题的_config.yml,可以让博客功能更为丰富和美观。
#选择不同的Scheme
Next提供了Scheme,借助于 Scheme,可以选择不同的外观样式。几乎所有的配置参数都可以在不同 Scheme 之间共用。目前 NexT 支持四种 Scheme,他们是:
Muse - 默认 Scheme,这是 NexT 最初的版本,黑白主调,大量留白;
Mist - Muse 的紧凑版本,整洁有序的单栏外观;
Pisces - 双栏 Scheme,小家碧玉似的清新;
Gemini - Pisces 的紧凑版本 。
本站点选择的是Mist,注释其他的Scheme即可。
#设置Menu导航菜单
菜单配置包括三个部分,第一是菜单项(名称和链接),第二是菜单项的显示文本,第三是菜单项对应的图标。 NexT 使用的是 Font Awesome 提供的图标。自定义的菜单名称需要在主题的languages文件中配置中英文对应关系。
1 | menu: |
以上菜单选项,需要自行创建page
页面,不然会报page
页面找不到 404错误,page
页面创建也是使用hexo命令:
1 | cd hexo-next |
#站点概览
站点概览会展示头像,文章统计数据,网站title,social链接等内容。
1 | avatar: |
#本地搜索
设置搜索可以在导航菜单栏提供一个搜索入口,用于快速对站点内容进行搜索。
可以使用官方提供的 插件配置搜索功能
1 | npm install hexo-generator-searchdb --save |
然后在站点_config.yml文件中加入以下内容,提供一个搜索的页面:
1 | search: |
然后在主题的_config.yml中启用搜索:
1 | local_search: |
#配置站点浏览量、访问量
打开busuanzi_count的开关即可,可以展示站点总计浏览量、文章浏览量。
1 | busuanzi_count: |
#文章字数统计、阅读时间预估
首先是安装next推荐的 symbols_count_time插件,然后再配置文件中开启统计即可。
1 | npm install hexo-symbols-count-time |
开启统计:
1 | symbols_count_time: |
#首页文章列表自动截取摘要
针对hexo-theme-next 7.8.0版本,使用以下方法配置首页文章列表自动截取摘要。
首先安装摘要插件:
1 | npm install hexo-excerpt --save |
然后在主题配置中添加以下配置:
1 | excerpt: |
#文章段落折叠
对段落或者代码很长的内容,可能有折叠需求,Markdown语言支持自动折叠的功能。
段落/代码折叠示例
1 | <details> |
#相关文章推荐
该功能会列出与当前文章相关联的博文推荐,由hexo-related-popular-posts提供支持,Next已集成此功能。
首先安装该插件:
1 | npm install hexo-related-popular-posts --save |
然后再配置文件中开启推荐功能:
1 | related_posts: |
配置参数后,clean本地缓存,然后运行:
1 | hexo clean |
#推荐置顶
对默认以时间排序的方式做一个功能增强,加入置顶功能。
修改hexo-generator-index的排序函数为以下内容,路径为:node_modules\hexo-generator-index\lib\generator.js
:
1 | ; |
然后在文章标题处添加置顶的标识,修改themes/next/layout/_macro/post.swig
文件,在<div class="post-meta">
标签下加入内容:
1 | {% if post.top %} |
#进度条配置
theme-next-pace提供了在文章打开时候提供进度条显示功能。
首先下载样式文件至Next主题中:
1 | cd themes/next |
然后在配置文件中开启pace
配置(配置好之后需要clean缓存再次运行):
1 | pace: |
四、撰写博客与发布
Hexo采用标准Markdown
语法进行文章撰写,一篇博文中通常会包含Front-matter元数据、正文内容。Front-matter元数据包含title、创建日期、tag、以及其他插件所依赖的字段信息(例如:是否显示评论)等内容。Front-matter在博文上方以 ---
与正文内容区分开,不会直接显示在发布的博文中。Hexo通过generage
命令生成博客站点静态文件,用于部署在服务器上对外提供服务。
4.1 博文撰写
可以通过以下命令生成一篇博文,然后在此基础上完善内容:
1 | hexo new [layout] <title> |
Hexo 有三种默认layout
:post、page 和 draft。在创建这三种不同类型的文件时,它们将会被保存到不同的路径。draft文章不会直接显示在站点中。
布局 | 路径 |
---|---|
post |
source/_posts |
page |
source |
draft |
source/_drafts |
可以使用一些Markdown工具来写博文,提高生产力。 针对VScode的插件,直接搜索markdown
就可以安装。
也可以使用hexo-admin
来管理博文:
1 | npm install --save hexo-admin |
然后打开:http://host:port/admin/ 就可以访问了admin页面了。
4.2 博文发布
通过generate
命令,在博客根目录下的 public
文件夹生成站点静态文件,该文件用于发布。
1 | hexo generage |
Hexo 提供了快速方便的一键部署功能,让您只需一条命令就能将网站部署到服务器上。
首先需要在站点_config.yml文件中配置deploy信息,支持git等方式。然后在服务器配置好git服务,将服务器的内容目录和git分支对应,实现服务器可读取git分支内容,然后通过hexo deploy就可以实现一键部署了。
如果提示git缺失之类的错误,执行一下命令安装:
1 | npm install hexo-deployer-git --save |
配置文件_config.yml内容如下:
1 | deploy: |
执行部署,当执行 hexo deploy 时,Hexo 会将public目录中的文件和目录推送至_config.yml 中指定的远端仓库和分支中,并且完全覆盖该分支下的已有内容:
1 | hexo deploy |
至此,程序员在旅途博客站点主体搭建完毕。