hexo 安装
安装 nodejs
代码语言:javascript复制# 安装 nvm,用于管理 nodejs
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
source ~/.bashrc
# 安装 nodejs
nvm install v18.16.0
安装 hexo
代码语言:javascript复制# 创建目录
mkdir -p /data/hexo
# 安装 hexo-cli
npm install -g hexo-cli
# 安装 pm2,用于管理 hexo
npm install -g pm2
# 初始化 hexo
cd /data/hexo
hexo init
# 创建启动脚本
vim /data/hexo/run_hexo.js
const { exec } = require('child_process')
exec('hexo server',(error, stdout, stderr) => {
if(error){
console.log('exec error: ${error}')
return
}
console.log('stdout: ${stdout}');
console.log('stderr: ${stderr}');
})
# 启动 hexo
pm2 save && pm2 startup
pm2 start run_heso.js
# pm2 使用
pm2 list
pm2 stop ID
pm2 start ID
# 访问
http://IP:4000
更换主题
下载主题
代码语言:javascript复制dnf install git -y
cd /data/hexo/themes
git clone https://github.com/next-theme/hexo-theme-next.git ./hexo-theme-next
启用主题
代码语言:javascript复制# 修改下面的内容
vim /data/hexo/_config.yml
theme: hexo-theme-next
cd /data/hexo
# 后面每次修改完配置后,都执行下该操作
nexo g
# 刷新页面,即可应用新主题
优化主题配置
修改站点语言
代码语言:javascript复制vim /data/hexo/_config.yml
author: # 作者昵称
description: '' # 站点描述
language: zh-CN # 站点语言
timezone: 'Asia/Shanghai' # 站点时区
新建标签和分类
代码语言:javascript复制# 添加标签页面
cd /data/hexo
hexo new page tags
vim /data/hexo/source/tags/index.md # 编辑该文件
---
title: 标签
date: 2023-06-04 13:50:49
type: "tags"
---
# 新建分类页面
cd /data/hexo
hexo new page categories
vim /data/hexo/source/categories/index.md # 编辑该文件
---
title: 分类
date: 2023-06-04 13:53:45
type: "categories"
---
# 编辑主题配置文件
vim /data/hexo/themes/hexo-theme-next/_config.yml
menu:
home: / || home
tags: /tags/ || tags
categories: /categories/ || th
archives: /archives/ || archive
设置代码高亮显示
代码语言:javascript复制# 编辑主题配置文件
vim /data/hexo/themes/hexo-theme-next/_config.yml
highlight_theme: night
友情链接
代码语言:javascript复制# 编辑主题配置文件
vim /data/hexo/themes/hexo-theme-next/_config.yml
links:
Title: http://yoursite.com
链接名称:链接地址
增加本地搜索功能
代码语言:javascript复制# 在 Hexo 根目录下,安装插件
cd /data/hexo
npm install hexo-generator-search --save
npm install hexo-generator-searchdb --save
# 修改博客根目录下的配置文件,在最后增加以下内容
vim /data/hexo/_config.yml
search:
patch: search.xml
field: post
content: true
format: html
# 修改主题配置文件
vim /data/hexo/themes/hexo-theme-next/_config.yml
local_search:
enable: true
trigger: auto
top_n_per_article: 1
unescape: false
preload: false
# 重新生成站点
hexo clean
hexo g
增加阅读全文功能
代码语言:javascript复制# 编辑主题配置文件
vim /data/hexo/themes/hexo-theme-next/_config.yml
excerpt_description: true
read_more_btn: true
# 写 md 博客文档时,在想要显示预览的部分后面加上 <!--more-->,这样首页展示的文章内容就是 <!--more-->前面的文件,后面的文字就不会显示了。
设置侧栏
代码语言:javascript复制# 设置侧栏的位置
vim /data/hexo/themes/hexo-theme-next/_config.yml
sidebar:
position: left # left:靠左 right:靠右
# 设置侧栏显示的时机
vim /data/hexo/themes/hexo-theme-next/_config.yml
sidebar:
display: post
# post:默认,在文章页面时显示
# always:在所有页面中都显示
# hide:在所有页面中都隐藏
# remove:完全移除
在文章末尾添加 “本文结束” 标记
代码语言:javascript复制# 修改主题配置下的文件
vim /data/hexo/themes/hexo-theme-next/layout/_macro/post.swig
# 在 {### END POST BODY ###} 该行前面添加下面的内容
<div>
{% if not is_index %}
<div style="text-align:center;color: #ccc;font-size:14px;">
------------- 本文结束 <i class="fa fa-heart-o"></i> 感谢您的阅读-------------
</div>
{% endif %}
</div>
添加字数统计和阅读时长
代码语言:javascript复制# 安装插件
npm install hexo-symbols-count-time --save
npm install hexo-wordcount --save
# 修改主题配置文件
vim /data/hexo/themes/hexo-theme-next/_config.yml
post_wordcount:
item_text: true
wordcount: true
min2read: true
totalcount: true
separated_meta: true
symbols_count_time:
separated_meta: true
item_text_post: true
item_text_total: true
awl: 2 # 平均每个字符的长度
wpm: 275 # 设定每分钟可阅读的字符数
symbols: true # 是否统计字数
time: true # 是否统计阅读时长
total_symbols: true # 是否统计总字数
total_time: true # 是否统计总阅读时长
footer:
counter: true # 新增此行
添加阅读次数和访问量
代码语言:javascript复制# 修改主题配置文件
vim /data/hexo/themes/hexo-theme-next/_config.yml
busuanzi_count:
enable: true
total_visitors: true
total_visitors_icon: user
total_views: true
total_views_icon: eye
post_views: true
post_views_icon: eye
显示当前浏览进度
代码语言:javascript复制# 修改主题配置文件
vim /data/hexo/themes/hexo-theme-next/_config.yml
scrollpercent: true
代码块复制选项
代码语言:javascript复制# 修改主题配置文件
vim /data/hexo/themes/hexo-theme-next/_config.yml
codeblock:
highlight_theme: night
copy_button:
enable: true # 是否开启代码块复制按钮
show_result: true # 是否显示复制成功信息
style: mac
去掉网页底部的“强力驱动”
代码语言:javascript复制# 注释或删除下面的代码
# 在这段代码首尾分别加上: <!-- 和 -->
vim themes/hexo-theme-next/layout/_partials/footer.swig
{%- if theme.footer.powered %}
<div class="powered-by">
{%- set next_site = 'https://theme-next.org' %}
{%- if theme.scheme !== 'Gemini' %}
{%- set next_site = 'https://' theme.scheme | lower '.theme-next.org' %}
{%- endif %}
{{- __('footer.powered', next_url('https://hexo.io', 'Hexo', {class: 'theme-link'}) ' & ' next_url(next_site, 'NexT.' theme.scheme, {class: 'theme-link'})) }}
</div>
{%- endif %}
hexo 添加图片
代码语言:javascript复制- 在 source 目录创建一个存放图片的文件夹,如 image
- 把要插入的图片放到该目录下,在文件中使用 markdown 语法插入图片,如:![img](/image/xxx.png)
# images前面有一个/,表示根目录的意思,对于 hexo 来说,它的资源文件的根目录就是 source
文章加密
代码语言:javascript复制# 安装插件
npm install hexo-blog-encrypt --save
# 按标签加密
修改文章开头如下:
--
title: xxx
tags:
- 加密文章的tag
date:
password: 密码
wrong_pass_message: 密码错误,请重试
abstract: 这是一篇加密文档,输入密码后才能查看
message: 请输入密码
--
添加网站运行天数
代码语言:javascript复制vim hexo-theme-next/layout/_partials/footer.swig
# 在最后添加以下内容,注意修改var grt= new Date("12/1/2021 00:00:00");中的时间
<div>
<span id="timeDate">载入天数...</span><span id="times">载入时分秒...</span>
<script>
var now = new Date();
function createtime() {
var grt= new Date("12/1/2021 00:00:00");
now.setTime(now.getTime() 250);
days = (now - grt ) / 1000 / 60 / 60 / 24; dnum = Math.floor(days);
hours = (now - grt ) / 1000 / 60 / 60 - (24 * dnum); hnum = Math.floor(hours);
if(String(hnum).length ==1 ){hnum = "0" hnum;} minutes = (now - grt ) / 1000 /60 - (24 * 60 * dnum) - (60 * hnum);
mnum = Math.floor(minutes); if(String(mnum).length ==1 ){mnum = "0" mnum;}
seconds = (now - grt ) / 1000 - (24 * 60 * 60 * dnum) - (60 * 60 * hnum) - (60 * mnum);
snum = Math.round(seconds); if(String(snum).length ==1 ){snum = "0" snum;}
document.getElementById("timeDate").innerHTML = "本站已安全运行 " dnum " 天 ";
document.getElementById("times").innerHTML = hnum " 小时 " mnum " 分 " snum " 秒";
}
setInterval("createtime()",250);
</script>
</div>
添加天气插件
代码语言:javascript复制# 获取插件
https://www.seniverse.com/widgetv3
# 编辑文件,添加插件,在文件最后添加上面生成的代码
vim hexo-theme-next/layout/_partials/head/head.swig