Hexo个人博客系统的搭建和使用
前言
之前本人博客采用Hugo进行安装部署,在更新Hugo版本后发现原来的LoveIt主题与最新版本Hugo无法兼容,导致博客出现故障
由于原来博客部署在阿里云ESC云平台上,操作系统采用的是Centos7版本,统筹考虑将云主机操作系统进行升级并对博客进行翻新改造
最终采用Rocky Linux 9.1
以及Hexo博客系统
1 Hexo安装部署
Hexo是一款基于Nodejs的,快速、简洁且高效的博客框架,只需要安装Node.js和Git即可
Hexo本质是是将Markdown文件(或其他支持格式)按照自定义主题方式输出为标准化静态文件,这些静态文件才是真正意义上所需要的输出物
静态文件可以部署在类似在阿里云ESC,通过Apache或者Nginx对外提供Web服务器从而实现个人博客站点的内容实现
也可以直接部署在类似Github上直接完成Web实现,前者存在域名解析和TLS证书的问题
基本的Hexo工作流详见下图
1.1 环境介绍
本文使用阿里云ESC云主机,操作系统采用:linux 5.14.0-162.23.1.el9_1.x86_64 Rocky Linux 9.1 (Blue Onyx)
注意:本文站点根目录为/root/mysite
1.2 安装Node.js
Hexo是基于Node.js技术,因此需要安装Node.js,官网对于版本的依赖如下:
Hexo 版本 | 最低版本 (Node.js 版本) | 最高版本 (Node.js 版本) |
---|---|---|
6.2+ | 12.13.0 | latest |
6.0+ | 12.13.0 | 18.5.0 |
5.0+ | 10.13.0 | 12.0.0 |
4.1 - 4.2 | 8.10 | 10.0.0 |
4.0 | 8.6 | 8.10.0 |
3.3 - 3.9 | 6.9 | 8.0.0 |
3.2 - 3.3 | 0.12 | 未知 |
3.0 - 3.1 | 0.10 或 iojs | 未知 |
0.0.1 - 2.8 | 0.10 | 未知 |
Rocky Linux采用yum源安装,Git用系统默认自带版本
1 | yum install -y nodejs |
验证Hexo的版本和安装包信息
1 | [root@ethan mysite] hexo version |
至此Hexo博客系统就完成了部署
1.3 建立站点
基本的建站步骤,这里采用手动创建站点目录
1 | cd /root |
初始化站点根目录
1 | hexo init |
此时/root/mysite
将作为后续Hexo博客系统的站点根目录
相关站点的目录结构如下:
1 | [root@ethan mysite]# tree -L 1 |
这里一个文件和三个文件夹最重要:
1、_config.yml文件:全局配置文件,包括页面标题、页面介绍等基本信息,这里配置的信息最重要就是主题的设置,例如设置theme: next
2、source:这里存放需要发布的MD文件,后续可以直接将MD文件存放在这里,Hexo通过--wathc
参数会实时监视该文件夹,生成静态文件
3、themes:这里存放主题文件
4、public:存放最终生成的静态文件,用于Apach或者Ngnix进行Document Root的设置进行读取,对外提供Web服务
1.4 Hexo全局参数配置
这里简单介绍几个必须修改的字段,供参考
1、title: 张先生的深夜课堂,这里作为网页打开标题
2、language: zh-CN,如果选择中文
3、timezone: ‘Asia/Shanghai’时区建议
4、theme: next,主题的配置,这里为了使用next
主题,增加一行
特别注意,默认配置文件最后有一行,主题默认为landscape,建议作为注释,否则运行Hexo进程会报错
#theme: landscape
5、url: https://www.ethanzhang.xyz/,修改为实际的网页地址,注意这里的`http或者https`前缀
如果GitHub Page, 参考修改为 ‘https://username.github.io/project‘
2 主题
类似Hugo,Hexo支持大量主题,这里非常推荐一款主题Next
,开箱即用
官网链接:https://github.com/theme-next/hexo-theme-next
2.1 安装
直接采用Git安装或者手动安装方式,前者的好处是在于建立了本地Git仓库并保持远程仓库信息,将来可以使用git pull
进行更新
1 | cd /root/mysite |
此时next主题安装完成
这里查看next主题的整个文件框架
1 | [root@ethan mysite]# tree themes/next/ -L 1 |
同样这里最重要的文件仍然是_config.yml
主题参数配置文件
2.2 主题参数配置
可参考:https://theme-next.org/docs/theme-settings/
基本上next
主题开箱即用,可定义的参数特别多,可玩性较高
2.2.1 备案号
个人博客都应主动向公安主管部门进行备案,因此需要在网站上主动显示备案信息号
在配置参数中footer:
下的copyright:
字段信息,可以填入该备案信息号
2.3 升级主题
进入当前主题文件目录下,使用git pull
命令进行升级
1 | cd themes/next |
3 实际使用生成内容
一般使用Typora、Obsidian等写作文件,生成Markdown文件后,直接上传至站点根目录的source
目录下
关键步骤,使用hexo二进制文件对source
目录下的Markdown文件进行扫描,通过主题文件生成格式化静态文件
hexo具体命令参数如下:
1 | hexo generate |
其他可以使用参数
1 | -w, --watch 监视文件变动 |
3.1 最佳实践
实际上我们习惯更关注与博客内容的创作,创作后的内容文件希望直接上传至规定目录后,系统自动实时创建更新,刷新页面后将立即获得所见即所得的效果
因此Hexo程序应在后台运行,形成一个后台运行的进程,并实时监测source
目录下内容的变化,因此建议使用一下命令:
1 | nohup hexo g --w 2>&1 & |
3.2 内容创作
这里还有一个非常重要的提示,就是对于内容文件Markdown文件中一些预定义的关键字的说明
例如Hexo如何知道你对于分类
和标签
等内容的识别?
这些预定义的关键字,官网称之为Front-matter
是文件最上方以 ---
分隔的区域,用于指定个别文件的变量
官网参数定义如下:
参数 | 描述 | 默认值 |
---|---|---|
layout |
布局 | config.default_layout |
title |
标题 | 文章的文件名 |
date |
建立日期 | 文件建立日期 |
updated |
更新日期 | 文件更新日期 |
comments |
开启文章的评论功能 | true |
tags |
标签(不适用于分页) | |
categories |
分类(不适用于分页) | |
permalink |
覆盖文章的永久链接,永久链接应该以 / 或 .html 结尾 |
null |
excerpt |
纯文本的页面摘要。使用 该插件 来格式化文本 | |
disableNunjucks |
启用时禁用 Nunjucks 标签 {{ }} /{% %} 和 标签插件 的渲染功能 |
false |
lang |
设置语言以覆盖 自动检测 | 继承自 _config.yml |
一般使用title、date、tags、categories、description五个参数即可
特别注意是关于description
参数,建议最好使用,这样在首页中就能够以省略方式,通过description
参数内容去在首页进行展示,而不是将该文章全部进行显示