• 打造一个开箱即用的超级丝滑的漂亮hexo博客网站


    打造一个开箱即用的超级丝滑的漂亮hexo博客网站

    image-20231017062650020

    image-20231018071709009

    目录

    文章目录

    文章持续更新地址

    https://onedayxyy.cn/2023/10/17/2023.10.17-%E6%89%93%E9%80%A0%E4%B8%80%E4%B8%AA%E5%BC%80%E7%AE%B1%E5%8D%B3%E7%94%A8%E7%9A%84%E8%B6%85%E7%BA%A7%E4%B8%9D%E6%BB%91%E7%9A%84%E6%BC%82%E4%BA%AEhexo%E5%8D%9A%E5%AE%A2%E7%BD%91%E7%AB%99/

    image-20231018074108055

    鸣谢

    文章来源:

    👍👍👍 感谢大佬开源的这么优秀的博客主题!

    大佬:http://blinkfox.com/

    🇺🇸English Document | 国内访问示例 (http://blinkfox.com) | Github 部署演示示例 (https://blinkfox.github.io) | QQ 交流群1(已满): 926552981 | QQ 交流群2(推荐): 971887688

    这是一个采用 Material Design响应式设计的 Hexo 博客主题。

    image-20231018071950759

    image-20231018072011598

    hexo简介

    hexo优缺点

    优点

    缺点

    👎 没有后台管理

    image-20231018124656233

    博客效果

    https://onedayxyy.cn/

    image-20231017063527516

    image-20231017063601459

    image-20231017063640362

    image-20231017063653007

    image-20231017063705400

    image-20231018071822658

    image-20231018071709009

    image-20231017063807591

    主题特性

    • 简单漂亮,文章内容美观易读
    • Material Design 设计
    • 响应式设计,博客在桌面端、平板、手机等设备上均能很好的展现
    • 首页轮播文章及每天动态切换 Banner 图片
    • 瀑布流式的博客文章列表(文章无特色图片时会有 24 张漂亮的图片代替)
    • 时间轴式的归档页
    • 词云的标签页和雷达图的分类页
    • 丰富的关于我页面(包括关于我、文章统计图、我的项目、我的技能、相册等)
    • 可自定义的数据的友情链接页面
    • 支持文章置顶和文章打赏
    • 支持 MathJax
    • TOC 目录
    • 可设置复制文章内容时追加版权信息
    • 可设置阅读文章时做密码验证
    • GitalkGitmentValineDisqus 评论模块(推荐使用 Gitalk
    • 集成了不蒜子统计、谷歌分析(Google Analytics)和文章字数统计等功能
    • 支持在首页的音乐播放和视频播放功能
    • 支持emoji表情,用markdown emoji语法书写直接生成对应的能跳跃的表情。
    • 支持 DaoVoiceTidio 在线聊天功能。

    image-20231018071950759

    版本迭代

    1.原版版本迭代

    参见 CHANGELOG.md

    • v2.0.0
      • 新增了对 Hexo 5.0.0 的支持,并推荐升级使用 Hexo 5.0.0,去除了对 hexo-prism-plugin 插件的依赖,可直接使用自带的 prismjs 插件;
      • 新增了背景图功能;
      • 新增了畅言、腾讯兔小巢、哔哔、 Artitalk 等评论或说说功能;
      • 开始阅读部分行为修改;
      • 修改了 TOC 目录高度为自适应;
      • 修复了搜索的相关问题;
      • 其他小问题修改;
    • v1.3.2
      • 新增了繁体字的支持;
      • 新增了 404 页面;
      • 其他小问题修改;
    • v1.3.1
      • 新增了 kbd 样式;
      • 修复了子目录部署时词云中链接有误的问题;
      • 移除了 TOC 中的竖线;
      • 修复了首页 icon 图标中的 tooltip 不显示的问题;
      • 修复生成静态文件时,每天切换 banner 不生效的问题;
      • 更新了 miniValine 中的一些配置;
    • v1.3.0
      • 新增了支持子目录部署的功能(如:Gitee);
      • 新增了 MiniValine 评论系统;
      • 新增了 jsdelivr 的支持;
      • 修复了诸多发现的 bug;
    • v1.2.2
      • 新增了自定义文章 keywords 的功能;
      • 新增静态彩带点击切换的功能和配置;
      • 将文章字数统计、彩带和站点运行时间等功能默认设置为 false
      • 修改了文章的 description 的 meta 属性优先读取文章的 summary 属性;
      • 修改了文章标题的 HTML 标签,从 div 改成了 h1 标题;
      • 修改了页脚年份显示不正确的问题;
      • 去掉了站点运行时间中多余的 setTimeout 代码;
    • v1.2.1
      • 新增了 TOC 的展开目录层级设置和滚动条功能,防止目录较多的时候目录溢出;
      • 修改了首页的展示方式为以前的模式;
      • 修复首页按钮没有边框的问题;
      • 修复了音乐及吸底模式、视频、推荐文章等不激活时仍然生成首页卡片的问题;
      • 修复 wordCount 插件未安装的问题,修改了部分配置;
      • 修复音乐的 JSON 配置中有单引号的情况页面不显示的音乐的问题
      • 修复标签云在Hexo4.0下链接失效的问题;
    • v1.2.0
      • 新增了 DaoVoiceTidio 的在线聊天功能;
      • 新增了两级菜单的功能;
      • 新增了打字效果的副标题;
      • 新增了网页内容预加载的功能;
      • 新增了首页 banner 是否每日切换的配置功能;
      • 新增了显示 ICP 备案信息的功能,默认未开启;
      • 新增了百度分析的配置;
      • 新增了代码块的语言显示、一键复制、显示行号等功能;
      • 新增了首页轮播图和推荐文章可自定义配置的功能;
      • 新增了文章页面显示更新日期;
      • 新增了转载规则的图标;
      • 修改了分享的布局和显示方式;
      • 升级更新了部分依赖库的版本;
      • 其他细节修改和优化;
    • v1.1.0
      • 新增了 emoji 的支持;
      • 新增了站点运行时间统计及配置;
      • 新增了留言板的功能,默认未开启;
      • 新增了 TwitterFacebook、知乎的社交链接;
      • 更新了 Valine 的版本为最新版;
      • 其他小细节的修改;
    • v1.0.4
      • 新增了能为每篇文章都自定义转载规则的功能;
      • 修复上一页、下一页的自定义 summary 不显示的问题;
      • 修复了友情链接显示错位的问题,改为了瀑布流的布局方式;
      • 其他小细节 bug 的修改;
    • v1.0.3
      • 新增了TOC展开、收缩的按钮和相关配置,默认显示此按钮;
    • v1.0.2
      • 升级了 Materialize 框架版本为1.0.0,重构和修改了升级过程中的部分文件或问题;
      • 新增了首页封面的全屏轮播特效,可以将更重要的文章设置到首页轮播中;
      • 修复首页第一个按钮是中文的问题
      • 修复了 iPhone 上点击搜索输入获取焦点的问题;
      • 修复了 iPhone 上输入框获取焦点后页面放大的问题;
      • 修复一些文章或 UI 显示问题;
    • v1.0.1
      • 调整 cssjs 的文件请求路径在主题的_config.yml中配置,便于你更快捷的配置自己的 CDN;
      • 新增代码是否折行为可配置,默认为折行;
      • 默认激活 TOC 功能,并新增为某篇文章关闭 TOCFront-matter 配置选项;
      • 修复文章滚动时,高亮的目录选项不准确的问题;
      • IOS下移除搜索框自动获得焦点属性,防止自动获得焦点后导致视图上移;
    • v1.0.0
      • 新增了所有基础功能;

    2.自己版本迭代

    image-20231018073002311

    1. v2.0.0-hexo-theme-matery-2023.10.18 -m “功能基本满足博客需求,使用体验极度丝滑”

    2. v2.0.0-hexo-theme-matery-2023.10.18 -m “将推送最新数据到公开库输出为一个脚本,可以一键执行”

      具体步骤见如下步骤:

      image-20231018124140307

    3. x

    贡献者

    感谢下面列出的贡献者,没有他们,hexo-theme-matery 不会这么完美。

    主题下载

    本主题推荐你使用 Hexo 5.0.0 及以上的版本。如果,你已经有一个自己的 Hexo 博客了,建议你将 Hexo 升级到最新稳定的版本。

    点击 这里 下载 master 分支的最新稳定版的代码,解压缩后,将 hexo-theme-matery 的文件夹复制到你 Hexo 的 themes 文件夹中即可。

    当然你也可以在你的 themes 文件夹下使用 git clone 命令来下载:

    git clone https://github.com/blinkfox/hexo-theme-matery.git
    
    • 1

    🚩 博客部署(超详细)

    更新于:2023年10月17日15:12:20

    前提条件

    • 具备nodejs、git环境;
    • 拥有github账号(或者gitee);
    • 具有1台云服务器;
    • 具有一个域名;(可选)

    实验环境

    hexo 5.3.0
    node v18.18.0
    win10
    
    • 1
    • 2
    • 3

    实验软件

    链接:https://pan.baidu.com/s/1cQ-u6eIDwLYLta9xUKkQUw?pwd=0820
    提取码:0820

    2023.10.18-hexo-theme-matery-实验软件

    image-20231018073942064

    image-20231018073846842

    1、安装hexo

    • 安装hexo

    在任何地方,单击鼠标右键,选择“git Bash”,然后在命令行里面输入npm install hexo -g:

    npm install hexo -g
    
    • 1

    image-20210516063239163

    次小部分,仅仅作为测试自己本地hexo的可用性,具体本次主题涉及配置,请看后文。

    • 配置本地hexo博客目录

    然后,选择一个位置(例如D盘),新建一个文件夹,例如“blog_github”,这个文件夹将是你的博客的根目录,以后与博客有关的所有文件都是存放在这里。进入你新建的这个文件夹,然后单击鼠标右键,打开git命令行(知道怎么打开吧,选择”git Bash”),输入hexo init,这个时候,你会发现多了很多文件夹。如下所示:

    hexo 初始化

    hexo init
    
    • 1

    image-20210516064342004

    安装插件:,在刚才打开的命令行里面输入npm install:

    image-20210516064524047

    见证奇迹的时刻

    接着我们输入hexo g生成静态网页,然后输入hexo s打开本地服务器,然后浏览器打开http://localhost:4000/,就可以预览我们的博客啦,如图:

    显示以下信息说明操作正确:

    INFO Hexo is running at http://0.0.0.0:4000/. Press Ctrl+C to stop.

    常用命令:
    Create a new post:
    	$ hexo new "My New Post"	
    Generate static files:
    	$ hexo generate == 简写hexo g
    Run server:
    	$ hexo server == 简写hexo s
    Deploy to remote sites:
    	$ hexo deploy == 简写hexo d
    	
    我们以后常用到的Hexo命令:
    $ hexo s等价于 hexo server #Hexo 会监视文件变动并自动更新,除修改站点配置文件外,无须重启服务器,直接刷新网页即可生效。
    $ hexo g 等价于 hexo generate #生成静态网页 (执行 $ hexo g后会在站点根目录下生成public文件夹, hexo会将”/blog/source/“ 下面的.md后缀的文件编译为.html后缀的文件,存放在”/blog/public/ “ 路径下)
    $ hexo d 等价于 hexo deploy #将本地数据部署到远端服务器(如github)
    $ hexo clean #清除缓存 ,网页正常情况下可以忽略此条命令,执行该指令后,会删掉站点根目录下的public文件夹
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    image-20210516064814703

    image-20210516064835538

    image-20210516064851308

    image-20210516064902124

    按ctrl+c关闭本地服务器。

    image-20210516071543151

    到目前为止,我们在本地创建博客框架的过程就完成了。

    2、部署rsync与nginx

    1.部署rsync

    rsync使用背景

    rsync在云服务器和本地pc端都要安装下,方面后续推送下本地pc的静态数据。

    winodws pc写好的东西,同步到linux服务器上,单向同步需求。

    1.ecs上配置rsync服务端
    • 服务端配置,安装rsync
    # 检查是否安装了 rsync
    rpm -qa|grep rsync
    
    # 如果没有安装的话,进行安装
    yum install rsync
    
    # 将 rsync 设置成开启自启,并启动
    systemctl enable rsyncd
    systemctl start rsyncd
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 修改rsync配置文件
    [root@mkdocs-server html]# vim /etc/rsyncd.conf
    # /etc/rsyncd: configuration file for rsync daemon mode
    
    # See rsyncd.conf man page for more options.
    
    # 进行通信的端口,如果 firewall 打开的话,需要将对应的端口添加进去
    port=8730
    
    # 日志文件
    log file=/var/log/rsync.log
    
    # rsync 的进程 id
    pid file=/var/run/rsync.pid
    
    # 要同步的模块,这里一般以项目名命名
    [cmi]
    
    # 同步的目标文件夹
    path=/root/rsync
    
    # rsync daemon 在传输前是否切换到指定的 path 目录下,并将其监禁在内,用于增加传输的安全性
    use chroot=no
    
    # 指定最大的连接数
    max connections=4
    
    # yes 表示只读本地文件无法同步到服务器
    read only=no
    
    # 客户端请求显示模块列表时,该模块是否显示出来
    list=true
    
    # 服务运行时的用户
    uid=root
    
    # 服务运行时的用户组
    gid=root
    
    # 进行验证时的用户名,必须是系统存在的用户
    auth users = root 
    
    # 连接用户时的密码
    secrets file=/etc/rsyncd.passwd
    
    # 允许的 ip
    hosts allow=*
    [root@mkdocs-server html]# 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47

    注意:

    # 同步的目标文件夹
    path=/root/rsync
    
    # 连接用户时的密码
    secrets file=/etc/rsyncd.passwd
    
    • 1
    • 2
    • 3
    • 4
    • 5
    # 1、创建目标的文件夹
    mkdir /root/rsync
    
    # 2、创建密码
    # 创建文件夹
    vim /etc/rsyncd.passwd
    # 写入密码
    echo "root:123456" > /etc/rsyncd.passwd #这里写入你自己云服务器的密码就行!!!
    
    #更改文件权限
    chmod 600 /etc/rsyncd.passwd
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    2.windows client上配置rsync
    • 下载地址

    https://www.itefix.net/cwrsync-client

    image-20230914223602245

    image-20230914223643864

    • 安装rsync

    双击安装。(将次软件的.exe文件路径添加到自己pc的PATH里。)

    3.winodws同步命令
    rsync.exe -avPzruh --delete --port 8730 --password-file=/cygdrive/D/password.txt /cygdrive/D/mkdocs/site root@47.97.48.237::cmi/
    
    • 1

    说明:

    #最新命令:
    rsync.exe -avPzruh --delete --port 8730 --password-file=/cygdrive/D/password.txt /cygdrive/D/mkdocs/site root@47.97.48.237::cmi/
    
    
    -a:归档模式,用于保持文件的属性、权限、时间戳等。
    -v:显示详细输出,让您了解文件同步的进度和操作。
    -p:显示文件传输的进度条和实时速度。
    -z:在传输过程中压缩数据,减少网络带宽的使用。
    -r:递归复制目录及其内容。
    -u:只复制源中更新或新增的文件到目标目录。
    -h:可读性大小。
    --delete:删除目标目录中不在源中存在的文件和目录。
    
    # cmi_password.txt 密码文件 写入 Linux 端配置的密码即可
    # cmi 指代模块,我们这边正好按照
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    image-20230914223936222

    ⚠️ 注意:

    下面就是 在 windows server 创建计划任务定时执行了。(目前暂不需要)

    自己的需求是:编写完文档后,一键执行上传操作。

    • 本次同步命令如下:

    最新的推送命令见下文。

    ::添加自己要执行的任务
    echo  Push winodws hexo static data to ecs...
    rsync.exe -avPzruh --delete --port 8730 --password-file=/cygdrive/D/password.txt /cygdrive/D/hexo/public root@47.97.48.237::cmi/
    
    • 1
    • 2
    • 3

    image-20231017125258749

    注意2个密码位置
    • ecs root密码

    image-20230916075442783

    • windows上存放ecs密码位置

    image-20230916075512684

    rsync部署参考文章

    https://blog.csdn.net/qq_39007838/article/details/127562636

    image-20230914204511865

    2.部署nginx

    在ecs上配置。

    • 部署
    yum install nginx -y
    
    systemctl enable nginx
    systemctl start nginx
    
    • 1
    • 2
    • 3
    • 4
    • 配置nginx

    http配置:

    [root@mkdocs-server ~]# vim  /etc/nginx/nginx.conf
    # For more information on configuration, see:
    #   * Official English Documentation: http://nginx.org/en/docs/
    #   * Official Russian Documentation: http://nginx.org/ru/docs/
    
    user root;
    worker_processes auto;
    error_log /var/log/nginx/error.log;
    pid /run/nginx.pid;
    
    # Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
    include /usr/share/nginx/modules/*.conf;
    
    events {
        worker_connections 1024;
    }
    
    http {
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  /var/log/nginx/access.log  main;
    
        sendfile            on;
        tcp_nopush          on;
        tcp_nodelay         on;
        keepalive_timeout   65;
        types_hash_max_size 4096;
    
        include             /etc/nginx/mime.types;
        default_type        application/octet-stream;
    
        # Load modular configuration files from the /etc/nginx/conf.d directory.
        # See http://nginx.org/en/docs/ngx_core_module.html#include
        # for more information.
        include /etc/nginx/conf.d/*.conf;
    
        server {
            listen       80;
            listen       [::]:80;
            server_name  onedayxyy.cn;
            #root         /usr/share/nginx/html;
            root         /root/rsync/public;
    
            # Load configuration files for the default server block.
            include /etc/nginx/default.d/*.conf;
    
            error_page 404 /404.html;
            location = /404.html {
            }
    
            error_page 500 502 503 504 /50x.html;
            location = /50x.html {
            }
        }
    
    # Settings for a TLS enabled server.
    #
    #    server {
    #        listen       443 ssl http2;
    #        listen       [::]:443 ssl http2;
    #        server_name  _;
    #        root         /usr/share/nginx/html;
    #
    #        ssl_certificate "/etc/pki/nginx/server.crt";
    #        ssl_certificate_key "/etc/pki/nginx/private/server.key";
    #        ssl_session_cache shared:SSL:1m;
    #        ssl_session_timeout  10m;
    #        ssl_ciphers HIGH:!aNULL:!MD5;
    #        ssl_prefer_server_ciphers on;
    #
    #        # Load configuration files for the default server block.
    #        include /etc/nginx/default.d/*.conf;
    #
    #        error_page 404 /404.html;
    #            location = /40x.html {
    #        }
    #
    #        error_page 500 502 503 504 /50x.html;
    #            location = /50x.html {
    #        }
    #    }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85

    image-20231017073350585

    https配置:

    注意:我这里的配置为最终版,配置了https、强制跳转https登配置,大家可以参考。

    配置效果如下图所示:

    image-20231016102446940

    完整配置如下:

    [root@hexo-blog ~]# cat  /etc/nginx/nginx.conf
    # For more information on configuration, see:
    #   * Official English Documentation: http://nginx.org/en/docs/
    #   * Official Russian Documentation: http://nginx.org/ru/docs/
    
    user root;
    worker_processes auto;
    error_log /var/log/nginx/error.log;
    pid /run/nginx.pid;
    
    # Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
    include /usr/share/nginx/modules/*.conf;
    
    events {
        worker_connections 1024;
    }
    
    http {
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  /var/log/nginx/access.log  main;
    
        sendfile            on;
        tcp_nopush          on;
        tcp_nodelay         on;
        keepalive_timeout   65;
        types_hash_max_size 4096;
    
        include             /etc/nginx/mime.types;
        default_type        application/octet-stream;
    
        # Load modular configuration files from the /etc/nginx/conf.d directory.
        # See http://nginx.org/en/docs/ngx_core_module.html#include
        # for more information.
        include /etc/nginx/conf.d/*.conf;
    
    #    server {
    #        listen       80;
    #        listen       [::]:80;
    #        server_name  onedayxyy.cn;
    #        #root         /usr/share/nginx/html;
    #        root         /root/rsync/public;
    #
    #        # Load configuration files for the default server block.
    #        include /etc/nginx/default.d/*.conf;
    #
    #        error_page 404 /404.html;
    #        location = /404.html {
    #        }
    #
    #        error_page 500 502 503 504 /50x.html;
    #        location = /50x.html {
    #        }
    #
    #        #将所有HTTP请求通过rewrite指令重定向到HTTPS。
    #       rewrite ^(.*)$ https://$host$1;
    #       location / {
    #               index index.html index.htm;
    #       }
    #
    #    }
    
    # Settings for a TLS enabled server.
    #
        server {
            listen       443 ssl http2;
            listen       [::]:443 ssl http2;
            server_name  www.onedayxyy.cn;
            root         /root/rsync/public;
    
            ssl_certificate "cert/www.onedayxyy.cn.pem";
            ssl_certificate_key "cert/www.onedayxyy.cn.key";
    
            ssl_session_cache shared:SSL:1m;
            ssl_session_timeout  10m;
            #ssl_ciphers HIGH:!aNULL:!MD5;
            #自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
            #TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
            ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
            ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    
            ssl_prefer_server_ciphers on;
    
            # Load configuration files for the default server block.
            include /etc/nginx/default.d/*.conf;
    
            error_page 404 /404.html;
                location = /40x.html {
            }
    
            error_page 500 502 503 504 /50x.html;
                location = /50x.html {
            }
    
    
        }
    
      server {
        listen 80;
        #填写证书绑定的域名
        server_name www.onedayxyy.cn;
        root         /root/rsync/public;
        #将所有HTTP请求通过rewrite指令重定向到HTTPS。
        rewrite ^(.*)$ https://$host$1;
        location / {
            index index.html index.htm;
        }
      }
    
    
    }
    
    [root@hexo-blog ~]#
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115

    修改完成后,按Esc键、输入**:wq并按Enter**键,保存修改后的配置文件并退出编辑模式。

    执行以下命令,重启Nginx服务。

    systemctl reload nginx
    
    • 1

    3、配置主题

    1.拉取hexo仓库
    • 另外,这里之前在github上创建了一个hexo-theme-matery-github-public类型仓库

    git@github.com:OnlyOnexl/hexo-theme-matery-github-public.git

    专门存放公开分享给别人的本主题最新配置,别人clone次仓库后,按照这个hexo博客部署文档,立马可以部署属于自己的一个博客。

    image-20231018073012157

    • 来到自己的d盘:

    拉取代码:

    git clone git@github.com:OnlyOnexl/hexo-theme-matery-github-public.git
    
    • 1

    image-20231017123908290

    2.获取node_modules内容
    • 本地创建一个临时目录来初始化,然后获取node_modules内容

    初始化命令:hexo init

    image-20231017121531605

    • 然后将生成的node_modules拷贝到hexo根目录下:/d/hexo

    image-20231017151850929

    • 提前安装好几个插件
    cd /d/hexo-theme-matery-github-public
    
    npm install hexo-generator-search --save
    npm install hexo-filter-github-emojis --save
    npm install hexo-generator-feed --save
    
    • 1
    • 2
    • 3
    • 4
    • 5

    注意:这里一定要提前安装好这3个插件,不然hexo-theme-matery里配置了插件内容,pc端没安装的话,这里运行会报错的!

    • 安装好本主题后,运行hexo s命令进行测试

    image-20231017125619417

    image-20231017125600642

    4、github多端同步

    github多端同步

    image-20231017210529461

    • github上创建github-hexo-blog-private私有仓库

    image-20231017065913021

    • 推送本地数据到github仓库

    注意:这里利用github的是有仓库来保存自己的本地所有博客元数据、hexo配置数据。

    echo "# github-hexo-blog-private" >> README.md
    git init
    git add -A
    git commit -m "first commit"
    git branch -M main
    git remote add origin git@github.com:OnlyOnexl/github-hexo-blog-private.git
    git push -u origin main
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    image-20231017071113775

    image-20231017071050383

    image-20231017071146844

    自己如何更新公开库
    v1-手动版

    虽然要手动操作一些,但是还可以接受的。

    image-20231017210329409

    image-20231017213022370

    将如下/d/hexo目录下涉及文件全部拷贝到/d/hexo-theme-matery-github-public目录下,然后删除D:\hexo-theme-matery-github-public\source\_posts目录下多余的文件,删除D:\hexo-theme-matery-github-public\source\images目录里自己原来的md本地图片,提交即可。

    image-20231017204132949

    image-20231017204744600

    image-20231017204656584

    image-20231017204720068

    提交:

    git pull
    git add -A
    git commit -m "push-hexo-theme-matery"
    git push
    
    • 1
    • 2
    • 3
    • 4

    image-20231017205121346

    在github仓库里做好tag:

    image-20231017205916144

    $ git tag -a v1-hexo-theme-matery-2023.10.17 -m "v1-hexo-theme-matery-2023.10.17"
    $ git push origin v1-hexo-theme-matery-2023.10.17
    
    • 1
    • 2

    image-20231017205819192

    image-20231017205830069

    验证:

    image-20231017205953720

    📌 次部分代码汇总:

    cd /d/hexo-theme-matery-github-public
    git pull
    git add -A
    git commit -m "push-hexo-theme-matery"
    git push 
    git tag -a v2-hexo-theme-matery-2023.10.17 -m "v2-hexo-theme-matery-2023.10.17"
    git push origin v2-hexo-theme-matery-2023.10.17
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    v2-脚本版(推荐)

    以下脚本可以实现的需求是:

    我能够一键将本地博客源代码推送到自己的公开库,特别方便。

    • 在自己pc的d盘创建如下目录;
    mkdir  -p /d/hexo-tmp  
    
    • 1
    • 然后将本次代码写到/etc/profile
    #hexo-theme-matery-github-public推送命令
    alias pp="""
    #mkdir  -p /d/hexo-tmp  
    rm -rf /d/hexo-tmp/*
    
    cd /d/hexo-theme-matery-github-public
    
    cp /d/hexo/_config.landscape.yml /d/hexo-tmp
    cp /d/hexo/_config.yml /d/hexo-tmp
    cp /d/hexo/CNAME /d/hexo-tmp
    cp /d/hexo/db.json /d/hexo-tmp
    cp /d/hexo/package.json /d/hexo-tmp
    cp /d/hexo/package-lock.json /d/hexo-tmp
    cp -R /d/hexo/public /d/hexo-tmp
    cp -R /d/hexo/resource /d/hexo-tmp
    cp -R /d/hexo/scaffolds /d/hexo-tmp
    cp -R /d/hexo/source /d/hexo-tmp
    cp -R /d/hexo/themes /d/hexo-tmp
    cp -R /d/hexo/xyy /d/hexo-tmp
    
    cd /d/hexo-theme-matery-github-public
    
    rm -rf  /d/hexo-theme-matery-github-public/_config.landscape.yml
    rm -rf  /d/hexo-theme-matery-github-public/_config.yml
    rm -rf  /d/hexo-theme-matery-github-public/CNAME
    rm -rf  /d/hexo-theme-matery-github-public/db.json
    rm -rf  /d/hexo-theme-matery-github-public/package.json
    rm -rf  /d/hexo-theme-matery-github-public/package-lock.json
    rm -rf   /d/hexo-theme-matery-github-public/public
    rm -rf   /d/hexo-theme-matery-github-public/resource
    rm -rf   /d/hexo-theme-matery-github-public/scaffolds
    rm -rf   /d/hexo-theme-matery-github-public/source
    rm -rf   /d/hexo-theme-matery-github-public/themes
    rm -rf   /d/hexo-theme-matery-github-public/xyy
    rm -rf   /d/hexo-theme-matery-github-public/README.md
    
    mv  /d/hexo-tmp/* /d/hexo-theme-matery-github-public/
    rm -rf /d/hexo-theme-matery-github-public/source/_posts/*
    rm -rf /d/hexo-theme-matery-github-public/source/images/*
    mv /d/hexo-theme-matery-github-public/resource/README.md /d/hexo-theme-matery-github-public
    mv /d/hexo-theme-matery-github-public/resource/2022.1.25-我如果爱你.md /d/hexo-theme-matery-github-public/source/_posts
    mv /d/hexo-theme-matery-github-public/resource/xyy.png /d/hexo-theme-matery-github-public/source/images
    
    cd /d/hexo-theme-matery-github-public
    git pull
    git add -A
    git commit -m "push-hexo-theme-matery"
    git push 
    git tag -d v2.0.0-hexo-theme-matery-2023.10.18
    git push --delete origin v2.0.0-hexo-theme-matery-2023.10.18
    
    git tag -a v2.0.0-hexo-theme-matery-2023.10.18 -m "功能基本满足博客需求,使用体验极度丝滑"
    git push origin v2.0.0-hexo-theme-matery-2023.10.18
    """
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54

    本次新创建如下资源文件:

    image-20231018123818637

    • 测试效果

    执行pp命令

    image-20231018123858114

    image-20231018123917764

    image-20231018124022150

    image-20231018124048066

    image-20231018124059974

    完美实现需求。😘

    5、创建一键推送脚本

    在hexo根目录下创建如下脚本文件:

    image-20231017073742487

    hexo.bat

    ::添加自己要执行的任务
    echo  Push winodws hexo static data to ecs...
    rsync.exe -avPzruh --delete --port 8730 --password-file=/cygdrive/D/password.txt /cygdrive/D/hexo/public root@47.97.48.237::cmi/
    
    • 1
    • 2
    • 3

    profile.sh

    $ vim /etc/profile
    
    #一键推送并上传
    alias xyy='''
    sh /d/hexo/xyy/xyy.sh
    '''
    
    #本地构建hexo静态数据
    alias hg='''
    cd /d/hexo
    hexo g
    '''
    
    #本地构建hexo
    alias hs='''
    cd /d/hexo
    hexo s
    '''
    
    alias push="""
    cd /d/hexo
    git status
    echo "!"
    git pull
    echo "!"
    git add -A
    git commit -m "push-hexo-blog-metadata"
    git push
    echo "!"
    xyy
    git status
    echo "!"
    xyy
    """
    
    alias pull="""
    cd /d/hexo
    git pull
    """
    
    alias gs="""
    cd /d/hexo
    git status
    """
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    xyy.sh

    #!/bin/sh
    
    cd /d/hexo/ && hexo g
    echo "hexo: hexo本地数据拷贝&构建成功!"
    
    echo ""
    echo ""
    echo "推送winodws site数据到ecs:"
    echo "-------------------------------------------------------------------"
    echo "x"
    echo "y"
    echo "y"
    echo "我"
    echo "想"
    echo "你"
    echo "-------------------------------------------------------------------"
    
    /d/hexo/xyy/hexo.bat
    echo "rsync: rsync数据winodws-->ecs推送成功!"
    echo ""
    echo ""
    
    echo "重新加载ecs上nginx进程:"
    echo "-------------------------------------------------------------------"
    echo "x"
    echo "y"
    echo "y"
    echo "我"
    echo "想"
    echo "你"
    echo "-------------------------------------------------------------------"
    
    ssh root@47.97.48.237 'systemctl reload nginx'
    echo "hexo: ecs上部署站点成功!"
    echo " "
    echo " "
    
    echo "汇总hexo数据目录大小:"
    echo "winodws上hexo元数据总大小:"
    du -sh /d/hexo/source|awk '{print $1}'
    
    echo "!"
    echo "winodws上site大小:"
    du -sh /d/hexo/public|awk '{print $1}'
    
    echo "ecs上hexo静态数据大小:"
    ssh root@47.97.48.237 du -sh /root/rsync/public |awk '{print $1}'
    
    echo "-------------------------------------------------------------------"
    echo "xyy, i miss you!"
    echo "-------------------------------------------------------------------"
    echo "推送结束!"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52

    记得在自己的winodws的linux环境下配置/etc/profile文件:

    image-20231017151204203

    6、测试

    • 自己本地博客数据

    image-20231017152524247

    • 博客部署,测试正常

    image-20231017074112894

    • 博客元数据推送,测试正常

    image-20231017152613251

    image-20231017152650663

    • 访问博客,测试正常

    https://onedayxyy.cn/

    image-20231017063527516

    至此,部署完成,欢迎享用。

    具体配置

    切换主题

    修改 Hexo 根目录下的 _config.ymltheme 的值:theme: hexo-theme-matery

    _config.yml 文件的其它修改建议:
    • 请修改 _config.ymlurl 的值为你的网站主 URL(如:http://xxx.github.io)。
    • 建议修改两个 per_page 的分页条数值为 6 的倍数,如:1218 等,这样文章列表在各个屏幕下都能较好的显示。
    • 如果你是中文用户,则建议修改 language 的值为 zh-CN

    新建分类 categories 页

    categories 页是用来展示所有分类的页面,如果在你的博客 source 目录下还没有 categories/index.md 文件,那么你就需要新建一个,命令如下:

    hexo new page "categories"
    
    • 1

    编辑你刚刚新建的页面文件 /source/categories/index.md,至少需要以下内容:

    ---
    title: categories
    date: 2018-09-30 17:25:30
    type: "categories"
    layout: "categories"
    ---
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    新建标签 tags 页

    tags 页是用来展示所有标签的页面,如果在你的博客 source 目录下还没有 tags/index.md 文件,那么你就需要新建一个,命令如下:

    hexo new page "tags"
    
    • 1

    编辑你刚刚新建的页面文件 /source/tags/index.md,至少需要以下内容:

    ---
    title: tags
    date: 2018-09-30 18:23:38
    type: "tags"
    layout: "tags"
    ---
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    新建关于我 about 页

    about 页是用来展示关于我和我的博客信息的页面,如果在你的博客 source 目录下还没有 about/index.md 文件,那么你就需要新建一个,命令如下:

    hexo new page "about"
    
    • 1

    编辑你刚刚新建的页面文件 /source/about/index.md,至少需要以下内容:

    ---
    title: about
    date: 2018-09-30 17:25:30
    type: "about"
    layout: "about"
    ---
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    新建留言板 contact 页(可选的)

    contact 页是用来展示留言板信息的页面,如果在你的博客 source 目录下还没有 contact/index.md 文件,那么你就需要新建一个,命令如下:

    hexo new page "contact"
    
    • 1

    编辑你刚刚新建的页面文件 /source/contact/index.md,至少需要以下内容:

    ---
    title: contact
    date: 2018-09-30 17:25:30
    type: "contact"
    layout: "contact"
    ---
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    :本留言板功能依赖于第三方评论系统,请激活你的评论系统才有效果。并且在主题的 _config.yml 文件中,第 1921 行的“菜单”配置,取消关于留言板的注释即可。

    新建友情链接 friends 页(可选的)

    friends 页是用来展示友情链接信息的页面,如果在你的博客 source 目录下还没有 friends/index.md 文件,那么你就需要新建一个,命令如下:

    hexo new page "friends"
    
    • 1

    编辑你刚刚新建的页面文件 /source/friends/index.md,至少需要以下内容:

    ---
    title: friends
    date: 2018-12-12 21:25:30
    type: "friends"
    layout: "friends"
    ---
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    同时,在你的博客 source 目录下新建 _data 目录,在 _data 目录中新建 friends.json 文件,文件内容如下所示:

    [{
        "avatar": "http://image.luokangyuan.com/1_qq_27922023.jpg",
        "name": "码酱",
        "introduction": "我不是大佬,只是在追寻大佬的脚步",
        "url": "http://luokangyuan.com/",
        "title": "前去学习"
    }, {
        "avatar": "http://image.luokangyuan.com/4027734.jpeg",
        "name": "闪烁之狐",
        "introduction": "编程界大佬,技术牛,人还特别好,不懂的都可以请教大佬",
        "url": "https://blinkfox.github.io/",
        "title": "前去学习"
    }, {
        "avatar": "http://image.luokangyuan.com/avatar.jpg",
        "name": "ja_rome",
        "introduction": "平凡的脚步也可以走出伟大的行程",
        "url": "https://me.csdn.net/jlh912008548",
        "title": "前去学习"
    }]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    新建 404 页

    如果在你的博客 source 目录下还没有 404.md 文件,那么你就需要新建一个

    hexo new page 404
    
    • 1

    编辑你刚刚新建的页面文件 /source/404/index.md,至少需要以下内容:

    ---
    title: 404
    date: 2018-09-30 17:25:30
    type: "404"
    layout: "404"
    description: "Oops~,我崩溃了!找不到你想要的页面 :("
    ---
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    菜单导航配置

    配置基本菜单导航的名称、路径url和图标icon.

    1.菜单导航名称可以是中文也可以是英文(如:Index主页)
    2.图标icon 可以在Font Awesome 中查找

    menu:
      Index:
        url: /
        icon: fas fa-home
      Tags:
        url: /tags
        icon: fas fa-tags
      Categories:
        url: /categories
        icon: fas fa-bookmark
      Archives:
        url: /archives
        icon: fas fa-archive
      About:
        url: /about
        icon: fas fa-user-circle
      Friends:
        url: /friends
        icon: fas fa-address-book
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    二级菜单配置方法

    如果你需要二级菜单则可以在原基本菜单导航的基础上如下操作

    1. 在需要添加二级菜单的一级菜单下添加children关键字(如:About菜单下添加children)
    2. children下创建二级菜单的 名称name,路径url和图标icon.
    3. 注意每个二级菜单模块前要加 -.
    4. 注意缩进格式
    menu:
      Index:
        url: /
        icon: fas fa-home
      Tags:
        url: /tags
        icon: fas fa-tags
      Categories:
        url: /categories
        icon: fas fa-bookmark
      Archives:
        url: /archives
        icon: fas fa-archive
      About:
        url: /about
        icon: fas fa-user-circle-o
      Friends:
        url: /friends
        icon: fas fa-address-book
      Medias:
        icon: fas fa-list
        children:
          - name: Music
            url: /music
            icon: fas fa-music
          - name: Movies
            url: /movies
            icon: fas fa-film
          - name: Books
            url: /books
            icon: fas fa-book
          - name: Galleries
            url: /galleries
            icon: fas fa-image
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    执行 hexo clean && hexo g 重新生成博客文件,然后就可以在文章中对应位置看到你用emoji语法写的表情了。

    代码高亮

    从 Hexo5.0 版本开始自带了 prismjs 代码语法高亮的支持,本主题对此进行了改造支持。

    如果你的博客中曾经安装过 hexo-prism-plugin 的插件,那么你须要执行 npm uninstall hexo-prism-plugin 来卸载掉它,否则生成的代码中会有 {} 的转义字符。

    然后,修改 Hexo 根目录下 _config.yml 文件中 highlight.enable 的值为 false,并将 prismjs.enable 的值设置为 true,主要配置如下:

    highlight:
      enable: false
      line_number: true
      auto_detect: false
      tab_replace: ''
      wrap: true
      hljs: false
    prismjs:
      enable: true
      preprocess: true
      line_number: true
      tab_replace: ''
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    主题中默认的 prismjs 主题是 Tomorrow Night,如果你想定制自己的主题,可以前往 prismjs 下载页面 定制下载自己喜欢的主题 css 文件,然后将此 css 主题文件取名为 prism.css,替换掉 hexo-theme-matery 主题文件夹中的 source/libs/prism/prism.css 文件即可。

    搜索

    本主题中还使用到了 hexo-generator-search 的 Hexo 插件来做内容搜索,安装命令如下:

    npm install hexo-generator-search --save
    
    • 1

    在 Hexo 根目录下的 _config.yml 文件中,新增以下的配置项:

    search:
      path: search.xml
      field: post
    
    • 1
    • 2
    • 3

    中文链接转拼音(建议安装)

    如果你的文章名称是中文的,那么 Hexo 默认生成的永久链接也会有中文,这样不利于 SEO,且 gitment 评论对中文链接也不支持。我们可以用 hexo-permalink-pinyin Hexo 插件使在生成文章时生成中文拼音的永久链接。

    安装命令如下:

    npm i hexo-permalink-pinyin --save
    
    • 1

    在 Hexo 根目录下的 _config.yml 文件中,新增以下的配置项:

    permalink_pinyin:
      enable: true
      separator: '-' # default: '-'
    
    • 1
    • 2
    • 3

    :除了此插件外,hexo-abbrlink 插件也可以生成非中文的链接。

    文章字数统计插件(建议安装)

    如果你想要在文章中显示文章字数、阅读时长信息,可以安装 hexo-wordcount插件。

    安装命令如下:

    npm i --save hexo-wordcount
    
    • 1

    然后只需在本主题下的 _config.yml 文件中,将各个文章字数相关的配置激活即可:

    postInfo:
      date: true
      update: false
      wordCount: false # 设置文章字数统计为 true.
      totalCount: false # 设置站点文章总字数统计为 true.
      min2read: false # 阅读时长.
      readCount: false # 阅读次数.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    添加emoji表情支持(可选的)

    本主题新增了对emoji表情的支持,使用到了 hexo-filter-github-emojis 的 Hexo 插件来支持 emoji表情的生成,把对应的markdown emoji语法(::,例如::smile:)转变成会跳跃的emoji表情,安装命令如下:

    npm install hexo-filter-github-emojis --save
    
    • 1

    在 Hexo 根目录下的 _config.yml 文件中,新增以下的配置项:

    githubEmojis:
      enable: true
      className: github-emoji
      inject: true
      styles:
      customEmojis:
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    添加 RSS 订阅支持(可选的)

    本主题中还使用到了 hexo-generator-feed 的 Hexo 插件来做 RSS,安装命令如下:

    npm install hexo-generator-feed --save
    
    • 1

    在 Hexo 根目录下的 _config.yml 文件中,新增以下的配置项:

    feed:
      type: atom
      path: atom.xml
      limit: 20
      hub:
      content:
      content_limit: 140
      content_limit_delim: ' '
      order_by: -date
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    执行 hexo clean && hexo g 重新生成博客文件,然后在 public 文件夹中即可看到 atom.xml 文件,说明你已经安装成功了。

    添加 DaoVoice 在线聊天功能(可选的)

    前往 DaoVoice 官网注册并且获取 app_id,并将 app_id 填入主题的 _config.yml 文件中。

    添加 Tidio 在线聊天功能(可选的)

    前往 Tidio 官网注册并且获取 Public Key,并将 Public Key 填入主题的 _config.yml 文件中。

    修改页脚

    页脚信息可能需要做定制化修改,而且它不便于做成配置信息,所以可能需要你自己去再修改和加工。修改的地方在主题文件的 /layout/_partial/footer.ejs 文件中,包括站点、使用的主题、访问量等。

    修改社交链接

    在主题的 _config.yml 文件中,默认支持 QQGitHub 和邮箱等的配置,你可以在主题文件的 /layout/_partial/social-link.ejs 文件中,新增、修改你需要的社交链接地址,增加链接可参考如下代码:

    <% if (theme.socialLink.github) { %>
        <a href="<%= theme.socialLink.github %>" class="tooltipped" target="_blank" data-tooltip="访问我的GitHub" data-position="top" data-delay="50">
            <i class="fab fa-github">i>
        a>
    <% } %>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    其中,社交图标(如:fa-github)你可以在 Font Awesome 中搜索找到。以下是常用社交图标的标识,供你参考:

    • Facebook: fab fa-facebook
    • Twitter: fab fa-twitter
    • Google-plus: fab fa-google-plus
    • Linkedin: fab fa-linkedin
    • Tumblr: fab fa-tumblr
    • Medium: fab fa-medium
    • Slack: fab fa-slack
    • Sina Weibo: fab fa-weibo
    • Wechat: fab fa-weixin
    • QQ: fab fa-qq
    • Zhihu: fab fa-zhihu

    注意: 本主题中使用的 Font Awesome 版本为 5.11.0

    修改打赏的二维码图片

    在主题文件的 source/medias/reward 文件中,你可以替换成你的的微信和支付宝的打赏二维码图片。

    配置音乐播放器(可选的)

    要支持音乐播放,在主题的 _config.yml 配置文件中激活music配置即可:

    # 是否在首页显示音乐
    music:
      enable: true
      title:     	    # 非吸底模式有效
        enable: true
        show: 听听音乐
      server: netease   # require music platform: netease, tencent, kugou, xiami, baidu
      type: playlist    # require song, playlist, album, search, artist
      id: 503838841     # require song id / playlist id / album id / search keyword
      fixed: false      # 开启吸底模式
      autoplay: false   # 是否自动播放
      theme: '#42b983'
      loop: 'all'       # 音频循环播放, 可选值: 'all', 'one', 'none'
      order: 'random'   # 音频循环顺序, 可选值: 'list', 'random'
      preload: 'auto'   # 预加载,可选值: 'none', 'metadata', 'auto'
      volume: 0.7       # 默认音量,请注意播放器会记忆用户设置,用户手动设置音量后默认音量即失效
      listFolded: true  # 列表默认折叠
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    server可选netease(网易云音乐),tencent(QQ音乐),kugou(酷狗音乐),xiami(虾米音乐),

    baidu(百度音乐)。

    type可选song(歌曲),playlist(歌单),album(专辑),search(搜索关键字),artist(歌手)

    id获取方法示例: 浏览器打开网易云音乐,点击我喜欢的音乐歌单,浏览器地址栏后面会有一串数字,playlistid

    即为这串数字。

    文章 Front-matter 介绍

    Front-matter 选项详解

    Front-matter 选项中的所有内容均为非必填的。但我仍然建议至少填写 titledate 的值。

    配置选项默认值描述
    titleMarkdown 的文件标题文章标题,强烈建议填写此选项
    date文件创建时的日期时间发布时间,强烈建议填写此选项,且最好保证全局唯一
    author_config.yml 中的 author文章作者
    imgfeatureImages 中的某个值文章特征图,推荐使用图床(腾讯云、七牛云、又拍云等)来做图片的路径.如: http://xxx.com/xxx.jpg
    toptrue推荐文章(文章是否置顶),如果 top 值为 true,则会作为首页推荐文章
    coverfalsev1.0.2版本新增,表示该文章是否需要加入到首页轮播封面中
    coverImgv1.0.2版本新增,表示该文章在首页轮播封面需要显示的图片路径,如果没有,则默认使用文章的特色图片
    password文章阅读密码,如果要对文章设置阅读验证密码的话,就可以设置 password 的值,该值必须是用 SHA256 加密后的密码,防止被他人识破。前提是在主题的 config.yml 中激活了 verifyPassword 选项
    toctrue是否开启 TOC,可以针对某篇文章单独关闭 TOC 的功能。前提是在主题的 config.yml 中激活了 toc 选项
    mathjaxfalse是否开启数学公式支持 ,本文章是否开启 mathjax,且需要在主题的 _config.yml 文件中也需要开启才行
    summary文章摘要,自定义的文章摘要内容,如果这个属性有值,文章卡片摘要就显示这段文字,否则程序会自动截取文章的部分内容作为摘要
    categories文章分类,本主题的分类表示宏观上大的分类,只建议一篇文章一个分类
    tags文章标签,一篇文章可以多个标签
    keywords文章标题文章关键字,SEO 时需要
    reprintPolicycc_by文章转载规则, 可以是 cc_by, cc_by_nd, cc_by_sa, cc_by_nc, cc_by_nc_nd, cc_by_nc_sa, cc0, noreprint 或 pay 中的一个

    注意:

    1. 如果 img 属性不填写的话,文章特色图会根据文章标题的 hashcode 的值取余,然后选取主题中对应的特色图片,从而达到让所有文章的特色图各有特色
    2. date 的值尽量保证每篇文章是唯一的,因为本主题中 GitalkGitment 识别 id 是通过 date 的值来作为唯一标识的。
    3. 如果要对文章设置阅读验证密码的功能,不仅要在 Front-matter 中设置采用了 SHA256 加密的 password 的值,还需要在主题的 _config.yml 中激活了配置。有些在线的 SHA256 加密的地址,可供你使用:开源中国在线工具chahuo站长工具
    4. 您可以在文章md文件的 front-matter 中指定 reprintPolicy 来给单个文章配置转载规则

    以下为文章的 Front-matter 示例。

    最简示例
    ---
    title: typora-vue-theme主题介绍
    date: 2018-09-07 09:25:00
    ---
    
    • 1
    • 2
    • 3
    • 4
    最全示例
    ---
    title: typora-vue-theme主题介绍
    date: 2018-09-07 09:25:00
    author: 赵奇
    img: /source/images/xxx.jpg
    top: true
    cover: true
    coverImg: /images/1.jpg
    password: 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92
    toc: false
    mathjax: false
    summary: 这是你自定义的文章摘要内容,如果这个属性有值,文章卡片摘要就显示这段文字,否则程序会自动截取文章的部分内容作为摘要
    categories: Markdown
    tags:
      - Typora
      - Markdown
    ---
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    自定制修改

    在本主题的 _config.yml 中可以修改部分自定义信息,有以下几个部分:

    • 菜单
    • 我的梦想
    • 首页的音乐播放器和视频播放器配置
    • 是否显示推荐文章名称和按钮配置
    • faviconLogo
    • 个人信息
    • TOC 目录
    • 文章打赏信息
    • 复制文章内容时追加版权信息
    • MathJax
    • 文章字数统计、阅读时长
    • 点击页面的’爱心’效果
    • 我的项目
    • 我的技能
    • 我的相册
    • GitalkGitmentValinedisqus 评论配置
    • 不蒜子统计和谷歌分析(Google Analytics
    • 默认特色图的集合。当文章没有设置特色图时,本主题会根据文章标题的 hashcode 值取余,来选择展示对应的特色图

    我认为个人博客应该都有自己的风格和特色。如果本主题中的诸多功能和主题色彩你不满意,可以在主题中自定义修改,很多更自由的功能和细节点的修改难以在主题的 _config.yml 中完成,需要修改源代码才来完成。以下列出了可能对你有用的地方:

    1、修改主题颜色

    在主题文件的 /source/css/matery.css 文件中,搜索 .bg-color 来修改背景颜色:

    /* 整体背景颜色,包括导航、移动端的导航、页尾、标签页等的背景颜色. */
    .bg-color {
        background-image: linear-gradient(to right, #4cbf30 0%, #0f9d58 100%);
    }
    
    @-webkit-keyframes rainbow {
       /* 动态切换背景颜色. */
    }
    
    @keyframes rainbow {
        /* 动态切换背景颜色. */
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    2、修改 banner 图和文章特色图

    你可以直接在 /source/medias/banner 文件夹中更换你喜欢的 banner 图片,主题代码中是每天动态切换一张,只需 7 张即可。

    如果你会 JavaScript 代码,可以修改成你自己喜欢切换逻辑,如:随机切换等,banner 切换的代码位置在 /layout/_partial/bg-cover-content.ejs 文件的 代码中:

    $('.bg-cover').css('background-image', 'url(/medias/banner/' + new Date().getDay() + '.jpg)');
    
    • 1

    /source/medias/featureimages 文件夹中默认有 24 张特色图片,你可以再增加或者减少,并需要在 _config.yml 做同步修改。

    存在问题

    新需求

    其它知识

    hexo基础数据

    hexo博客刚初始化完成,最基础数据文件如下:

    image-20231017064858084

    如何升级/回退hexo版本

    已成功测试。(2023年10月18日)

    要利用npm升级Hexo版本,可以按照以下步骤进行操作:

    1. 打开命令行终端,并进入你的Hexo博客项目的根目录。

    2. 运行以下命令来检查当前Hexo版本以及可用的Hexo版本:

      hexo version
      npm show hexo version
      
      • 1
      • 2

      image-20231018055739774

    3. 确定可用的Hexo版本后,运行以下命令来安装最新版本的Hexo:

      npm install hexo@最新版本号 --save
      
      #本次执行命令:
      npm install hexo@7.0.0-rc2 --save
      
      • 1
      • 2
      • 3
      • 4

      把"最新版本号"替换为你希望安装的Hexo版本号。

      image-20231018055902701

    4. 等待npm安装完毕,安装过程可能会花费一些时间。

    5. 安装完成后,运行以下命令来验证Hexo是否成功升级:

      hexo version
      
      • 1

      如果输出显示了你刚刚安装的Hexo版本号,则说明升级成功。

      image-20231018055922495

    请注意,升级Hexo版本可能对你的博客项目造成一定影响,建议在升级前备份你的项目文件以防止意外情况发生。

    • 尴尬,升级后博客出现了问题。。。

    image-20231018061824874

    这里开始回退版本。

    • 如何查看hexo 5.x具体有哪些版本?

    要查看 Hexo 5.x 的具体版本号,您可以使用 npm 的 version 命令来获取所有可用的版本列表。请按照以下步骤进行操作:

    1. 打开终端或命令提示符窗口。

    2. 输入以下命令并按回车键运行:

      npm show hexo@5 versions
      
      • 1
    3. 等待片刻,npm 将显示 Hexo 5.x 的所有可用版本号。

      示例输出:

      [
        '5.0.0',
        '5.0.1',
        '5.1.0',
        '5.2.0',
        ...
      ]
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7

    以上命令将列出 Hexo 5.x 的所有版本号。您可以基于此列表选择您想要回退到的特定版本。

    image-20231018062222545

    • 回退版本

    npm如何回退hexo到指定的5.x版本?

    要回退到指定的 Hexo 5.x 版本,您可以使用 npm 命令来实现。首先,您需要打开终端或命令提示符窗口,并确保您的计算机上已安装了 Node.js 和 npm。

    然后,执行以下命令以安装指定版本的 Hexo:

    npm install -g hexo@5.x.x
    
    • 1

    请将 “5.x.x” 替换为您想要安装的具体版本号,例如 “5.3.0”。

    此命令将全局安装指定版本的 Hexo。安装完成后,您就可以使用新安装的 Hexo 版本了。

    注意:请确保你了解要回退到的具体版本的功能和兼容性,并且根据您的项目需求进行选择。

    本次先回退到5.3.0:

    查看当前版本:

    image-20231018062342699

    回退:

    npm install -g hexo@5.3.0
    
    • 1

    image-20231018062417324

    验证:没有效果。。。

    image-20231018062641406

    • 但是回退后,没有效果,这是为什么呢?

    如果您按照上述步骤成功安装了指定版本的 Hexo,但回退后没有生效,可能是因为在全局安装的 Hexo 版本与项目本地安装的 Hexo 版本冲突了。

    在这种情况下,您需要确保在项目目录中使用与全局安装的 Hexo 版本相匹配的本地版本。您可以按照以下步骤执行:

    1. 进入您的 Hexo 项目目录:

      cd /path/to/hexo-project
      
      • 1
    2. 在项目目录中,使用以下命令安装或更新 Hexo 5.x 版本:

      npm install hexo@5.x.x
      
      • 1

      这里的 “5.x.x” 应替换为您想要安装的具体版本号。

    3. 确保在项目目录中使用的是正确的 Hexo 版本,而不是全局安装的版本。

    请注意,在项目目录中安装 Hexo 后,您可能需要更新或重新配置一些 Hexo 插件或主题,以确保与所选择的 Hexo 版本兼容。

    我当时就是在项目下回退的。。。

    • 在全局执行此回退命令:npm install -g hexo@5.3.0

    image-20231018062841595

    验证:

    还是这样,没生效。。。

    image-20231018062915523

    • 我打算删除当前最新hexo版本7.0.0-rc2,然后安装hexo老版本5.3.0

    如何利用npm卸载hexo软件?

    要使用 npm 进行 Hexo 软件的卸载,您可以按照以下步骤进行操作:

    1. 打开终端或命令提示符窗口。

    2. 通过以下命令进入您的 Hexo 项目目录:

      cd /path/to/hexo-project
      
      • 1

      这里的 “/path/to/hexo-project” 应替换为您实际 Hexo 项目所在的路径。

    3. 在项目目录中,使用以下命令卸载 Hexo:

      npm uninstall hexo
      
      • 1
    4. 确认卸载操作后,npm 将开始卸载 Hexo 软件及其相关依赖。

    5. 等待卸载过程完成。这可能需要一些时间,具体时间取决于您的计算机性能和 Hexo 软件的大小。

    6. 卸载完成后,您可以关闭终端或命令提示符窗口。

    请注意,使用 npm 卸载 Hexo 仅会移除 Hexo 的包及其依赖,这不会删除您的项目文件和数据。如果您想要完全删除 Hexo 项目,请手动删除项目文件夹。另外,如果您在全局范围内安装了 Hexo,请使用 npm uninstall -g hexo 命令来卸载全局安装的 Hexo 软件。

    开始卸载:

    全局卸载:

    image-20231018063402633

    项目下卸载:

    image-20231018063444893

    • 全局安装hexo5.3.0
    npm install -g hexo@5.3.0
    
    • 1

    image-20231018063610949

    全局安装hexo后,进到hexo项目根目录后,查看hexo版本时,此时报错:

    image-20231018063746972

    按所给命令执行,查看效果:

    image-20231018063823935

    image-20231018063837458

    还是报错,这里在项目根目录下继续手动安装下hexo5.3.0版本:

    image-20231018063938424

    还是报错。。。大无语了。😥

    • 然而,我在自己原来拷贝的hexo目录里再次运行hexo博客,这次就没事儿了

    image-20231018064540729

    image-20231018064601882

    • 这里,我删除/d/hexo目录,然后把刚才测试好的目录直接拷贝到/d/hexo下,再次观察效果(注意这里我要把一直在持续编辑的博客源数据也一起拷贝过去)

    拷贝后,再次执行hexo命令就正常了:

    image-20231018065140666

    hexo s:

    image-20231018065238909

    image-20231018065342340

    image-20231018065356224

    至此,以上问题已全部解决。

    因此一定要注意:hexo版本和自己主题项目之间的兼容性,否则可能会报错!

    关于我

    我的博客主旨:

    • 排版美观,语言精炼;
    • 文档即手册,步骤明细,拒绝埋坑,提供源码;
    • 本人实战文档都是亲测成功的,各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人帮您解决问题,让我们一起进步!

    🍀 微信二维码
    x2675263825 (舍得), qq:2675263825。

    image-20230107215114763

    🍀 微信公众号
    《云原生架构师实战》

    image-20230107215126971

    🍀 个人博客站点

    http://onedayxyy.cn/

    image-20231016061438175

    🍀 语雀

    https://www.yuque.com/xyy-onlyone

    image-20230912072007284

    🍀 csdn

    https://blog.csdn.net/weixin_39246554?spm=1010.2135.3001.5421

    image-20230107215149885

    🍀 知乎

    https://www.zhihu.com/people/foryouone

    image-20230107215203185

    最后

    好了,关于本次就到这里了,感谢大家阅读,最后祝大家生活快乐,每天都过的有意义哦,我们下期见!

    image-20231016062113861

  • 相关阅读:
    《web课程设计》用HTML CSS做一个简洁、漂亮的个人博客网站
    【千方百计】更改绑定的数据对象数值后,DOM重新渲染的4种方法
    STM32G4系列之DAC
    数商云供应链集成系统开发方案:多行业集成平台管理自动化
    barzilar_borwein算法微调函数的优化收敛
    关于网页实现串口或者TCP通讯的说明
    Controller统一异常处理和yaml配置
    Go入门简介
    LeetCode 0878. 第 N 个神奇数字
    Azure Devops(十四) 使用Azure的私有Nuget仓库
  • 原文地址:https://blog.csdn.net/weixin_39246554/article/details/133916463