hexo安装与配置

2024-08-07 12:44:11 浏览数 (2)

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

0 人点赞